← All builds

Build · AI content agent + playbook, live channel

Killfeed Weekly: a Call of Duty news channel run by an AI agent

A weekly Call of Duty League news show on YouTube. An n8n agent reads the scene every morning, writes a script with a story in it, voices it, cuts and credits the clips, renders the video and drops it in Google Drive. I watch it, then upload it. Episode 1 went live October 20, 2026. The playbook that governs the agent is the real product, and it's below.

11:32episode 1, published Tuesday October 20, 2026, built end to end by the pipeline
18 sources15 YouTube feeds, Breaking Point, Dexerto and r/CoDCompetitive, swept every day at 7 AM PT
1 approvalthe only human step: I watch the episode, then upload it. Nothing posts on its own
< $100/movoice, render, model calls and a $6 helper server. Orchestration runs on the n8n plan I already pay for

What it does

Contact sheet of every slide in Killfeed Weekly episode 1
Every slide of episode 1, left to right: stat callouts, roster cards, credited podcast quotes, official footage with a source tag, a projected bracket, the comment question, the end screen. All of it rendered from the agent's shot list.

Posting schedule

What
When, and how it gets there
Weekly episode (about 10 minutes)
Every Tuesday at 10:00 AM PT (1:00 PM ET). The pipeline builds it Monday and delivers it to Drive Monday night. I upload Tuesday morning and use YouTube's schedule option. The time gets revisited after six weeks of audience data.
Shorts (30 to 45 seconds, vertical)
Up to 3 a week, posted when news breaks, not on fixed days. A story qualifies when it's new in the last 24 hours, has a person at the centre, and is confirmed or comes from a top-tier source. Two shapes: Eric-led over vertical cards, or clip-first when a pro's quote is the story. I post each one to YouTube Shorts and X (@KillfeedWeekly). The last 3 seconds point at Tuesday's episode.
Daily sweep
Every day at 7:00 AM PT. Runs silently and emails me only when a Short is ready to approve or something big breaks: an official top-4 roster, a retirement, a league announcement.
Weekly health check
Sundays at 6 PM PT the agent tests transcripts, a 1080p clip pull and the voice quota, and emails me only if something would break Monday's build.
Season calendar
The agent works out the phase from today's date and the official schedule: Rostermania (to Oct 22), Launch window (MW4 out Oct 23), Pre-season hype (to Dec 3), then the 2027 CDL season, December 4, 2026 to July 11, 2027. Each phase swaps the results segment for the right one: rumored-roster power rankings, pros' first impressions, projected Kickoff Classic brackets.

How the agent works

The weekly episode, left to right. Every box is an n8n workflow, a Data Table, or a script the workflow calls on the helper server.

Daily sweep7 AM PT · 18 sources → story inbox table
Quote minertranscripts → the exact seconds worth clipping
Monday editorreads the week · researches people · writes the script and shot list
Rule checksevery [CHECK] in the playbook runs on the shot list · fails go back once, then to me
VoiceElevenLabs · Eric · new names go to me first
Clips and graphicshelper server cuts clips · Creatomate kit draws cards
Assemble and preflightreal voice durations · build fails if a line overruns
Render480p review, then one 1080p final
Drive deliveryvideo · thumbnail · description · credits
My reviewupload · schedule Tuesday 10 AM PT

A Short takes a shorter road. The credit guard is the box that matters: it keeps enough render budget in reserve for every remaining Tuesday, so a busy news week can never cost the episode.

Story scores highnew in 24 h · a person at the centre · confirmed or tier-1
Credit guardreserves ~360 credits per remaining Tuesday
Script and voicehook on screen and in Eric's first sentence within 1.5 s
Clip or cards1080×1920 · burned-in word-by-word captions
Renderabout 20 credits
Drive and emailshort.mp4 · post text for YouTube and X
I postYouTube Shorts and X

The stack

The playbook

The agent is only as good as its rules. These live in markdown files the model loads every run, so a fix goes into the rules once and holds on every episode after. The highlights:

Rule
What it protects
Gameplay cuts 3 to 7 seconds, always with an overlay
YouTube's reused-content review. Every clip reads as evidence under commentary. Official league footage gets no exception, and broadcast audio is muted so Content ID has nothing to match.
Quotes 15 seconds max, credited on screen and in the description
Creators keep getting their reach. A permission list raises the limit to 30 seconds for people who said yes.
Narration at least 60%, our own graphics at least 25%, third-party footage under a third, never two clips back to back
The episode stays analysis, not a compilation. A code node measures all four on the shot list before anything renders.
Rumors say "rumored" once, then get treated as the working roster
Accuracy without hedging. The same rule bans claiming any team is the "only" one with a roster, and keeps unsourced personal claims off the air.
A protagonist and a turn in every segment, a clip every 25 to 30 seconds, one stat card per segment, one comment question per episode
Storytelling. Episode 1 was accurate but information-heavy; these rules came out of that review and shape every episode since.
Every slide holds a full second after the last word; no line may outrun its slide
No clipped words. The assembler reads real voice durations from the audio files and fails the build rather than ship a mid-sentence cut.
Time words are relative to the publish date
"MW4 launches this Thursday" is true on Tuesday, when viewers watch, not on Monday, when the script was written.
Four cards from the Killfeed Weekly graphics kit: headline card, roster card, standings table, projected groups
Part of the graphics kit: 14 templates the agent fills from data. The status chip (confirmed, rumored, projected) is a rule, not a design choice: every card has to carry one.

How I built it

  1. Rules before code. I wrote the editor rules and the footage policy first, from YouTube's own monetization criteria, then built the pipeline to enforce them. The script writer never sees a clip it isn't allowed to use.
  2. Prove the hard parts first. Transcripts failed with HTTP 429 from a server until the helper used cookies from a throwaway account. Auto-captions garble gamertags (Scrap became "Scump"), so the quote miner cross-checks every name against a roster glossary before a quote can be used.
  3. Timing is a check, not a hope. An early mock cut Eric off mid-sentence. The fix was structural: voice durations come from the audio files, every slide holds a second past the last word, and the build fails if a line overruns. A clipped word is a blocking defect.
  4. A pronunciation gate. Auto-guesses got player names wrong (Huke as "Hook"). Every new name is voiced as a standalone sound bite and waits for my approval in an approved-names file. Once approved, it never gets asked again.
  5. Credits as a budget. A ledger table tracks every render. The Short builder checks it first and skips a Short rather than spend what Tuesday needs. Review renders run at 480p; only the approved cut renders at 1080p.
  6. Production reality. A full set of clips expired mid-review and the render failed, so helper files now live seven days instead of three, and a preflight script checks every linked file is live before a credit is spent.
  7. Episode 1, then the story rules. The first episode shipped on time and was accurate, and my own review said "information heavy." That review became story-rules: protagonist and turn, clip cadence, one planted callback. Episode 2 runs on them.

What the build taught me: a content pipeline is the same product as a client agent. Approval gates where a mistake would be public, rules the model loads every run instead of instructions buried in a prompt, and a budget the system respects on its own. I built it for a hobby I care about, and the pattern is exactly what I sell.

Why this matters for selling AI

Where it goes next