wwdc-catalog

star 0

Fetch the WWDC session catalog from Apple's CDN by extracting the catalog URL from the Developer.app's WWDCCore binary. Use this skill whenever the user asks about WWDC sessions, WWDC videos, WWDC catalog, Apple developer conference content, or wants to browse, search, list, or look up any WWDC session or talk — even if they just say something like "what sessions are there about SwiftUI" or "find me that WWDC video about concurrency". Also use this when the user wants to download or work with WWDC session metadata.

memfrag By memfrag schedule Updated 3/7/2026

name: wwdc-catalog description: Fetch the WWDC session catalog from Apple's CDN by extracting the catalog URL embedded in one of the Developer.app's binaries. Use this skill whenever the user asks about WWDC sessions, WWDC videos, WWDC catalog, Apple developer conference content, or wants to browse, search, list, or look up any WWDC session or talk — even if they just say something like "what sessions are there about SwiftUI" or "find me that WWDC video about concurrency". Also use this when the user wants to download or work with WWDC session metadata.

WWDC Catalog

This skill fetches the full WWDC session catalog from Apple's CDN. The catalog includes all events from WWDC14 through the latest year, along with videos, labs, articles, topics, and media URLs (video downloads, HLS streams, slides).

How it works

The Apple Developer app (/Applications/Developer.app) embeds a CDN URL pointing to the session catalog inside one of its binaries. The exact binary has changed across versions of the app — historically it lived in a WWDCCore framework, while current versions ship it in the main executable (Contents/MacOS/Developer). The bundled script tries the known locations first, then falls back to recursively scanning every file under Contents/, finding the URL by searching for the https://devimages-cdn.apple.com/wwdc-services/ prefix, and appends contents.json to fetch the full catalog.

The catalog is normalized after fetching: older WWDCs (<=2019) used "Session" as the content type while newer ones use "Video" — the script rewrites all "Session" types to "Video" so you can always filter on type == "Video" regardless of year.

Prerequisites

  • macOS with /Applications/Developer.app installed (free from the Mac App Store)
  • Python 3

Fetching the catalog

Run the bundled script to fetch the catalog as JSON:

python3 <skill-dir>/scripts/wwdc_catalog.py

This prints a summary to stdout and the catalog URL to stderr. To capture the full catalog as JSON, use the script as a module:

python3 -c "
import sys; sys.path.insert(0, '<skill-dir>/scripts')
from wwdc_catalog import get_wwdc_catalog
import json
catalog = get_wwdc_catalog()
print(json.dumps(catalog, indent=2))
" > /tmp/wwdc_catalog.json

Or import the individual functions for more control:

import sys; sys.path.insert(0, '<skill-dir>/scripts')
from wwdc_catalog import read_wwdccore_binary, extract_contents_url, fetch_catalog, normalize_catalog

data = read_wwdccore_binary("/Applications/Developer.app")
url = extract_contents_url(data)
catalog = normalize_catalog(fetch_catalog(url))

Replace <skill-dir> with the actual path to this skill's directory (the parent of this SKILL.md).

Catalog structure

The catalog JSON has these top-level keys:

Key Description
events List of WWDC events (WWDC14–WWDC25, Tech Talks, etc.)
contents All content items — videos, labs, articles, etc.
rooms Rooms where events/sessions take place
topics Topics like "SwiftUI", "Machine Learning", etc.
topicCategories Groupings of topics
resources Linked resources
imageTypes Image type definitions
updated Last update timestamp
snapshotId Catalog snapshot identifier

Content items (videos, labs, etc.)

Each item in contents has:

  • id, title, description, type — always "Video" for session videos (normalized across all years)
  • eventId — which event it belongs to (e.g. "wwdc2025")
  • webPermalink — link to the session page on developer.apple.com
  • topicIds — associated topic IDs
  • platforms — e.g. ["iOS", "macOS"]
  • media.hls — HLS video stream URL
  • media.downloadHD / media.downloadSD — direct video download URLs
  • media.slides — slide deck URL
  • media.duration — duration in seconds
  • media.chapters — chapter markers with timestamps
  • keywords — search keywords
  • startTime / endTime — for scheduled content like labs

Filtering examples

To find all videos for a specific year:

wwdc25_videos = [c for c in catalog["contents"]
                 if c["eventId"] == "wwdc2025" and c["type"] == "Video"]

To search by keyword in title/description:

query = "swiftui"
matches = [c for c in catalog["contents"]
           if query in c["title"].lower() or query in c["description"].lower()]

To get video download URLs:

for video in wwdc25_videos:
    media = video.get("media")
    if media and media.get("downloadHD"):
        print(f"{video['title']}: {media['downloadHD']}")

Tips

  • The catalog is large (~3000+ items). Filter by eventId and type to narrow results before presenting to the user.
  • Topic names are in the topics list — join on topicIds from content items to get human-readable topic names.
  • Not all content items have video — articles and labs typically don't have a media field.
Install via CLI
npx skills add https://github.com/memfrag/apparata-plugins --skill wwdc-catalog
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator