WP-04 · Production systems

Content OS: a bilingual video pipeline from outlier research to teleprompter

Abstract. Content OS is a review-first production system for four tutorial lanes (two software products, each in English and Spanish). It treats topic selection as a measurement problem: candidate ideas are scored from three independent public signals, channel-normalized outlier performance, query-completion demand and viewer questions mined from comment threads, under a hard API quota budget, and an idea is only called proven when two signals agree. Scripts are synthesized as an ordered interleave of camera and screen segments, generated against a pinned library of hook formulas, filtered by a deterministic honesty gate that rejects any number absent from the title or the demo steps, rewritten by a constrained humanizer pass, and annotated with language-specific readability scores. Capture is reduced to one human act: a single continuous take read from a teleprompter, which the system segments by detecting spoken slates. Publishing stays private until a human approves. I describe each stage, its invariants and its known failure modes.

Written 2026-10-23 from the project's code, design notes and research runs. Internal names, accounts and hosts are left out. Stages described as specified are not yet running.

1. Problem and constraints

A solo creator running several tutorial channels hits three bottlenecks at once: deciding what to make, writing scripts that hold attention without overclaiming, and the cost of recording. The north star, set on 2026-09-09, is a self-iterating loop in which "the one human step is me on camera"; my only other touches are permissions, payments and a yes or no on a finished video.

Four invariants constrain every design choice below:

  1. Measured data only. Every number shown is a stored observation with the date it was read. Blanks stay blank until measured.
  2. Review-first. Nothing publishes without an explicit approval, unless an auto-publish window is turned on on purpose.
  3. Honest scripts. A camera line may only state numbers, names and claims that appear in the video's title or its demo steps.
  4. Bilingual parity. English and Spanish lanes run through the same machinery, with Spanish written in neutral Latin American Spanish, not as a translation pass.

Fig. 1 · The production loop

The ten-stage production loopResearch, plan, write, demo, voice, film, assemble, publish, measure, learn. Filming is the one human step and publishing waits for human approval. Measure and learn are specified but not built.01Researchoutliers, queries02Planlane queues03Writesegments, hooks04Demoscreen recipes05Voicenarration06Filmone take07Assemblecaptions, thumbs08Publishprivate first09Measureretention10Learndated rulesmeasured results feed back into research and writing (specified, not yet built)builtthe one human stephuman approval gatespecified only
Ten stages from research to learning. Stage 6 is the only human stage; stage 8 is a human gate. Stages 9 and 10 are specified, not built, because they need published videos with enough views to carry signal.

2. Demand sensing

2.1 Channel-normalized outliers

Raw view counts confound topic demand with channel size. The idea engine therefore scores a video by its outlier multiple: its views divided by the median views of the same channel's last 25 long-form uploads, where long-form means over 60 seconds. Medians are cached per channel for seven days. Channels over 500,000 subscribers and channels owned by the software vendors are excluded, so the measure rewards topics that outperform on ordinary channels rather than brand reach.

The multiple is mapped to points with deliberately coarse bins: under 2x is noise (0), 2x to 5x is 1, 5x to 20x is 2, and over 20x scores 3 only when the channel has under 10,000 subscribers, the case where topic is most likely to explain the result. Anything over 500x is flagged as suspect, for example a possibly promoted video, and capped at 1.

2.2 Query-completion demand

Each lane carries a short list of seed terms. A keyless autocomplete request (the YouTube completion source) is issued for every seed in two locales, en-US and es-MX, and the suggestions are stored per day. Diffing today's suggestions against the last stored set exposes new phrasings as they appear. A phrase matching an idea's keywords adds up to 2 points.

2.3 Viewer questions

For the top videos per lane, up to 100 comments are read in relevance order and reduced to question sentences only, recognized by interrogative openings in both languages ("how", "can", "cómo", "se puede" and so on). Questions that match an idea add up to 2 points. Comment reads are cached for seven days.

2.4 Velocity and retention of evidence

One dated snapshot is written per night. Velocity is computed only from two snapshots at least half a day apart, never inferred from a single read. Snapshots are kept for 90 days.

2.5 Quota as a first-class constraint

The YouTube Data API exposes two budgets: since 2026-06-01, search calls draw from a separate bucket of 100 calls a day, while video, channel, playlist and comment reads cost one unit each against a daily cap of 10,000 units. Every sweep prints its planned cost before it starts and refuses to run when the plan exceeds 6,000 units. Reservations go to the same daily ledger used by the competition connector, so the two tools share one count and cannot jointly exceed the cap.

2.6 The call

Two smaller signals complete the score: sign-up intent in the title (strong words such as "free trial", "pricing" or "vs" score 2, softer words such as "tutorial" or "paso a paso" score 1) and freshness (a year or version in the winning titles scores 1). The call itself ignores these and looks only at the three measured sources: proven when two or three agree, open with one, unproven with none, and crowded when three or more winners from the past year come from channels with 100,000 or more subscribers.

Fig. 2 · Idea scoring

Idea scoring and the callThree measured evidence sources (outlier videos normalized by channel median, search suggestions, viewer questions) and title words feed an evidence join. The call is proven when two of three sources agree, open with one, unproven with none, and crowded when three or more recent winners come from channels over 100,000 subscribers.Outlier videosviews ÷ channel medianof last 25 long-form0 to 3, over 500x cappedSearch suggestionskeyless autocompleteen-US and es-MX0 to 2 pointsViewer questionsquestion sentences intop 100 comments0 to 2 pointsTitle wordssign-up intent 0 to 2, year 0 to 1Evidence joincount sources > 0sum pointsattach measured rowsProven2 or 3 sources agreeOpen1 sourceUnprovenno measured evidenceCrowded3+ recent winners, 100k+ subs
Three measured sources and the title words feed one evidence join. The call depends only on how many measured sources agree; the title words adjust rank, not the call.

The first research run on 2026-10-23 used these rules to rank ideas across the four lanes. Spanish evidence was noticeably thinner (23 relevant videos against 88 in English), so Spanish calls carry less certainty by construction; the engine reports that instead of filling the gap.

2.7 Design rationale

Three choices are deliberate. First, the bins are coarse because the inputs are noisy: a single viral video on a small channel should move an idea, not dominate it, so no single signal can contribute more than 3 of a maximum 10 points. Second, agreement is counted across sources rather than summed within one, because two independent observations of the same demand (a channel outperforming its own median and viewers asking the same question) are far stronger evidence than one very large number. Third, the engine is pure at scoring time: score computation reads only the evidence already attached to an idea and makes no network call, so a ranking can be recomputed and audited from stored files alone.

The static weight table the engine replaced assigned affiliate value by hand. It is now derived from the words of the title itself, which keeps the number explainable: the evidence panel lists the exact words that earned the points.

3. Script synthesis

3.1 Segments, not fields

An earlier format held three on-camera fields (intro, middle, closing). It was replaced by an ordered list of segments that interleaves camera and screen work: camera segments carry a role (hook, promise, lead-in, watch-out, re-hook, recap, call to action) and screen segments point at a numbered demo step with its narration line. The structure follows the pattern observed on tutorial channels in the 8 to 12 minute range: a hook and a promise on camera, then per chapter a short lead-in, the demo and a watch-out beat, one mid-video re-hook, a recap and a single call to action. For a ten minute video that is 12 to 18 camera cuts of one or two sentences. The legacy fields are derived from the segments so older consumers keep working.

3.2 Hook formula library

Hooks are generated against a pinned third-party library of 21 named formulas, each with its shape and failure modes. Only 10 are allowed into rotation; formulas that would require a named outside result, a real experiment, insider access, a dated deadline or a statistic with a source are excluded, because a tutorial cannot honestly supply them. Two formulas (comparison and stack) are admitted only when the title names two things. The last 12 picks are remembered so a channel does not repeat itself.

3.3 Generation and validation

One model call produces the segments and three hooks in the chosen formula. The output must validate or the call is repeated with the validation error attached, at most three attempts. Validation includes the honesty gate: any digit, amount, percentage or large number word in a camera line that does not appear in the title or the demo steps fails the script. It also includes deterministic AI-tic patterns in both languages, for example the "not X but Y" reveal and its Spanish forms "no solo... sino" and "no X, sino Y".

3.4 Humanizer pass

A second model call applies a condensed set of humanizer rules from a pinned open source rule set. Only camera wording may change; the edited script must validate again, otherwise the original is kept and the reason is recorded.

3.5 Ranking and readability

English hooks are ranked by a hook scorer from the same pinned library; Spanish hooks keep the model's order, because the scorer is English only. The first option becomes the line read on camera. Every camera line is then annotated with a readability score computed in a separate process: Flesch-Kincaid grade for English, warning above grade 7, and Fernández Huerta reading ease for Spanish, warning below 70. Readability warns; it never blocks, because short technical lines can score badly while reading fine aloud.

3.6 Why a gate and not a prompt

Asking a model not to invent numbers reduces invention; it does not remove it. The honesty gate is therefore code, not instruction: it extracts digits, currency, percentages and large number words from each camera line and checks each one against the title and the demo steps, which are the only facts the video can show on screen. When a hook formula would naturally want a number the demo cannot supply, the prompt tells the model to keep the formula's shape and drop the number, and the gate enforces it. The same reasoning applies to AI tics: the worst patterns are matched by regular expressions in both languages so they fail deterministically instead of depending on the second pass to notice them.

Fig. 3 · Script synthesis and capture

Script synthesis and single-take captureA hook formula is picked from ten safe formulas, segments and three hooks are generated and validated against an honesty gate and AI-tic patterns, a humanizer pass edits camera lines only, hooks are ranked, and readability is annotated. The script goes to the To be filmed list, the prompter, one take, slate detection and a split.Formula pick10 safe of 21rotation keep 12Generatesegments + 3 hooks≤ 3 attemptsValidatehonesty gateAI-tic patternsHumanizesecond pass,camera lines onlyRank hooksEN: hookscoreES: model orderReadabilityFK grade ≤ 7 ENease ≥ 70 ESfails → retry with the errorCAPTURETo be filmedordered, approvedper cardPrompterslate per video,chapter per cutOne takeme on cameraSlate finderspeech-to-textspots slatesSplitparts per video,checked by me
Top: one formula, one generation with retries, deterministic validation, a constrained humanizer pass, ranking and readability. Bottom: the approved script becomes one continuous take that the system splits by its spoken slates.

4. Capture

Recording cost is reduced by batching. A To be filmed list holds the ordered, individually approved videos. Pressing Film sends one prompter document for the whole list: each video opens with a slate chapter, "Video N of M" plus its title, followed by its camera segments, one prompter chapter per cut. I read the entire list in a single take. The take is uploaded to the production server, where speech-to-text finds the spoken slates, lines up each part and proposes cuts per video. I check the cuts on the board before they are saved. No model is called in this stage, and nothing in it uploads or posts.

5. Assembly and distribution

Assembly combines the on-camera parts, the narrated screen demo, captions, a description with the affiliate disclosure, chapters and three thumbnail options per video. Thumbnail work is grounded in a hand-coded sample of 87 thumbnails: in these niches the winning and median videos from the same channels looked alike, so topic and title carry most of the effect, and 83 to 90 percent of the niche shows the product's logo.

Uploads are private first. The upload path sends tags, paid product placement details and captions, and only runs on an explicit click. Shorts are cut from each long video at 30 to 60 seconds, vertical with face and captions; TikTok receives the same cuts as inbox drafts, one account per lane, never cross-posted, with the AI label applied in the app.

6. Verification

A shared release gate runs frontend, Python and browser suites before any deploy. On 2026-09-08 it recorded 568 frontend, 1,004 Python and 125 browser tests passing; two days later a full run passed 143 browser tests. One incident shaped the gate: a whole class of media tests failed together while each passed alone. The cause was the machine, not the app, so the rule became to reproduce with two local video files in a bare browser before touching application code.

7. Limitations and open problems

8. Claim table

ClaimSourceConfidence
Outlier multiple = views ÷ median views of the channel's last 25 long-form uploads (over 60 s)Idea engine sourcehigh
Channels over 500,000 subscribers and vendor-owned channels are excluded from mediansIdea engine sourcehigh
Over 500x is flagged suspect and capped at 1 pointIdea engine sourcehigh
search.list: separate 100-call bucket since 2026-06-01; daily cap 10,000 units; sweep refuses plans over 6,000Idea engine source; research noteshigh
Autocomplete seeds per lane, en-US and es-MX, diffed day over day; snapshots kept 90 daysIdea engine sourcehigh
Spanish evidence is thinner: 23 relevant videos versus 88 in English in the first runContent research notes, 2026-10-23medium
21 hook formulas pinned; 10 in rotation; last 12 picks rememberedScript tools sourcehigh
Three hooks per script; English ranked by hookscore, Spanish by model orderScript segments sourcehigh
Readability warns above grade 7 (EN) or below ease 70 (ES); never blocksScript tools sourcehigh
10 minute video: 12 to 18 camera cutsScript segments design notesmedium
Release gate on 2026-09-08: 568 frontend, 1,004 Python and 125 browser tests passingProject notesmedium
87 thumbnails hand-coded; 83 to 90 percent of the niche shows the tool's logoThumbnail research, 2026-10-23medium
Measure and learn stages are specified, not builtProject north starhigh

9. Sources