← WistiaCONTENT HISTORY

Update to Wistia

Snapshot Sep 30, 2026 · 22:53 UTC · version 3.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "wistia-webinar-event-creation",
  "description": "Create a Wistia webinar from a brief — gather the title, description, speakers, date/time, and registration goal, then create the event and save shared state for the rest of the workflow. This is STEP 1 of a three-skill webinar workflow (create → registration updates → post-event recap). Use whenever Sam wants to create, set up, schedule, or build a new webinar or live event. After the event is created it offers to set up registration reporting (step 2).",
  "included_files": [],
  "skill_md_contents": "---\nname: wistia-webinar-event-creation\ndescription: Create a Wistia webinar from a brief — gather the title, description, speakers, date/time, and registration goal, then create the event and save shared state for the rest of the workflow. This is STEP 1 of a three-skill webinar workflow (create → registration updates → post-event recap). Use whenever Sam wants to create, set up, schedule, or build a new webinar or live event. After the event is created it offers to set up registration reporting (step 2).\n---\n\n# Webinar Event Creation (Step 1 of 3)\n\nTurn a rough idea (\"we're doing a webinar on X\") into a real Wistia webinar, and capture the details the later skills depend on. Half interview, half API call.\n\nThis is the first of three sequential skills:\n1. **webinar-event-creation** ← you are here\n2. **webinar-registration-updates** — scheduled pre-event pacing reports\n3. **wistia-webinar-recap** — performance page after it airs\n\nThey coordinate through a shared **`webinar-state.json`** (see *Shared state*).\n\n## What Wistia can and can't store\n\n`create-webinar` (Wistia MCP) accepts: `title`, `description` (basic HTML), `scheduled_for` (ISO 8601 **UTC**, `...Z`), `time_zone` (IANA, e.g. `America/New_York`), `event_duration` (**minutes**, min 15), `folder_id` (optional).\n\nTwo things Sam cares about have **no native Wistia field**, so this skill owns them:\n- **Speakers** — capture into `webinar-state.json` and fold into the `description` (a \"Hosted by…\" line). Be honest that Wistia has no speaker field.\n- **Registration goal** — not a Wistia concept; store in `webinar-state.json` for steps 2–3.\n\n**Two confirmed quirks:**\n- **Timezone label is misleading.** Send `scheduled_for` as a true UTC instant; Wistia echoes it back as the *local wall-clock* time stamped `+00:00`. (Send `2026-08-21T17:00:00Z` for 1pm EDT → it returns `13:00:00+00:00`, i.e. 1pm ET.) When reading any `scheduled_for` later, interpret its clock time in the webinar's `time_zone`, not as UTC.\n- **Auto-publishes.** New webinars come back `registration_status: published` — registration opens immediately at the `audience_link`. No separate publish step.\n\n## Collect the brief\n\nCheck the conversation first; ask only for the gaps, **in one consolidated message**:\n1. Title\n2. Description / topic (offer to draft from the topic)\n3. Speakers (names + roles)\n4. Date & time + duration + time zone\n5. Registration goal\n\nFor genuinely-unknown optionals (e.g. duration), suggest a default (60 min) rather than blocking.\n\n## Steps\n\n1. **Gather** the brief (one consolidated ask for missing items).\n2. **Normalize the date** to a UTC `scheduled_for` + IANA `time_zone`. Double-check the conversion and state the local time back for confirmation — an off-by-timezone webinar is a real failure.\n3. **Compose the description**, appending the speaker line.\n4. **Create** with `create-webinar`; capture the returned `id` and `audience_link`.\n5. **Write `webinar-state.json`** (see schema below) with `stage: \"created\"`.\n6. **Confirm** back: title, local date/time, duration, speakers, goal, `audience_link`. Note registration is already open.\n\nTo edit an existing event instead of duplicating, use `update-webinar` (same fields + `id`).\n\n## Shared state\n\nAll three skills read/write **`webinar-state.json`** in the user's working folder (the connected Cowork folder). It's the baton that hands the webinar from one skill to the next:\n\n```json\n{\n  \"webinar_hashed_id\": \"32fei7lgyv\",\n  \"title\": \"...\",\n  \"scheduled_for_utc\": \"2026-08-21T17:00:00Z\",\n  \"time_zone\": \"America/New_York\",\n  \"event_duration_minutes\": 45,\n  \"speakers\": [{\"name\": \"Sam Balter\", \"role\": \"Host\"}],\n  \"goal\": 500,\n  \"audience_link\": \"https://home.wistia.com/live/events/32fei7lgyv\",\n  \"stage\": \"created\",\n  \"reporting_scheduled\": false\n}\n```\n\n`stage` advances through the workflow: `created` → `promoting` → `recapped`.\n\n## Handoff → Step 2\n\nAfter confirming the event, **offer the next step** rather than ending: ask Sam whether he wants to set up **registration reporting** now (the `webinar-registration-updates` skill). It will schedule recurring pacing updates anchored to the event date.\n\n- If **yes** → invoke `webinar-registration-updates`. It reads `webinar-state.json`, so it already knows the webinar and goal.\n- If **not now** → leave `reporting_scheduled: false`; he can start step 2 anytime.\n\nKeep the offer short, e.g.: \"Event's live and taking registrations. Want me to set up the registration tracker so you get scheduled pacing updates as it ramps toward Aug 21?\"\n"
}

SHA-256: c3d3a3c19afb0440c29385bf4f0032c7a1eadcd087346996384ef11971bda7ef