Research, script, visuals, voice, edit, Shorts and scheduled publishing, every day, per channel, unattended. You own the source.
It already runs headless: a timer starts the engine you chose and the run publishes overnight. Any agent that can run a shell command drives the same CLI.
Bring your own agent
A timer starts the run at the hour you pick and it finishes on its own: launchd on macOS, a systemd --user timer or cron on Linux. Which agent it starts is one line in .env. That is how the three live channels publish every morning, and the same commands work from any terminal.
The yca CLI runs through tsx. Every step reads and writes a typed artifact validated with zod, so an agent asks the CLI what the next step is instead of guessing, and a run that died at voiceover resumes at voiceover. Nothing sits behind a GUI or a runtime only one vendor can start.
yca next --json returns the next actions as typed objects: cli to run a command, role to do a job in a fresh context, done, or blocked with a reason. Your agent loops on it. yca describe prints the JSON Schema of every payload it can submit, generated from the same zod contracts the pipeline validates against, so the agent is writing against a schema rather than an example.
Errors come back as {ok:false, error:{category, message, retryable, hint}} and the exit code says what happened: 0 fine, 1 error, 2 the run is locked by another worker, 3 blocked and a human or a different role is needed. Roles declare abstract capabilities — files, web search, image, voice, publishing — so an agent maps them to whatever tools it actually has.
The pipeline does not care who is driving. YCA_ENGINE in .env picks the one the scheduler starts, and all three read and write the same typed files, so you can change your mind later without touching a run.
Anything else that can run a shell command — Codex, Cursor, Windsurf, ChatGPT desktop, your own loop — drives the same protocol. AGENTS.md is a one-page operating guide written for exactly that, and docs/AGENT-INTEGRATION.md is the full spec. Untested end to end by us.
Twelve role-scoped subagents, each with one job: trend scout, researcher, scriptwriter, script reviewer, policy reviewer, visuals producer, voice producer, thumbnail designer, upload editor, publisher, eval judge, eval hillclimber. Eight skills: /yca-run, /yca-monitor, /yca-prebuild, /yca-new-channel, /yca-viral-leads, /yca-upload, /yca-eval and /yca-telemetry. Seven documents, including a harness.md that explains the agents, the skills and the evals themselves.
They ship in .claude/ and Claude Code loads them on its own. Another agent can be handed the same markdown as instructions, but it will not auto-load it, because the format is Claude Code's.
The kit does not ship an .mcp.json. The daily runs reach the image, voice and publishing vendors through connectors already configured in Claude Code, so on another agent you wire the equivalents yourself. The AI SDK runner brings its own MCP clients and is the shortest path off Claude Code, and it is still the one with no production day behind it. Budget setup time either way.
The daily bill
Find the story, write the script, make the visuals, record the voice, cut the long-form, cut the Shorts, publish on schedule. Miss a day and the algorithm notices. What it costs to buy that labour:
What it costs to run three daily channels yourself with the same AI tools this pipeline uses: roughly 360 pieces a month, editors and tool subscriptions included.
ReelForgeAI, faceless channel costs 2026The same volume bought at AI-native done-for-you market rates. Per channel that is somewhere between $1,000 and $4,500 a month of displaced spend.
Overseeros, YouTube agency pricing 2026A human agency rate card, for one video. Full-service retainers run $5,000 to $25,000 a month. This is the band the market has not reconciled with the one above.
Villo Studio, channel management costsWhat it does daily
Niche, tone, voice, visual style, cadence, publish targets. The schema is strict, so a key you misspelled fails loudly instead of being ignored. yca channel new creates one from five templates, covering all three kinds of channel: scripted long-form, AI clips, and uploads your own team films.
yca schedule install writes one job per channel and edition, plus catch-up, the upload inbox watcher and the weekly evals — as launchd jobs on macOS, systemd --user timers or cron on Linux. Each run is a state machine: every step writes a typed artifact, holds a lease, and retries only on transient errors. A run that dies at the voiceover step resumes at the voiceover step.
The long-form and the Shorts are scheduled, each published with the synthetic-media disclosure set. yca status and the monitor skill tell you what ran, what it spent and what the reviewer rejected.
| Scripted channel, in orderresearch · script · visuals · voiceover · assemble · shorts · publish | 7 steps |
| Clips channel, in orderviralResearch · viralClips · viralFinish · publish | 4 steps |
| Upload channel, in orderscan the inbox · transcribe locally · plan · render Shorts · publish | 5 stages |
| Agents, each scoped to one jobtrend scout, researcher, scriptwriter, script reviewer, policy reviewer, visuals producer, voice producer, thumbnail designer, upload editor, publisher, eval judge, eval hillclimber | 12 agents |
Not every channel should be generated. If you already shoot real footage, an upload channel takes the finished MP4s out of an inbox folder and does the part nobody wants to do twice a week: it transcribes the video locally with whisper.cpp, which costs nothing and sends your footage to no one, then an editor agent writes the title, the description with chapters, and the tags, and picks the moments worth cutting. ffmpeg renders those into vertical Shorts with captions and a hook card, and the whole set publishes on your schedule.
The editor agent is explicitly not allowed to invent or rewrite what the video says. It describes what is there. Same state machine, same typed artifacts, same resume behaviour as the other two kinds — run it with /yca-upload or the yca upload commands.
Not a mockup
Everything on this page can be claimed by anyone. These three things cannot. They were taken out of the running system on 26 September 2026 and pasted in unedited, apart from shortening the scheduler's submission ids.
now: 2026-09-26 15:50:43 EDT both-editions 2026-09-26-morning [done] research:done script:done visuals:done voiceover:done assemble:done shorts:done publish:done long published now 716cdc21… short trump-rejects-iran-seven-day-ceasefire scheduled 2026-09-26T13:30:00.000Z b6995de7… short kyiv-drone-attack-kills-seven scheduled 2026-09-26T16:30:00.000Z 1b5a0052… deja-viral 2026-09-26-morning [done] research:done visuals:done shorts:done publish:done short flyover-flinch-vs-unbothered scheduled 2026-09-26T14:00:00.000Z a302f092… short calm-sip-sudden-shadowbox scheduled 2026-09-26T20:00:00.000Z c2ebd50a… short grownup-prized-possession-scream scheduled 2026-09-27T00:00:00.000Z 76f248f2… deja-viral 2026-09-27-morning [done] research:done visuals:done shorts:done publish:done short new-species-just-dropped scheduled 2026-09-27T14:00:00.000Z 1a456052… short fake-heirloom-portrait-prank scheduled 2026-09-27T20:00:00.000Z b3676c47… short oh-boy-one-then-a-hundred scheduled 2026-09-28T00:00:00.000Z 0f7054f4… suddenly 2026-09-26-morning [done] research:done script:done visuals:done voiceover:done assemble:done shorts:done publish:done long published now 3b4ea016… thumbnail rejected: Please confirm that your YouTube account is verified, then reconnect it in Blotato to use custom thumbnails. (posted without thumbnail) short nahui-ollin-aztec-52-year-cycle scheduled 2026-09-26T17:00:00.000Z 3e11c67d… short india-asian-games-shooting-gold-sept-25 scheduled 2026-09-26T20:00:00.000Z 65516846… launchd: com.mizudev.yca.suddenly.morning pid=- last_exit=0 com.mizudev.yca.suddenly.catchup pid=- last_exit=0 com.mizudev.yca.both-editions.morning pid=- last_exit=0 com.mizudev.yca.both-editions.evening pid=- last_exit=0 com.mizudev.yca.both-editions.catchup pid=- last_exit=0 com.mizudev.yca.deja-viral.morning pid=- last_exit=0 com.mizudev.yca.deja-viral.catchup pid=- last_exit=0
Three channels, one morning. The line in red is a real failure: YouTube would not take the custom thumbnail on an unverified account, so the run posted the video without one and said so instead of reporting success. That is the behaviour you are buying — it tells you what went wrong at 5am rather than at the end of the month.
{ "id": "2026-09-26-morning", "channel_id": "suddenly", "edition": "morning", "status": "done", "mock": false, "steps": { // artifact paths are relative to the run dir "research": { "status": "done", "attempts": 1, "artifact": "research.json" }, "script": { "status": "done", "attempts": 1, "artifact": "script.json" }, "visuals": { "status": "done", "attempts": 1, "artifact": "visuals.json" }, "voiceover": { "status": "done", "attempts": 1, "artifact": "voiceover.json" }, "assemble": { "status": "done", "attempts": 1, "artifact": "assemble.json" }, "shorts": { "status": "done", "attempts": 1, "artifact": "shorts.json" }, "publish": { "status": "done", "attempts": 1, "artifact": "publish.json" } } }
Every step writes one of these before it hands over. It is what "resumes where it stopped" actually means: the run reads this file, sees which steps already have an artifact, and starts at the first one that does not. attempts is how you find out a step is flaky before it costs you a night.
research 15:05:54 → 15:05:54 0s script 15:13:20 → 15:13:20 0s voiceover 15:16:29 → 15:18:04 1m35s visuals 15:20:12 → 15:20:26 14s assemble 15:20:50 → 15:28:41 7m51s shorts 15:29:06 → 15:31:08 2m02s publish 15:38:31 → 15:38:31 0s ─────────────────────────────────── wall clock 33 minutes
Read off the timestamps in the same run.json. Thirty-three minutes of machine time for one edition and two Shorts, of which the two ffmpeg steps are ten. The steps that print 0s finished in a prior agent call and were recorded on handoff — the number is the state write, not the work.
The page above says a gate rejects real people, brands and music before any generation spend. Here is that gate's own record from one morning, including the part that is less flattering.
All 5 approved as written. No real person (toy researchers, paper grandma, anonymous people from behind, snail/teapot duo), no brand/IP (no Nat Geo, Ancestry, DC/Lanterns, Kardashian reference), no named music (all original score /SFX; oh-boy audio not used), no harm, format-level only. Sameness check: tilt-shift diorama, paper cut-out, macro nature, handheld phone-cam street, claymation — all visually distinct.
The honest part: the deterministic word list returned hits: [] on all five. It caught nothing. Every rejection above came from the reviewer agent reading the candidates. The word list is a cheap floor, not the gate — the architecture document in the kit says the same thing, and you should price the risk accordingly.
What we can actually show you
This is the working system we operate, sold as-is.
| Scripted long-form channelfull seven-step pipeline | 2 long-form + 4 Shorts / day |
| Second scripted channelsame pipeline, different config | 1 long-form + 2 Shorts / day |
| Clips channelfour-step viral pipeline | 3 AI clips / day |
Per-run state machine. Every step emits a typed artifact validated with zod, holds a lease so two runs can never touch the same channel, and retries only on transient errors. You re-run one step instead of the whole night.
A deterministic gate rejects real people, brands, music and gore before any generation call is made. The policy reviewer agent runs on top of it. Rejections cost you nothing but the research step.
Unattended software you cannot inspect is a liability. Every job, step, agent call, vendor request and subprocess emits an OpenTelemetry span, so a run that went wrong is something you read rather than guess at. yca telemetry show --last 1 reads the last run from disk with no backend at all; point OTEL_EXPORTER_OTLP_ENDPOINT at the bundled Grafana stack in ops/ if you want dashboards. Ten modules in src/telemetry/, its own vitest file, docs/OBSERVABILITY.md and a /yca-telemetry skill.
Spans carry structure and timing, not your scripts: content is deliberately kept out of telemetry.
Unit tests catch a broken function. What costs money overnight is an agent doing something reasonable-looking and wrong, so four eval cases assert the behaviour instead: a billing failure stops the run rather than retrying into a dead subscription; a trend depicting a real person or a brand is held before a single generation credit is spent; a step left running by a dead coordinator resumes from the run's own state rather than the model's account of it; and a publisher reporting in-progress is resolved against YouTube rather than treated as a missing video and posted twice.
Behind them sit thirteen regression tasks: four golden runs and nine mutations that each inject one real past failure — a wrong market figure, a drifted bookend, a real-person prompt, an unapproved clip, a silent clip, stale trends, a Shorts slot collision. They run inside npm test and spend no credits. Four capability tasks and five judge rubrics sit alongside them, calibrated against human labels.
yca eval build assembles a suite out of your runs, preferring real production transcripts over anything synthetic, and hands you a review page before it counts. grader-check then checks the graders themselves; it found two real grader bugs in our own suite. diagnose reports the infrastructure error rate, warns when the baseline is already above 95% and there is no headroom left to measure, and derives a noise floor so you know which gains are real.
yca eval hillclimb runs the loop: a seeded train/test split whose test half the proposer never sees, one targeted patch per round to a role's instruction file, and a linter that rejects a patch for pasting case content, hardcoding a path or a date, or touching more than forty lines. A patch is kept only if the training gain clears the noise floor, the held-out set does not drop, and no case regresses. Everything else is reverted with the reason recorded. It writes an accepted.diff for you to read. It never edits your repo.
We ran it on our own scriptwriter. The baseline was already 99.6%, so nothing was accepted, which is the correct outcome and the reason we are not claiming it improved anything. An example suite ships so you can run the whole loop offline on the mock engine before spending a credit.
yca setup writes .env from the example without ever overwriting one, checks the machine, and prints the next command. yca doctor is the one you run when something is wrong at 6am: node, ffmpeg, python and Pillow, free disk, the power settings, whether the machine is set to wake for the run, systemd linger on Linux, which engine is selected, whether its CLI is actually on PATH and answers a probe, every channel config, and the scheduler itself.
Most overnight failures we have had were not code. They were a machine that dozed off, an expired token, or a vendor out of credit. doctor exists because finding that out at 6am is worse than finding it out at 6pm.
There are no customer testimonials on this page, because there are no customers yet. What we can show you is the three channels above, the architecture document and the vitest suite in the kit.
Cost of ownership
Against the DIY anchor for three channels, the licence pays for itself in one to two months. After that you pay only for the stack it runs on, and that bill keeps coming.
| Line item | Monthly |
|---|---|
| A Mac or a Linux box that stays awake and onlinea dozing or locked machine runs nothing; yca doctor checks the power settings for you | hardware you own |
| Claude CodePro at the low end; Max 5× is realistic for three daily channels | $20–$200 |
| Higgsfieldimage and video generation credits, Starter to Ultra | $19–$129 |
| ElevenLabsnarration, Creator to Pro depending on minutes | $11–$99 |
| Blotatoscheduling and multi-account publishing | $29–$97 |
| Typical, three daily channels | $150–$400 |
A declined card at ElevenLabs stops the voiceover step, which stops the run. So does a machine that dozed off, an expired vendor token, or a plan that ran out of credits mid-month. The pipeline logs the failure and resumes cleanly once you fix it, but nothing publishes in the meantime. If you cannot keep a machine and four accounts healthy, buy a managed service instead.
The licence
Instant download after checkout. A 577 KB zip, 252 files, the whole system as we run it. Every build is checked by a leak gate and self-tested from the unzipped copy — npm ci, typecheck, the full test suite — before it is published, and ships a MANIFEST.sha256 of every file.
Not included, deliberately: support, our own channel configs and brand assets (they belong to those channels), any channel run data, our production eval cases, and any vendor account. The two Higgsfield helper skills and the /eval-harness skill we use in-house are not in the zip either; they are operator and third-party tooling, not part of what you are buying. You bring your own Claude Code, Higgsfield, ElevenLabs and Blotato.
30-day refund, no questions asked. Email [email protected] within 30 days of purchase and we refund in full. You keep nothing you have to delete by hand: the licence simply ends.
Platform risk, stated at the point of sale. YouTube's inauthentic-content policy, updated 15 July 2025, explicitly targets templated and easily mass-produced content. This pipeline produces content daily on a template you configure. Every upload discloses synthetic media and that cannot be disabled. No monetisation, view, subscriber or revenue outcome is promised here or anywhere else on this page. What survives on YouTube is decided by YouTube.
We run the pipeline on your channel. No payment is taken here. Leave an email and we will reply with scope and a real quote.
The same licence, installed and running on your machine and your channels, with 30 days of integration support. No payment is taken here.
Questions worth asking
For a lot of people, you should. White Glove Content runs $86–$354/mo on its operator track and covers scripts, AI voice, edits, thumbnails, metadata and posting. Channel Farm starts at $49/mo. If you want a handful of videos a week and no machine to babysit, those are a better deal than this and you should take one.
The difference is cadence, volume and ownership. A five-business-day delivery window cannot put a long-form and four Shorts out every morning. A per-channel subscription scales linearly with channels; a licence does not. And at the end of a year with them you have videos, whereas here you have a system you can modify, fork into a new niche, or point at a client's channel. None of the individual steps in this pipeline are novel. What you are buying is that they run together, unattended, every day, and that the code is yours.
It can, and you need to go in knowing that. YouTube's inauthentic content policy, renamed and clarified on 15 July 2025, explicitly targets content "produced using a template with little to no variation" and content "easily replicable at scale". Mass-produced, generic or repetitive uploads do not earn ad revenue, and YouTube applies this retroactively. A pipeline that runs the same steps nightly across several channels is structurally what that policy describes.
What the kit does about it: a deterministic policy gate and a reviewer agent that reject template-like sameness before anything publishes, forced AI disclosure on every upload through containsSyntheticMedia, and instructions in SETUP.md to vary channels for real and to keep a human editorial pass on what ships. That reduces the risk. It does not remove it, and no seller can honestly tell you otherwise. If a demonetisation would sink your business, this is not a safe purchase.
We do not promise that, and the numbers in this genre are not kind. Only about 9–17% of YouTube channels ever reach 1,000 subscribers, which is the floor for the Partner Programme, and daily news and trend content sits in a sub-$5 RPM band. No view, subscriber, monetisation or revenue outcome is promised by this product, on this page or anywhere else. Anyone selling you one is worth a hard look.
What it does is displace cost. If daily production is already a line in your budget — an editor, a VA, a freelancer, your own evenings — this turns that line into a vendor bill of roughly $150 to $400 a month for three channels. Buy it for that. Do not buy it as a route to YouTube income you do not have yet.
The pipeline is agent-agnostic by design, and there is a real protocol for it rather than a promise. yca next --json returns the next actions as typed objects, yca describe prints the JSON Schema of every payload an agent can submit, errors come back with a category and a hint, and the exit code distinguishes an error from a locked run from one that needs a human. AGENTS.md is a one-page operating guide written for whichever agent you bring, and docs/AGENT-INTEGRATION.md is the full spec. Anything that can run a shell command drives it.
If you want off Claude Code entirely, the kit ships a Vercel AI SDK 7 reference runner in agents/ai-sdk/, with its own MCP clients for the image, voice and publishing vendors, per-role tool scoping and trace propagation. It passes an end-to-end test against mock providers. It has not yet run a full production day, so treat it as a working starting point rather than a proven one.
Two things stay Claude-specific. The twelve subagents and eight skills in .claude/ are Claude Code's format and only Claude Code auto-loads them; they are markdown, so you can hand them to another agent as instructions, but that is your work. And the kit ships no .mcp.json, so outside Claude Code you wire the vendor connectors yourself — which is exactly what the AI SDK runner already does.
Claude Code is what the three live channels run on and the only path proven across a full day. Codex, Cursor, Windsurf and your own loop will drive the same CLI, and we have not tested them end to end.
Either. yca schedule install renders the same job table as launchd jobs on macOS, or as systemd --user timers or cron entries on Linux, and yca doctor knows about both, down to checking systemd linger so your timers survive a logout. A Linux box is covered by the kit's own self-tests.
Being straight about the asymmetry: our three channels run on macOS, so that is the configuration with real nights behind it. Linux is supported and tested, not yet production-proven by us. Either way the machine has to be awake and online at run time, which is the part people underestimate. A Mac mini on a shelf or a small always-on Linux box is the normal setup.
Beyond the OS it needs ffmpeg, python3 with Pillow, and whichever agent engine you picked. yca doctor tells you which of those is missing before you find out at 3am.
Roughly $150 to $400 a month in vendor spend for three daily channels, on top of a machine you already own. That breaks down as Claude Code at $20–$200, Higgsfield at $19–$129, ElevenLabs at $11–$99 and Blotato at $29–$97, depending on tier and volume. Push more channels or longer videos and it goes up.
There is no licence renewal and no per-video fee from us. The full table is in the cost section.
No. Not at $4,997. You get the source, the architecture document, SETUP.md and the test suite, and that is the whole deal. There is no SLA, no onboarding call, no bug-fix promise and no guaranteed reply time. The only thing the support address handles at this tier is a broken download link or a refund.
If you want someone on the hook, the $15,000 tier includes setup and 30 days of integration support, or the managed tier means we run it. Both are enquiries above and neither takes payment on this page.
Run the evals. yca eval run --suite regression replays four golden runs and nine mutations, each one a real failure we have had, and it costs no credits because it grades recorded output. That is the suite to run before you merge anything. The four behavioural cases and the capability tasks cost credits, so they are meant for the weekly job the scheduler already installs.
If you want to go further, yca eval hillclimb proposes one patch at a time to a role's instruction file, scores it against a held-out split the proposer cannot see, and keeps it only if the gain is bigger than the measured noise and nothing regressed. It writes a diff for you to review and never edits your repo. You can run the whole loop offline on the mock engine with the example suite before you spend anything.
The pipeline stops at that step, logs the error, and resumes from that step once it is fixed. Fixing it is yours to do. Each vendor sits behind one small adapter in the provider layer, so a breaking change is usually one file, and the vitest suite tells you what broke. The design assumes breakage and aims for a fix a developer can finish in an afternoon.
We patch the system we run ourselves, but the licence carries no update entitlement. Buying it does not buy you future versions.
Yes. LICENCE.md is a single-operator commercial licence: one operator, unlimited channels, including channels you run for paying clients. Agencies are an intended buyer. What it does not permit is reselling, sublicensing or redistributing the code itself, or handing the kit to a client as their own. Read LICENCE.md in full before you buy if this matters to your business model, and email us if your setup sits in a grey area.
Source code and a setup guide, sold as-is under a single-operator commercial licence. It is software. It is not a business, not an income opportunity and not advice of any kind. You get the files listed in the licence section, you run them on your own machine with your own vendor accounts, and what the channels do after that is yours.
There are no customer testimonials on this page because there are no customers yet. The three channels are ours, and the terminal output further up was pasted out of the running system so you can judge it without taking our word for anything.
30 days, no questions asked. Email [email protected] from the address you paid with, within 30 days of purchase, and we refund in full. We do not ask you to prove you tried it, and we do not ask you to delete anything. This is source code, so we are relying on people being straight with us, and so far that has been fine.