conferences icon indicating copy to clipboard operation
conferences copied to clipboard

Support for event metadata on event websites

Open invisibleroads opened this issue 4 months ago • 12 comments

Updated Example

Here is the most recent example of event metadata that I think we should recommend conference organizers to include on their conference website.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ConferenceEvent",
  "name": "EuroPython 2025",
  "url": "https://ep2025.europython.eu",
  "startDate": "2025-07-14",
  "endDate": "2025-07-20",
  "location": {
    "@type": "PostalAddress",
    "name": "The Prague Congress Centre",
    "addressCountry": "CZ"
  },
  "hasParticipationOffer": {
     "@type": "Offer",
     "name": "Call for Proposals",
     "url": "https://ep2025.europython.eu/cfp/",
     "availabilityEnds": "2025-02-03"
  },
  "hasSponsorshipOffer":  {
    "@type": "Offer",
    "name": "Sponsor Packages",
    "url": "https://ep2025.europython.eu/sponsorship/sponsor/"
   }
}
</script>

https://github.com/schemaorg/schemaorg/pull/4506/files

Original Proposal

It would be great if there were a standardized way for an event website to provide machine-readable information about itself.

  • Option 1: Use HTML meta tags on the event homepage
  • Option 2: Use a JSON file such as https://us.pycon.org/2025/event.json

Is there a way that we could encourage event organizers to use one of the two options below?

Is there any other metadata that we should ask organizers to include?

@Mariatta @jonafato @chrisjrn

Option 1: Use HTML meta tags on the event homepage

<meta name="event-name" content="PyCon US">
<meta name="event-start-date" content="2025-05-14">
<meta name="event-end-date" content="2025-05-22">
<meta name="event-location" content="Pittsburgh, Pennsylvania, United States of America">
<meta name="event-country" content="USA">
<meta name="event-venue" content="David L. Lawrence Convention Center">
<meta name="event-proposal-deadline" content="2024-12-19">
<meta name="event-proposal-uri" content="https://us.pycon.org/2025/speaking/guidelines/">
<meta name="event-sponsorship-uri" content="https://us.pycon.org/2025/sponsorship/why-sponsor/">

Option 2: Use a JSON file such as https://us.pycon.org/2025/event.json

{
  "event-name": "PyCon US",
  "event-start-date": "2025-05-14",
  "event-end-date": "2025-05-22",
  "event-location": "Pittsburgh, Pennsylvania, United States of America",
  "event-country": "USA",
  "event-venue": "David L. Lawrence Convention Center",
  "event-proposal-deadline": "2024-12-19",
  "event-proposal-uri": "https://us.pycon.org/2025/speaking/guidelines/",
  "event-sponsorship-uri": "https://us.pycon.org/2025/sponsorship/why-sponsor/",  
}

invisibleroads avatar Aug 26 '25 19:08 invisibleroads

This is more or less a duplicate of #89

webknjaz avatar Aug 26 '25 19:08 webknjaz

@webknjaz I don't think this is a duplicate of #89.

#89 is about providing and maintaining an event aggregation website listing multiple events.

#266 (this issue) is about asking individual conference websites to provide machine-readable information, in order to make it easier for aggregation scripts to collect information about each conference.

invisibleroads avatar Aug 26 '25 20:08 invisibleroads

@invisibleroads You may want to take a look at https://schema.org/Event, but I can certainly see how one might do something useful with some structured data from organisers

doismellburning avatar Aug 27 '25 00:08 doismellburning

Oh, I missed that. Makes sense. I wonder if there's prior art, like robots.txt / humans.txt / llms.txt..

webknjaz avatar Aug 27 '25 06:08 webknjaz

In my archival work, I've definitely seen one website that implemented an API, but I can't remember which one for the life of me...

JesperDramsch avatar Aug 27 '25 09:08 JesperDramsch

@webknjaz I believe conventionally you would embed the metadata in the URL for the event itself (e.g. the home page of the event site) cf. https://developers.google.com/search/docs/appearance/structured-data/event

Though there's some interesting stuff at https://schema.org/docs/feeds.html and https://github.com/schemaorg/schemaorg/issues/2891 about aiding discoverability through feeds etc.

Edit: Quick PoC for PyCon UK 2025 at https://github.com/PyconUK/2025.pyconuk.org/pull/68

doismellburning avatar Aug 27 '25 10:08 doismellburning

I believe conventionally you would embed the metadata in the URL for the event itself

I don't think this would work well for embedding a few additional URLs, though.

webknjaz avatar Aug 27 '25 15:08 webknjaz

Sorry, typo, at the URL - rather than in another file - i.e. "the URL for PyCon UK 2025" is https://2025.pyconuk.org/ so put the metadata in the content served there, rather than at some other URL as mentioned in https://github.com/python-organizers/conferences/issues/266#issuecomment-3226984675

doismellburning avatar Aug 27 '25 15:08 doismellburning

Ah, right. That might work.

webknjaz avatar Aug 27 '25 15:08 webknjaz

https://developers.google.com/search/docs/appearance/structured-data/event#example

I didn't know event metadata was already supported and being used by most search engines. @doismellburning Thanks for sharing the Google Developers link to the structured data example.

It seems like we can make a schema.org pull request in https://github.com/schemaorg/schemaorg for an event subtype, perhaps called ConferenceEvent, so that we can include information about proposal deadlines, proposal uris, sponsorship uris and anything else that would be of interest to conference participants.

I'll think some more about it and make the pull request to schemaorg this week.

invisibleroads avatar Aug 27 '25 17:08 invisibleroads

Here is a proposed mapping of CSV fields to Schema.org Event fields:

  • Subject = name https://schema.org/name
  • Start Date = startDate https://schema.org/startDate
  • End Date = endDate https://schema.org/endDate
  • Location = location https://schema.org/location
  • Country = location/address/addressCountry https://schema.org/addressCountry
  • Venue = location/name https://schema.org/name
  • Tutorial Deadline = proposal/deadline (new schema type: proposal)
  • Talk Deadline = proposal/deadline (new schema type: proposal)
  • Proposal Deadline = proposal/deadline (new schema type: proposal)
  • Website URL = url https://schema.org/url
  • Proposal URL = proposal/url (new schema type: proposal)
  • Sponsorship URL = sponsorship/url (new schema type: sponsorship)

I thought about using Event/sponsor/url for Sponsorship URL, but I think Event/sponsor is for one specific sponsor, not for general propositioning of a sponsorship prospectus.

Next Steps

  • [x] Draft schema.org type ConferenceEvent in https://schema.org/Event
  • [x] Draft schema.org property proposal
  • [x] Draft schema.org property sponsorship

invisibleroads avatar Sep 08 '25 18:09 invisibleroads

Here is the most recent example of event metadata that I think we should recommend conference organizers to include on their conference website.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ConferenceEvent",
  "name": "EuroPython 2025",
  "url": "https://ep2025.europython.eu",
  "startDate": "2025-07-14",
  "endDate": "2025-07-20",
  "location": {
    "@type": "PostalAddress",
    "name": "The Prague Congress Centre",
    "addressCountry": "CZ"
  },
  "hasParticipationOffer": {
     "@type": "Offer",
     "name": "Call for Proposals",
     "url": "https://ep2025.europython.eu/cfp/",
     "availabilityEnds": "2025-02-03"
  },
  "hasSponsorshipOffer":  {
    "@type": "Offer",
    "name": "Sponsor Packages",
    "url": "https://ep2025.europython.eu/sponsorship/sponsor/"
   }
}
</script>

https://github.com/schemaorg/schemaorg/pull/4506/files

invisibleroads avatar Sep 30 '25 15:09 invisibleroads