{"slug": "i-open-sourced-a-free-youtube-shorts-factory-the-money-isn-t-in-the-shorts", "title": "I Open-Sourced a Free YouTube Shorts Factory. The Money Isn't in the Shorts.", "summary": "A developer released ffmpeg-ai, an open-source Python CLI that turns a single text prompt into a finished, captioned, voiced vertical video through an eight-stage pipeline spanning free LLM scripting via OpenRouter, edge-tts narration, cascading free image providers, local faster-whisper captions and H.264 encoding. The developer argues the pipeline's near-zero marginal cost is real but the economics are not: at estimated Shorts RPMs of $0.02 to $0.10, ten million views yields only $200 to $1,000, versus $2 to $15 per thousand for long-form, and YouTube's Partner Program bar rises to 8,000 watch hours or 20 million Shorts views for new applicants from February 1, 2027.", "body_md": "*The pipeline costs nothing. The audience costs everything. Here's the math the faceless-channel gurus skip.*\n\nThere's a particular genre of video that haunts the recommended feed after midnight. A guy in a rented penthouse, or more often no guy at all, just a synthetic voice over stock footage, explaining that he makes $14,000 a month from a channel he hasn't touched in weeks. Faceless. Automated. Passive. Link in bio for the course.\n\nThe course is the business. The channel is the ad for the course. That's been true for years, and nobody running the funnel has any reason to tell you.\n\nI built the machine those courses describe and put it on GitHub for free. It's called `ffmpeg-ai`, it lives at [https://github.com/numbpill3d/ffmpeg-ai](https://github.com/numbpill3d/ffmpeg-ai), and it turns a single line of text into a finished, captioned, voiced vertical video using almost entirely free services. Giving it away makes it easy to tell the truth about what it can and can't do for your bank account, because there's nothing to upsell on the far side of the repo.\n\nThe short version: the factory works. The economics of what it produces are nothing like the thumbnails.\n\n`ffmpeg-ai` is a Python CLI. You give it a topic and it runs an eight-stage pipeline:\n\n```\n1. script     OpenRouter, with fallback across 6 free LLMs\n2. voice      edge-tts, hook + segments + CTA synthesized in parallel\n3. pacing     expands the visual timeline so no image overstays\n4. images     AI images synced per segment, cascading across 7 providers\n5. render     Ken Burns motion or fast storyboard cuts\n6. captions   local faster-whisper transcription, burned in\n7. music      optional bed with sidechain ducking under narration\n8. encode     H.264 + AAC, 9:16 for Shorts or 16:9 for landscape\n```\n\nSetup is the usual ritual:\n\n``` bash\n$ git clone https://github.com/numbpill3d/ffmpeg-ai.git\n$ cd ffmpeg-ai\n$ uv pip install -e \".[dev]\"\n$ cp .env.example .env    # add your OpenRouter key, free tier works\n```\n\nThen:\n\n``` bash\n$ ffmpeg-ai generate \"why your router's admin page is still on port 80\"\n```\n\nWhat comes out is a 9:16 video up to 58 seconds long, with a voiceover, karaoke-style captions, paced visuals, a thumbnail and a run report. The free image path uses Pollinations (no key), Stable Horde (guest key built in), and the free tiers on Hugging Face and Together. Paid providers like BFL, fal.ai and Prodia are optional slots, never requirements.\n\nBatch mode is where the \"passive\" fantasy starts to feel real:\n\n``` bash\n$ ffmpeg-ai batch topics.txt -o out/\n```\n\nFifty topics in a text file, fifty videos in a folder by morning. Your marginal cost per video rounds to zero. That sentence is the hook every faceless-channel course is built on, and it's completely true.\n\nIt also stops mattering the moment you look at the other side of the ledger.\n\nStart with what YouTube pays for Shorts. Public RPM estimates (what a creator actually takes home per thousand views) cluster around **$0.02 to $0.10** across most niches. Finance and tech sit near the top of that band. Memes and text-message stories sit at the floor. Long-form in the same niches typically lands between $2 and $15 per thousand. That's up to two orders of magnitude more per view for the format the guru videos never mention.\n\nNow run it:\n\n```\n10,000,000 Shorts views x $0.02 per 1k  =  $200\n10,000,000 Shorts views x $0.10 per 1k  =  $1,000\n```\n\nTen million views is a lot of human attention. It's roughly the number of people who live in Sweden. Monetized as Shorts, it buys you somewhere between a nice dinner and a month of rent in a cheap town.\n\nAnd you have to earn the right to collect even that. The current Partner Program bar for full revenue sharing is 1,000 subscribers plus either 4,000 public watch hours in a year or 10 million Shorts views in 90 days. In August 2026 YouTube announced that from **February 1, 2027**, new applicants need double that: 8,000 qualified watch hours or 20 million qualified Shorts views in 90 days. Existing partners keep their status but need to accept the new terms by January 31, and they need to hold 10 million qualified Shorts views on a rolling 90-day window to keep earning from Shorts at all. Drop under the line and Shorts revenue stops until you climb back over it.\n\nSo the bar for getting paid just doubled for anyone who isn't already in. The pay rate didn't move.\n\nThe bigger threat to the automated channel is the review.\n\nYouTube's old \"repetitious content\" policy now goes by **inauthentic content**, and the clarified guidance from July 2026 is blunt about what it targets: generic, template-built videos, content that's unsatisfying or off-putting, and AI personas posing as experts on health, legal, finance or political topics. The detail that matters most is that reviewers judge the channel's overall pattern, not individual videos. One templated upload doesn't sink you. Three hundred that share a skeleton will.\n\nPicture a channel built by running `batch` on a scraped list of trending topics with the default style, default voice and default captions, every single day. That channel is a pattern, and patterns are exactly what this policy was written to catch.\n\nDisclosure is a separate rule. Realistic synthetic content that could be mistaken for something real needs the \"altered or synthetic content\" toggle in Studio, and realistic AI voices fall inside that line. Disclosing doesn't throttle reach or monetization on its own. Skipping it when it's required can get you demonetized. Flip the toggle and move on.\n\nWhat this policy kills is the lazy way of using the tool.\n\nThe faceless-channel gurus are right about one thing: the business model works. They just put it in the wrong place on the diagram. The course sellers make their money from the course. The channel is top-of-funnel, a machine for turning strangers into people who recognize your name.\n\nYou can run the same play honestly. Treat Shorts as distribution and treat a product you own as the business. A digital guide, a template pack, a config bundle, anything with margins you control and a price that isn't set by an ad auction. One $35 sale is worth the Shorts payout on somewhere between 350,000 and 1.75 million views at the RPM band above. Ten sales a month and the ad revenue is a rounding error.\n\nThere's one plumbing problem. Since August 2023, links in Shorts descriptions and comments aren't clickable. YouTube killed them to fight spam. What you have left:\n\nSo the structure that makes sense looks like this. Shorts pull attention. A handful of longer videos (`ffmpeg-ai` has a landscape mode up to ten minutes with `--mode landscape -d 300`) catch the people who want more. Those videos and your channel page point at something you sell.\n\nIf you want a worked map of this pattern applied to automation projects that actually invoice somebody, [AI Automation Playbook](https://numbpilled.gumroad.com/l/ai-automation-playbook) covers seven monetizable builds and a 30-day plan. It's the long version of \"stop selling attention by the thousand and start selling outcomes.\"\n\nThe tool has the flags you need to stay on the right side of \"inauthentic.\" Use them.\n\n**Edit the script before it renders.** The `--edit-script` flag stops the pipeline after the LLM writes and before anything gets voiced. Rewrite the hook. Kill the filler. Add the one detail only you know. A video that contains your judgment isn't template content, whatever generated the first draft.\n\n``` bash\n$ ffmpeg-ai generate \"how cheap ESP32 boards became aircraft trackers\" \\\n    --edit-script --style dramatic --caption-style bold-center\n```\n\n**Use your own visuals.** `--images-dir path/` swaps the AI image providers for a folder you supply. Screenshots of your terminal, photos of your bench, diagrams you drew. This one change does more for the \"is a human here\" question than anything else in the pipeline.\n\n**Script-only dry runs.** `--dry-run` generates the script without rendering. Run fifty dry runs, keep the five worth making, and render those. Curation is the human layer, and it's cheap.\n\n**Vary the skeleton.** Rotate `--render-mode` between `kenburns` and `storyboard`, rotate caption styles, and change the music bed. A channel where every video has the same bones reads as a farm because it is one.\n\n**Pick a niche you can actually talk about.** This matters more than every flag combined. An AI pipeline amplifies whatever you feed it. Feed it a topic you understand and it saves you hours of editing. Feed it a topic you scraped from a \"most profitable niches\" listicle and it produces a confident wrong video at industrial scale.\n\nOnce the workflow is curated, the scheduling becomes the boring part, which is exactly what you want. A cron entry or a scheduled job that runs `ffmpeg-ai batch` against a reviewed topic file, writes into a dated folder and pings you when renders finish turns the factory into a morning ritual instead of a project. The 25 production configs in [OpenClaw Automation Bible](https://numbpilled.gumroad.com/l/openauto) handle exactly this kind of plumbing: scheduled jobs, multi-step swarms, and Telegram or Discord notifications when a batch lands. Wire the render queue to it and you can review a folder of drafts over coffee instead of babysitting a terminal.\n\nHere's the ledger with nothing hidden:\n\n```\ncost per Short          ~$0 on free tiers (your electricity, your time)\nhuman time per Short    10-20 min if you edit the script and swap visuals\nShorts ad revenue       $0.02-$0.10 per 1k views, after you qualify\nqualification           1,000 subs + 10M Shorts views / 90 days\n                        (20M for new applicants from Feb 1, 2027)\nlinks in Shorts         not clickable; route via channel page + long-form\nreal revenue            whatever you sell at the end of the funnel\n```\n\nThe machine removes the production cost. It doesn't remove the attention problem, the policy problem or the product problem. Three problems out of four are still yours.\n\nThat's still a good deal. Production cost was the wall that kept most people from running a channel at all. With that wall gone, you get to spend your hours on the parts that pay: having something to say and having something to sell.\n\nClone it, run a dry batch on ten topics you actually know, and render the best two. If both of them embarrass you, the problem was never the pipeline.\n\n*Sources: github.com/numbpill3d/ffmpeg-ai (README); UpTube, \"YouTube's New 2026 Policies\"; Social Day, \"YouTube raises Partner Program entry bar to 8,000 watch hours from February 2027\"; Korpi, faceless channel RPM estimates; Tubefilter, \"YouTube's banning clickable links from Shorts descriptions and comments\" (Aug 10, 2023).*\n\n**Tags:** passive-income, make-money-online, youtube, automation, artificial-intelligence", "url": "https://wpnews.pro/news/i-open-sourced-a-free-youtube-shorts-factory-the-money-isn-t-in-the-shorts", "canonical_source": "https://dev.to/numbpill3d/i-open-sourced-a-free-youtube-shorts-factory-the-money-isnt-in-the-shorts-4abp", "published_at": "2026-11-02 17:48:13+00:00", "updated_at": "2026-11-02 17:54:35.767133+00:00", "lang": "en", "topics": ["ai-tools", "generative-ai", "developer-tools"], "entities": ["ffmpeg-ai", "YouTube", "OpenRouter", "edge-tts", "faster-whisper", "Pollinations", "Stable Horde", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/i-open-sourced-a-free-youtube-shorts-factory-the-money-isn-t-in-the-shorts", "markdown": "https://wpnews.pro/news/i-open-sourced-a-free-youtube-shorts-factory-the-money-isn-t-in-the-shorts.md", "text": "https://wpnews.pro/news/i-open-sourced-a-free-youtube-shorts-factory-the-money-isn-t-in-the-shorts.txt", "jsonld": "https://wpnews.pro/news/i-open-sourced-a-free-youtube-shorts-factory-the-money-isn-t-in-the-shorts.jsonld"}}