ab
Alice Bazdikian
AI Strategist + Educator
Content operations

One video in, every channel out.

The tool stack
Claude Code

Runs both skills, writes the captions and the Remotion build.

Apify API

Scrapes competitor content across TikTok, Instagram and LinkedIn.

Riverside

Records the video and produces the first edit plus transcript.

Obsidian

The content idea bank. Scripts, drafts and saved posts live here.

Remotion

Renders the YouTube videos and reels from the overlay config.

Hyperframes

Renders the slides and reels straight from HTML.

01Friday, automatic

Content Hub runs and emails the weekly digest

  • A launchd agent fires content_hub/run.sh every Friday at 8:00am. Nothing to remember, nothing to start.
  • Competitor content is pulled across YouTube, TikTok, Instagram and LinkedIn, so the digest shows what is working for other people in the niche.
  • Your own analytics come in alongside it: channel performance, your outlier videos, and LinkedIn 30-day trend. The Hub is a tracking dashboard, not just a scraper.
  • A trend watchlist flags velocity outliers, the "breaking out right now" videos from the creators being followed.
  • Free data sources only. The Apify scrape stays behind the manual Refresh button so the weekly run never spends credits.
  • Builds one HTML + plain-text digest and emails it. Each block degrades gracefully, so one dead API does not kill the run.

The dashboard lives at localhost:4000. Start it with ./content_hub/start.sh, never uvicorn from inside the folder.

02Choose the input

Either the Obsidian inbox or a Hub selection

  • Obsidian Content Inbox. Saved posts, dated pages, and half-formed ideas already captured during the week. A watcher auto-drafts the queue on save.
  • Content Hub selection. Pick a topic off the Friday digest, driven by what is actually trending or what your own analytics say is working.

Obsidian is the home for content deliverables. Scripts, transcripts, and drafts live in the vault, not in the git repo.

03Write it first

Transcript and opening hook, drafted in Obsidian

  • The full script gets written before the camera turns on. Recording from an outline produces a transcript nothing downstream can use cleanly.
  • The opening hook is locked here. Click is won by the title and thumbnail. The first 30 seconds decide whether anyone stays.
  • Keyword-rich from the start, since the same words become the YouTube title, description, and search surface later.
04Capture

Record in Riverside, first edit in-platform, download both artifacts

  • Record the video in Riverside against the locked script.
  • Do the first pass edit inside Riverside. Cut dead air, restarts, and anything that will not survive the final cut.
  • Download the video into the Remotion footage folder, public/footage/.
  • Download the transcript. Both downstream skills read it, so this is the single most important artifact of the stage.

Cut from a clean source. Overlays applied to already-treated footage stack duplicate text and read as sloppy.

05Two skills, one transcript

Run /captions and /overlays, then pair the outputs

  • Both skills read the same transcript. Neither needs a separate input.
  • /overlays produces the rendered MP4. /captions produces the caption for each channel.
  • They ship together. Every channel gets the video plus the caption written for that channel, not one generic post copied five times.
  • Five destinations: YouTube, LinkedIn, Instagram, TikTok, Facebook.
  • Both stop for approval before anything is treated as final.
Step 5a

/captions turns one transcript into every channel.

A strict three-step flow with a hard approval gate on the hook. Nothing gets written until the hook and the CTA are both locked.

The flow

content/skills/content-captions/SKILL.md
  1. Hooks first, then stop. 8 to 10 options, each labeled by archetype: Contrarian, Listicle, Provocative, Curiosity, Pain, Result, Proof. Contrarian and Listicle lead, since those are the favorites. Every hook front-loads the searchable term.
  2. Ask for the primary CTA. Never assumed. It changes per video: free Office Hours, a specific lead magnet, or the Skool community. Locked together with the hook before anything else runs.
  3. Captions and hashtags, in priority order. YouTube first, since that is always the first upload.
  4. Thumbnail prompt last, built against the locked style notes.

What the YouTube package must contain

  1. 3 title options, each run through the Title Rubric: keyword in the first 40 characters, googleable, contains a number or outcome, second half pays off the first, passes the half-second phone test.
  2. Description in fixed order: hook line with the primary keyword in the first 25 words, value summary, chapters block, CTA and links, exactly 3 hashtags.
  3. Chapters on every video over 3 minutes, no exceptions. First chapter at 0:00, minimum 3, each at least 10 seconds, keyword-rich labels. This was the single biggest SEO gap in the July 2026 audit.
  4. A first-30-seconds retention fix. A required output block, not a reminder. Retention is the channel ceiling.
  5. Every Short gets a comment-to-action CTA with a short all-caps keyword to reply with. Comments are a ranking signal and this is the proven breakout format.

Non-negotiable voice rules

  1. No em-dashes anywhere. Periods, commas, or "to".
  2. No emojis, no lowercase-start captions. Normal-case full sentences in short paragraphs, on every channel including TikTok and Instagram.
  3. No fabricated stats, testimonials, or client numbers. Only what is in the transcript or confirmed directly.
  4. Short-form captions carry a maximum of 5 hashtags. YouTube descriptions never exceed 15, and target exactly 3.
  5. The locked ABOUT and STAY CONNECTED footer is appended verbatim to every YouTube description.
Step 5b

/overlays plans the edit. Two engines render it.

/overlays is the editorial brain. It decides which line becomes a callout, what type, and where the camera pushes in.

The render happens in one of two engines depending on the format.

The flow

content/skills/video-overlays/SKILL.md
  1. Map the spine. Core promise, the 3 to 6 beats, the single biggest payoff.
  2. Mark the callout moments. Walk the transcript and ask at each line: chapter shift, hard number, named tool, warning, or punchy claim.
  3. Add zooms. Every callout beat gets a push-in as it appears and a pull-out as it leaves, roughly 1.10 to 1.12 over 0.7 seconds. The callout and the camera always move together.
  4. Write overlay-plan.md and stop. A table with timestamp, type, on-screen text, and a one-line reason. Approval required before the config is final.
  5. Write overlays.config.ts, wire it into the composition, render, then verify by pulling stills at each callout timestamp.
Format A

Short form

1080 x 1920 · 9:16 · vertical
  • Full-screen inserts with one keyword callout, not another center band
  • Cuts every 2 to 3 seconds. Retention is won by never letting the frame sit still
  • Keyword pops on the emphasis beats
  • Badge only at the close. An end screen eats too much of a 35-second runtime
  • No slide moments. Shrinking the face to a corner card costs more than it gains
Format B

Long form

1920 x 1080 · 16:9 · YouTube
  • One callout every 12 to 18 seconds as the punchy default
  • Progressive builds. List items reveal one at a time, never all at once
  • 2 or 3 Skool badge beats by default, placed at verbal community mentions
  • SkoolEndScreen over the final 20 seconds, standard on every YouTube edit
  • Slide moments available for screen-share decks, but only when asked
chapter

Topic shift. Opens a section and sets the promise.

red-alert

The pain number or the cost. Makes stakes real.

green

The fix, the win, the right way. Semantic opposite of red.

logo

Brand beat. Names the tool being discussed.

BurgundyBand

The default text overlay for everything else.

Flag callouts take the color they name. A green flag is green, a red flag is red. Never burgundy. Applied automatically by detectFlag().

Engine 1

Remotion

React video · overlays.config.ts
  • The engine for YouTube videos and reels, the talking-head overlay edits
  • Consumes the overlays.config.ts that /overlays writes
  • Reusable component library: ZoomVideo, callout boxes, badges, end screens
  • Render, then verify by pulling a still at each callout timestamp
Engine 2

Hyperframes

HTML to video · built for agents
  • The engine for slides and reels, the HTML-native content
  • Write HTML, render video. No React composition required
  • Best when the frame is a designed layout rather than a treated talking head
  • A separate render path from Remotion, chosen by the format, not the topic
Honest assessment

What is working, and what still is not.

Working

Keep doing this
  • The Friday trigger is genuinely automatic. Self-healing launchd agent, no manual step, no forgotten week.
  • One transcript feeds both skills. The expensive artifact gets produced once and used twice.
  • Approval gates in both skills. The hook gate and the plan gate both catch bad direction before the expensive work happens.
  • Voice rules are enforced in the skill, not remembered. No em-dashes, no emojis, no fabricated stats, capped hashtags.
  • The component library is reusable. New videos wire up existing components instead of rebuilding.
  • Verify-by-still is standard, which catches framing and collision problems before a full render.

Needs work

Known friction
  • Scheduling and distribution is fully manual. The pipeline produces assets and then stops. See the open item below.
  • Transcripts need timestamps. Riverside transcripts often lack word-level timing, so Whisper has to be run separately before overlays can be placed accurately.
  • Pre-treated footage breaks the overlay step. Burned-in captions and title bands cause duplicate stacked text. The fix is recording clean, which is not yet habit.
  • No feedback loop back into the Hub. What actually performed does not automatically inform next week's topic selection.
  • Thumbnail production is still a prompt, not a rendered asset. It leaves the pipeline and gets finished elsewhere.
  • Long-form and short-form are edited separately from the same source, rather than one render producing both cuts.
  • The market research is underused. The Hub surfaces competitor and trend data every Friday, and only a fraction of it becomes video. The bottleneck is recording cadence, not input.
  • Hooks need more work. The single highest-leverage line in every video is still the weakest part of the output.
  • The AI writing still reads generic. Captions come out serviceable but not distinctive. Voice needs to be sharper before a draft is postable as-is.
Next up

Four things to fix, in priority order.

01

Record more, from research already collected

The Friday digest surfaces more usable topics than get made. This is the cheapest win on the list because the input already exists and is already paid for. The fix is cadence, not tooling.

02

Sharpen the hooks

The hook is the retention ceiling for the whole video and currently the weakest output of the captions skill. Worth tightening the hook archetypes and the rubric they are scored against.

03

Make the writing less generic

Captions come out correct but flat. The voice rules currently say what to avoid, not what makes a line sound like Alice. Feeding real high-performing posts back in as voice samples is the likely fix.

04

Automate scheduling

The last manual step. Blotato setup is below.

Next to build

Scheduling: set up Blotato

The pipeline currently ends at rendered assets. Everything after that, posting to each channel at the right time, is manual. Blotato closes it, because it integrates with Claude Code, which makes scheduling the last automated stage rather than a separate tool.