Video Matching
Enrich newsletter entries with links to matching official YouTube videos from the VS Code and GitHub channels.
Quick Start
- •Read the assembled newsletter from
output/YYYY-MM_month_newsletter.md - •Fetch RSS feeds from VS Code and GitHub YouTube channels
- •Match videos to newsletter entries by topic
- •Add
[Video (Xm)](URL)links to matched entries - •Write enriched newsletter back to
output/YYYY-MM_month_newsletter.md
Inputs
- •Newsletter:
output/YYYY-MM_month_newsletter.md(required) - •YouTube RSS feeds (fetch these):
- •VS Code channel:
https://www.youtube.com/feeds/videos.xml?channel_id=UCs5Y5_7XK8HLDX0SLNwkd3w - •GitHub channel:
https://www.youtube.com/feeds/videos.xml?channel_id=UC7c3Kb6jYCRj4JOHHZTxKsQ
- •VS Code channel:
Output
- •Enriched Newsletter:
output/YYYY-MM_month_newsletter.md(overwrite in place) - •Video matching report (inline with work)
Core Workflow
Step 1: Fetch Video Feeds
Fetch both YouTube RSS feeds. Each returns the 15 most recent videos with:
- •
<title>— Video title - •
<link>— YouTube URL (format:https://www.youtube.com/watch?v=VIDEO_IDor/shorts/VIDEO_ID) - •
<published>— Publication date - •
<media:description>— Full description with chapters, links, and speaker info
Parse both feeds and build a combined video inventory.
Step 2: Filter Videos
INCLUDE videos that are:
- •Published within the newsletter's DATE_RANGE (or up to 2 weeks before/after)
- •About GitHub Copilot, VS Code, agents, MCP, security, or enterprise features
- •Full-length videos (>2 minutes) or Shorts that directly demonstrate a named feature
EXCLUDE:
- •Shorts that are generic teasers without specific feature content
- •Open Source Friday episodes about non-GitHub projects
- •Non-English content
- •General tutorials not tied to a specific feature in the newsletter
Step 3: Match Videos to Newsletter Entries
For each video, attempt to match it to a newsletter entry using these signals (in priority order):
- •Title keyword match: Video title contains a key phrase from the newsletter entry (e.g., "Subagents" matches "Parallel Subagents (
GA)") - •Description link match: Video description links to the same changelog/release-notes URL as the newsletter entry
- •Topic overlap: Video covers the same feature area (e.g., a video about "MCP Apps" matches the "MCP Ecosystem Expansion" bullet)
Confidence levels:
- •HIGH (90%+): Title directly references the feature name OR description links to the same changelog URL. Add the link.
- •MEDIUM (60-80%): Topic overlap but not a direct title/URL match. Add only if no HIGH match exists for that entry.
- •LOW (<60%): Tangential connection. Do NOT add.
Step 4: Estimate Video Duration
The RSS feed does NOT include video duration. Estimate using these heuristics:
- •Shorts (
/shorts/in URL): Label as(1m) - •VS Code Live / livestream: Label as
(60m)(typically 1-2 hours, but 60m is a safe estimate) - •Podcast episodes: Label as
(25m) - •Regular videos: Label as
(5m)unless description chapters suggest longer (sum chapter timestamps) - •If the description contains chapter timestamps (e.g., "14:56 In summary"), use the last timestamp rounded up to estimate duration
Step 5: Add Video Links
For each matched entry, append a [Video (Xm)](URL) link. Place it alongside existing links using the standard pipe separator:
Before:
- **Parallel Subagents (`GA`)** -- Description. - [Release Notes](URL) | [Docs](URL)
After:
- **Parallel Subagents (`GA`)** -- Description. - [Release Notes](URL) | [Docs](URL) | [Video (25m)](https://www.youtube.com/watch?v=GMAoTeD9siU)
For inline-linked entries (7+ links), add the video link at the end of the "See also:" line or as the last inline link.
Step 6: Validate
- • All added video links are valid YouTube URLs
- • Video durations are reasonable estimates
- • No duplicate video links (same video linked to multiple entries)
- • Only HIGH confidence matches were added
- • Links use the format
[Video (Xm)](URL)
Reference
- •Video Sources — Channel IDs, RSS feed URLs, matching heuristics
- •Content Format Spec — Link format rules
Done When
- • Both RSS feeds fetched and parsed
- • Videos matched to newsletter entries (HIGH confidence only)
- •
[Video (Xm)]links added to matched entries - • All links validated
- • Enriched newsletter written to disk