Extracts and formats upcoming events and webinars from provided URLs. Use when running Phase 2 of the newsletter pipeline after the Phase 1C discoveries receipt exists. Fetches event pages, classifies into canonical categories, formats virtual and in-person event tables. Keywords: events extraction, phase 2, webinars, conferences, event formatting.
Extracts and formats upcoming events and webinars from provided URLs. Use when running Phase 2 of the newsletter pipeline after the Phase 1C discoveries receipt exists. Fetches event pages, classifies into canonical categories, formats virtual and in-person event tables. Keywords: events extraction, phase 2, webinars, conferences, event formatting.
metadata
{"category":"domain","phase":"2"}
Events Extraction
Extract, classify, and format upcoming events and webinars for the newsletter.
Quick Start
Receive list of event URLs (5-15 typical)
Run python3 tools/extract_event_sources.py <START_DATE> <END_DATE>
Record the phase2_event_sources receipt for the generated JSON
Fetch each URL and extract event details
Classify: Virtual, In-person, or Hybrid
Assign canonical categories (max 2, prefer 1)
Format into tables and bullet lists
Write output to workspace/newsletter_phase2_events_YYYY-MM-DD.md
Sequencing: This phase starts only after Phase 1C discoveries have been written and receipted.
Fetch the page and event deep links (github.com/resources/events/<slug>), extract all upcoming events
These are primarily in-person events (AI Tour, GitHub Connect, conferences) and KUWC virtual series
Microsoft Reactor (series pages + event deep links):
Prefer series pages and deep links from the JSON artifact
Follow series links (for example S-1625 Agentic DevOps Live) to gather session pages
Avoid Reactor search URLs as row-level event links
Microsoft AI Tour (aitour.microsoft.com):
Check for cities where GitHub has a confirmed booth/presence
Cross-reference with github.com/resources/events (AI Tour events appear on both)
Curator notes: Check for manually added event URLs or KUWC series entries
Step 1.5: Reactor Event Filtering (L69)
The Reactor catalog contains many events. Apply these filters:
INCLUDE (all must be true):
Event is in English
Event involves GitHub, Copilot, GHAS, VS Code, or Azure DevOps with GitHub integration
Event is relevant to enterprise engineering leaders (not consumer/hobbyist)
Event provides actionable training, product updates, or security guidance
INCLUDE event types:
Agentic DevOps Live series (GitHub + Azure integration, modernization, security)
VS Code Live release events (product updates)
AI Dev Days with GitHub/Azure tracks (hackathons with enterprise prizes)
Security sessions using GHAS + Defender for Cloud
App modernization with Copilot agents (Java, .NET)
GitHub + Azure DevOps workflow sessions
EXCLUDE:
Non-English language events (Spanish, Portuguese, etc.)
Competition/gaming formats ("Agents League Battle", esports-inspired)
Generic AI framework tutorials without GitHub integration (LangChain4j, generic Python AI)
Beginner-level series on non-GitHub tools
Events with no GitHub speaker or GitHub product involvement
Key signal: Check the event tags. Events tagged with Github, GitHub Copilot, Agentic DevOps, or VS Code are strong candidates. Events tagged only with AI or generic topics without GitHub involvement should be excluded.
Step 2: Extraction
Extract required fields per event:
Event title (exact from source)
Date (normalize to date only for virtual; include CT times only for conference sessions)
Format: Virtual, In-person, or Hybrid
Registration URL (direct sign-up link)
Optional but recommended:
Location (City, ST, Country for in-person)
Description (1-2 sentences, enterprise value focused)
Skill level: Include only "Introductory" or "Advanced" when explicitly stated. Omit otherwise.
Step 4: Formatting
Virtual events: ## Virtual Events heading, table with Date + Event + Categories (NO times)
In-person events: ## In-Person Events heading, table with Date + Location + Event
Behind the scenes: ## Behind the scenes heading, short bullets for operational notes/recordings
Hybrid events: List under In-person with "(Hybrid, virtual attendance available)"
Conference sessions: Detailed tables with Date + Time (CT) + Session + Description
Step 5: Standard Content
Always include these blocks in the output:
Copilot Fridays back catalog link
Brian's YouTube playlists (3 playlists)
Step 6: Validation
Before writing output:
Title, date, and registration URL present for all events
Conference session times converted to CT
All links embedded as markdown (no raw URLs)
Hybrid listed under In-person with virtual note
Categories use canonical taxonomy: Copilot, Copilot, Advanced, Copilot, New Features, GHAS, GHAS, Security, Enterprise, GitHub Platform. Never use Developer Productivity or Platform alone.
Enterprise relevance satisfied
Source diversity present: include event links from both GitHub Resources and Microsoft Reactor when available in range
At least one Reactor-linked event appears in Virtual Events for >=30-day ranges when Reactor has in-range GitHub events
Event count floor by range length:
=60-day range: 12+ total events
=30-day range: 8+ total events
<30-day range: 4+ total events
Event row URLs are deep links, not landing/search placeholders