📡 Open Event Protocol

Submit a show once.
Syndicate everywhere.

The Feed is a headless, open-source event protocol that connects performers, promoters, and venues — no platform, no lock-in, no forms.

No forms.
No login.
Just paste.

Paste a URL, a poster description, a venue email, or a social media post. The Feed's AI extraction engine — "The Eventizer" — pulls out the performer, date, venue, and ticket info automatically.

Every submission gets a deterministic SHA-256 ID so the same show is never counted twice, no matter how many people submit it.

1

Paste a URL or describe the show

Link to Bandsintown, Eventbrite, Facebook, or just type "The Trews at the Commodore, Friday 8pm, $35."

2

AI extracts the structured event

The Eventizer runs brand-safety checks, resolves relative dates, normalizes performer and venue names to schema.org/Event.

3

Committed to the open ledger

Verified sources commit directly. Public submissions go to editorial review via a GitHub Pull Request — the whole history is public and auditable.

4

Consumed anywhere, in any format

Publishers and sites pull the live feed as JSON-LD, RSS, .ics, or embed the <the-feed-event> web component directly.

Live event in the ledger
{
  "@context": "https://schema.org",
  "@type":    "Event",
  "@id":     "evt_3f7a2b...",
  "name":    "The Trews — Live",
  "startDate": "2026-04-17T20:00:00",
  "location": {
    "@type": "Place",
    "name":  "The Fillmore"
  },
  "performer": [{ "name": "The Trews" }],
  "offers": [{
    "price": 35,
    "priceCurrency": "USD"
  }],
  "_feed": {
    "trustScore": 95,
    "source": "verified_venue",
    "brandSafe": true
  }
}

Bring your own OpenAI API key (sk-…). Your key is only used to call OpenAI directly — it is never stored on our servers. Check the box to save it in your browser for next time.

Try The Feed
right now.

Paste a URL to any event listing — Bandsintown, Eventbrite, a venue website, a Facebook event — and watch it get extracted into a structured schema.org event in seconds.

Or just describe a show in plain English. "Soccer Mommy at The Fillmore, Saturday April 18, doors 8pm, $30 advance."

Public submissions go to editorial review. Provision a source token via the admin API for direct commits.

Default

Clean & neutral — works anywhere.

Broadcast

Dark, monospace, broadcast energy.

Poster

Bold, high-contrast, music venue.

Put The Feed on
your site in two lines.

📣

Promoters & Labels

Provision a source token via the admin API and your submissions commit directly — no review queue, full trust score. Register your OpenAI key server-side so it's never exposed to end users.

🎪

Venues

Embed the submission widget on your site. Anyone can submit shows directly from your event page — submissions route through your token and your brand.

🎤

Performers & Managers

Submit your own shows directly. A verified token ties your submissions to your name — no middleman, no waiting for a venue to post it for you.

📅

Calendar Publishers

Embed <the-feed-calendar> on any page for a fully skinnable event listing. Users toggle between mosaic, list, week, and month views — no backend required.

🔧

WordPress

The Feed ships with a native WordPress plugin — shortcode builder, NLP quick-parse metabox, and automatic syndication on publish.

🧱

No-code builders

Weebly, Squarespace, Wix, Showit and similar builders block custom scripts but allow <iframe> embeds. Use the hosted embed URL — no JavaScript permissions needed.

<!-- 1. Load the component -->
<script type="module"
  src="https://cdn.jsdelivr.net/gh/Stephanada/the-feed/ui/the-feed-ingest.js"
></script>

<!-- 2. Drop the element -->
<the-feed-ingest
  skin="broadcast"
></the-feed-ingest>

<!-- Users enter their own OpenAI key in the widget. -->
<!-- Embeddable calendar — users toggle mosaic/list/week/month -->
<script type="module"
  src="https://cdn.jsdelivr.net/gh/Stephanada/the-feed/ui/the-feed-calendar.js"
></script>

<!-- Show all public events, all 4 views available -->
<the-feed-calendar
  skin="default"
  view="mosaic"
></the-feed-calendar>

<!-- Scope to a token (show only your events) -->
<the-feed-calendar
  token="your-source-token"
  skin="broadcast"
  view="list"
  views="list,week,month"
></the-feed-calendar>

<!-- Filter by venue, show only week + month toggle -->
<the-feed-calendar
  venue="The Fillmore"
  skin="poster"
  mode="dark"
  view="month"
  views="week,month"
></the-feed-calendar>
<!-- ─────────────────────────────────────────────────────────────
  No-code / iframe embed — works on Weebly, Squarespace, Wix,
  Showit, or any builder that accepts HTML/iframe blocks but
  blocks <script type="module">.

  The hosted embed.html page loads the component for you.
  Paste this into an "HTML block" or "Embed code" widget.
────────────────────────────────────────────────────────────── -->

<!-- Submit widget (ingest) -->
<iframe
  src="https://thefeed.site/embed.html?mode=ingest&skin=broadcast"
  width="100%"
  height="420"
  style="border:none;border-radius:12px;"
  loading="lazy"
  title="Submit an event"
></iframe>

<!-- Event calendar (mosaic default, all 4 views) -->
<iframe
  src="https://thefeed.site/embed.html?mode=calendar&skin=default&view=mosaic"
  width="100%"
  height="600"
  style="border:none;border-radius:12px;"
  loading="lazy"
  title="Event calendar"
></iframe>

<!-- Token-scoped calendar — only your events, dark skin -->
<iframe
  src="https://thefeed.site/embed.html?mode=calendar&token=your-token&skin=poster&view=list&colormode=dark"
  width="100%"
  height="600"
  style="border:none;border-radius:12px;"
  loading="lazy"
  title="My events"
></iframe>

<!-- URL params reference:
  mode       = ingest | calendar          (default: ingest)
  skin       = default | broadcast | poster | https://...  (default: default)
  token      = your-source-token          (optional)
  group      = group-slug                 (optional)
  venue      = "Venue Name"               (calendar only)
  performer  = "Artist Name"              (calendar only)
  genre      = rock | jazz | …            (optional)
  view       = mosaic | list | week | month  (calendar, default: mosaic)
  views      = comma list, e.g. list,week,month  (limits toggle buttons)
  colormode  = light | dark | auto        (default: auto)
  limit      = 50                         (default: 50)
-->
<!-- Verified source: your token grants direct-commit trust.
     Users don't see a key field — you register your OpenAI key
     server-side when you provision the token. -->

<the-feed-ingest
  token="your-source-token"
  skin="broadcast"
></the-feed-ingest>

<!-- Provision your token + key once:
curl -X POST https://the-feed-ingest.stephan-99b.workers.dev/admin/tokens \
  -H "Authorization: Bearer ADMIN_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "token":           "your-source-token",
    "name":            "Blue Note",
    "sourceAuthority": "verified_venue",
    "openaiKey":       "sk-..."
  }' -->
<!-- All pages in your org share one token + one key.
     Every page embeds the same token — no key visible to users,
     no per-page configuration needed. -->

<!-- Page 1: venue homepage -->
<the-feed-ingest token="org-token"></the-feed-ingest>

<!-- Page 2: events submission form -->
<the-feed-ingest token="org-token" skin="broadcast"></the-feed-ingest>

<!-- Page 3: partner venue -->
<the-feed-ingest token="org-token" skin="poster"></the-feed-ingest>

<!-- All three share your org's key stored in KV.
     Revoke the token any time from the admin API. -->
// Fetch the live event feed (JSON-LD array)
const res    = await fetch('https://the-feed-api.stephan-99b.workers.dev/api/events');
const events = await res.json();

// Filter by city (optional)
const local  = events.filter(e =>
  e.location?.name === 'The Fillmore'
);

<!-- Or use the event display component -->
<script type="module"
  src="https://cdn.jsdelivr.net/gh/Stephanada/the-feed/ui/the-feed-event.js"
></script>

<the-feed-event
  event-id="evt_3f7a2b..."
  api="https://the-feed-api.stephan-99b.workers.dev"
></the-feed-event>

<!-- RSS / iCal -->
GET /api/feed.rss
GET /api/feed.ics
GET /api/feed.json?venue=The+Fillmore&limit=20

Built on open standards.
Owned by no one.

The Feed is not a platform. It's a protocol. The ledger is a public GitHub repository. The data format is schema.org/Event — the same standard Google, Ticketmaster, and every major events platform uses. No proprietary lock-in.

GitOps Ledger Open

Events live as flat JSON files in a public GitHub repo. History is the audit log. Pull Requests are the moderation queue. Anyone can fork.

schema.org/Event Standard

Every event is valid schema.org JSON-LD. Ingest it into any system that speaks structured data — no adapters, no translation layer.

BYOK NLP Privacy

The platform never stores your OpenAI key. You bring your own — it flows directly from your browser to OpenAI and never touches our servers.

Cloudflare Edge Fast

All reads served at sub-50ms from 300+ edge locations. No origin server for reads. The ledger on GitHub is the canonical source.

Web Components Portable

Shadow DOM. Zero dependencies. Works in WordPress, React, plain HTML — one <script> tag, any CMS.

SHA-256 Idempotency Reliable

The same show submitted twice — even from different sources with different wording — gets the same deterministic ID. No duplicates.

Self-serve. No gatekeepers.

Provision your own source token via the admin API, embed the widget, and start submitting — no account, no approval, no waiting.