Skip to content

Instantly share code, notes, and snippets.

@acka47
Last active March 5, 2024 09:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acka47/2ec555b83eab4b5576ae2d06f88a6748 to your computer and use it in GitHub Desktop.
Save acka47/2ec555b83eab4b5576ae2d06f88a6748 to your computer and use it in GitHub Desktop.
Beispiel-hbz-Stellenausschreibung strukturiert mit schema.org, orientiert an https://blog.lobid.org/2022/07/26/job-informationsspezialistin.html
{
"@context": "https://schema.org",
"type": "JobPosting",
"datePosted": "2023-05-31",
"title": "Informationsspezialist*in (m/w/d)",
"description": "bis Entgeltgruppe 11 TV-L, bis 100%, zunächst auf zwei Jahre befristet",
"educationRequirements": "Abgeschlossenes Studium im Bereich der Bibliotheks- und Informationswissenschaften, der Bibliotheksinformatik oder des Bibliotheksmanagements oder gleichwertige Kenntnisse und Erfahrungen",
"employmentType": "Full-Time, Part-Time",
"experienceRequirements": "Kenntnisse im Bereich Web-Standards, bibliothekarischer Datenmodelle und -schnittstellen sowie Datentransformation; Praktische Erfahrung und Identifikation mit offenen Ansätzen (Open Source, Open Data, Open Web, Open Access, Open Educational Resources); ",
"industry": "Bibliothekswesen",
"hiringOrganization": "Hochschulbibliothekszentrum des Landes Nordrhein-Westfalen (hbz)",
"employerOverview": "Das Hochschulbibliothekszentrum des Landes Nordrhein-Westfalen (hbz) gehört zum Geschäftsbereich des Ministeriums für Kultur und Wissenschaft NRW und hat seinen Sitz im Herzen von Köln. Unsere Mission ist die nachhaltige Informationsversorgung von Wissenschaft, Kultur und Hochschulen. Wir engagieren uns u. a. in den Bereichen Open Access, Open Source und Open Data sowie Digitale Langzeitverfügbarkeit.",
"jobLocation": {
"type": "Place",
"address": {
"type": "PostalAddress",
"streetAddress": "Jülicher Str. 6",
"addressLocality": "Köln",
"postalCode": "50737",
"addressRegion": "Nordrhein-Westfalen",
"addressCountry": "Deutschland"
}
},
"jobLocationType": "Möglichkeit zur Remote- und Teilzeitarbeit",
"applicantLocationRequirements": {
"type": "Country",
"id": "http://www.wikidata.org/entity/Q183",
"name": "Deutschland"
},
"responsibilities": "Mitarbeit bei Aufbau und Pflege eines Suchindex für Forschende zunächst mit Fokus NRW; Kommunikation mit potentiellen Datenlieferanten; Aufsetzen von ETL-Prozessen; eigenverantwortliche Klassifikation, Auswahl, Anwendung und Anpassung existierender Serviceangebote der hbz-Gruppe; Metadateninfrastruktur für den Bereich Forschungsdatenmanagement; ",
"salaryCurrency": "EUR",
"skills": "Bereitschaft und Fähigkeit, sich in technische Standards einzuarbeiten; Sehr gute analytische und kommunikative Fähigkeiten sowie eine selbstständige Arbeitsweise; Gute Englischkenntnisse",
"workHours": "Flexible Arbeitszeiten ohne Kernarbeitszeit",
"applicationContact": {
"contactType": "Person",
"email": "pohl@hbz-nrw.de",
"telephone": "+49-221-40075-235"
},
"validThrough": "2023-06-18",
"totalJobOpenings": 1,
"jobStartDate": "zum nächstmöglichen Zeitpunkt"
}
@k-suess
Copy link

k-suess commented Feb 29, 2024

"employmentType"

Hier erwartet Google vorgegebene Werte wie auch bei schema.org in der Beschreibung steht. Es ist durchaus möglich mehrere Werte anzugeben.
full-time, part-time, contract, temporary, seasonal, internship

jobLocationType

Dieser Wert darf laut Google nur genutzt werden, wenn die Stelle zu 100% ausschliesslich im HomeOffice ausgeübt werden soll. Weiterhin muss der Wert dann "TELECOMMUTE" lauten.
Nähere Informationen dazu siehe: https://developers.google.com/search/docs/appearance/structured-data/job-posting?hl=de#incomplete:~:text=%221234567%22%0A%7D-,jobLocationType,-Text

"baseSalary"

Ich denke die Angabe des Tarifes wird Google nicht verwerten können, da etwas anderes erwartet wird.
https://developers.google.com/search/docs/appearance/structured-data/job-posting?hl=de#incomplete:~:text=%3A%20%22TELECOMMUTE%22-,baseSalary,-MonetaryAmount

@acka47
Copy link
Author

acka47 commented Mar 1, 2024

Prinzipiell wirft der schema.org-Validator keinerlei Fehler aus: https://validator.schema.org/#url=https%3A%2F%2Fgist.githubusercontent.com%2Facka47%2F2ec555b83eab4b5576ae2d06f88a6748%2Fraw%2Fa21336a8d65112340394427697f64b9c32c0bdbb%2Fhbz-job-posting.json

Allerdings testet er nur gegen schema.org, das ja auch von Bing, Yandex etc. verwendet wird. Google scheint da strenger zu sein, siehe das Rich Snippet Testing Tool. Zu den einzelnen Punkten unten mehr.

"employmentType"

Hier erwartet Google vorgegebene Werte wie auch bei schema.org in der Beschreibung steht. Es ist durchaus möglich mehrere Werte anzugeben.
full-time, part-time, contract, temporary, seasonal, internship

Das sind ja bei schema.org nur Empfehlungen, es ist prinzipiell ein wenig striktres Metadatenschema. (Wir haben für Bildungsressourcen deshalb ein strengeres Metadatenprofil entwickelt.) Aber selbst der Google-Rich-Snippet-Tester meckert nicht bei dieser Property: https://search.google.com/test/rich-results/result/r%2Fjobs?id=ocFWERwoNLxkFMUuTPeBmw

jobLocationType

Dieser Wert darf laut Google nur genutzt werden, wenn die Stelle zu 100% ausschliesslich im HomeOffice ausgeübt werden soll. Weiterhin muss der Wert dann "TELECOMMUTE" lauten.
Nähere Informationen dazu siehe: https://developers.google.com/search/docs/appearance/structured-data/job-posting?hl=de#incomplete:~:text=%221234567%22%0A%7D-,jobLocationType,-Text

Die Beschreibung unter https://schema.org/jobLocationType lese ich anders:

A description of the job location (e.g. TELECOMMUTE for telecommute jobs).

Das ist wieder nur ein Beispiel. Laut dieser Auswertung des Common Crawl Indexes von 2020 wird es eh kaum benutzt, dann aber tatsächlich meist mit dem Wert "TELECOMMUTE". Wie auch immer.

"baseSalary"

Ich denke die Angabe des Tarifes wird Google nicht verwerten können, da etwas anderes erwartet wird.
https://developers.google.com/search/docs/appearance/structured-data/job-posting?hl=de#incomplete:~:text=%3A%20%22TELECOMMUTE%22-,baseSalary,-MonetaryAmount

Hier sollten wir tatsächlich nochmal schauen, weil "Text" nicht als möglicher Wert genannt wird. (Seltsam, dass der Validator da nicht meckert.) Ich tendiere dazu, die Property ganz wegzulassen (wir wollen das ja nicht umrechnen) und stattdessen die Angabe der Tarifstufe in die description zu packen, die ja auch gerade leer ist. (Hab das direkt mal umgesetzt.)

Prinzipiell denke ich, wir sollten zuerst ein sinnvolles Datenmodell für die hbz-Stellenausschreibungen erstellen und das dann in schema.org überführen und dabei auf den schema.org-Validator achtgeben aber uns nicht streng am Google-Testing-Tool orientieren. Am Ende bleibt Google eine Black Box und wir wissen überhaupt nicht, was letztlich genutzt wird.

@acka47
Copy link
Author

acka47 commented Mar 1, 2024

Ich habe auch noch ein paar weitere Anpassungen gemacht, um das näher an der Vorlage zu orientieren.

Mit Blick auf die Tests finde ich den aktuellen Stand ok. Aber wie gesagt, sollten wir unsere Bedürfnisse an das Datenmodell gegenüber Googles priorisieren.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment