MoneyPrinterV2: an automation console for YouTube Shorts, X, affiliate marketing, and outreach
FujiwaraChoki/MoneyPrinterV2 · 31,985★ · 3,445 forks
Everything worth knowing about FujiwaraChoki/MoneyPrinterV2: a Python command-line application that gathers, in a single menu, automatic YouTube Shorts creation and publishing, an X/Twitter bot with scheduled jobs, Amazon affiliate marketing, and local business outreach by email. The name promises to “print money”; what the repository actually delivers is an automation chain the user must operate with their own accounts, human review, and responsibility for every post.
What MoneyPrinterV2 is
The repository is neither an API nor a service: it’s a CLI with an interactive menu, configured through a JSON file, that depends on local tools (Ollama, Whisper, KittenTTS) and on social media and email account credentials.
Origin
The repository was created on February 12, 2024, one month after its predecessor: FujiwaraChoki/MoneyPrinter (V1), launched January 31, 2024, which limited itself to automating YouTube Shorts creation with MoviePy. V2’s README explicitly defines itself as “the second version of the MoneyPrinter project” and a “complete rewrite of the original project, with a focus on a wider range of features and a more modular architecture.”
The author is FujiwaraChoki, a GitHub account whose bio lists Zurich, Switzerland and whose real name, visible in the commit history, is Sami Hindi; he’s also behind the YouTube channel Fuji Codes, from which the demo video linked in the README itself was published (“I Automated Making Money with Python”). The account has 159 public repositories, mostly small automation projects, web apps, and experiments; MPV2 is by far the most impactful (31.6K stars versus V1’s 13.9K).
The README includes a clear disclaimer: the project is “for educational purposes only,” the author isn’t responsible for misuse, and doesn’t guarantee the accuracy of the information. The repository is published under GNU AGPLv3, strong copyleft: if the program is modified and offered as a network service, the corresponding code must be published under the same license.

The project’s trajectory shows in its recent commits: the Post Bridge integration for reposting Shorts to TikTok and Instagram merged on March 26, 2026, and on June 14, 2026 the author swapped the Post Bridge sponsorship banner for a readme.cash one, indicating the project stays alive but at a moderate pace of change (last publish: June 14, 2026).
Philosophy and principles
- Bundling several monetization flows into one console: the README doesn’t sell a single product but four (Twitter bot, Shorts, affiliation, outreach), selectable from a menu.
- Local models by default: the default configuration points to a local Ollama server (
http://127.0.0.1:11434), local Whisper for transcription, and local KittenTTS for voice; cloud providers (Gemini for images, AssemblyAI for STT, Post Bridge for cross-posting) are optional or complementary. - Unique but differentiated: the
docs/YouTube.mddocument justifies a design decision: unlike V1, V2 uses AI-generated images instead of stock footage, “making the videos more unique and less likely to be flagged by YouTube.” - The user is responsible for their accounts: the application operates through the user’s Firefox profile (logged into YouTube or X), not through those platforms’ API credentials; the automated browser acts as the user themselves.
- Education before guarantee: the README’s disclaimer and “educational purposes” tag mark the boundary between what the software does (produce drafts and publish) and what it doesn’t do (guarantee income, originality, or compliance).

How it works
The entry point is python src/main.py, which shows a four-option menu:
- YouTube Shorts Automater: creates “accounts” (in fact, saved profiles with a UUID, nickname, Firefox profile path, niche, and language) in a local cache (
.mp/youtube.json). For each account, the flow generates a script with the chosen Ollama model (length controlled byscript_sentence_length, 4 sentences by default), generates vertical 9:16 images with the configured image model (by default, the Gemini API “Nano Banana 2,” modelgemini-3.1-flash-image-preview), synthesizes voice with KittenTTS (voices: Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo), composes the video with MoviePy (requires the ImageMagick path), and uploads to YouTube Shorts via Selenium/Firefox. After a successful upload, it can hand the asset off to Post Bridge to publish on TikTok and Instagram. - Twitter Bot: same pattern, with cached accounts; generates and posts tweets on the chosen topic with the local model and supports scheduled jobs via the
schedulelibrary (the README’s “CRON jobs”). - Affiliate Marketing (Amazon + Twitter): the
AFMclass scrapes an Amazon product page, saves the title and features, and uses Ollama to write a “pitch” posted to X. There’s no sales attribution system or program approval: it’s promotional content generation. - Outreach (local business prospecting): downloads and compiles a Google Maps scraper written in Go (
gosom/google-maps-scraperv0.9.7, which is why the README requires installing Go for this flow), extracts businesses from a niche, finds their emails, and sends an HTML message via SMTP using templates where{{COMPANY_NAME}}is replaced with the business name.

Beyond the menu, there are scripts to skip interactivity: scripts/upload_video.sh asks which YouTube account to use and runs python src/cron.py youtube <id>, and scripts/setup_local.sh semi-automatically prepares the environment (creates config.json, the venv, installs dependencies, detects ImageMagick and the Firefox profile, checks which Ollama models are available and picks one from a preferred list — glm-4.7-flash, qwen3:14b, phi4, gpt-oss:20b, deepseek-r1:32b — and runs a local preflight).
The technical stack verified in requirements.txt is: Selenium + webdriver_manager + undetected_chromedriver (browser automation), Ollama (local LLM), KittenTTS 0.8.1 (voice, installed from a GitHub wheel), faster-whisper (local transcription), AssemblyAI (cloud transcription, optional), MoviePy + Pillow + ImageMagick (composition), yagmail (SMTP), schedule (scheduling), termcolor/prettytable (terminal interface).

The ecosystem
MoneyPrinter family line (same authorship):
FujiwaraChoki/MoneyPrinter(V1): 13,858 stars, 1,794 forks. Created January 31, 2024; automates Shorts creation with MoviePy and stock footage. Still active (last publish March 2026). V2 cites it as the basis for the video flow.FujiwaraChoki/Marketer(33 stars) andFujiwaraChoki/LeadGen(34 stars): earlier projects from the same author that already covered two of V2’s four flows (short video generation and Google Maps contact extraction in Go); V2 can be read as merging that scattered work into a single CLI.FujiwaraChoki/linkedin-bot(106 stars): LinkedIn outreach automation with Selenium, same conceptual family.

Community ports and derivatives (GitHub API figures as of August 21, 2026): harry0703/MoneyPrinterTurbo (113,864 stars, 17,277 forks) — V2’s README explicitly lists it as the Chinese-language community version; it generates HD short video from a topic through an automated AI flow, and it’s the largest sibling project in the ecosystem, more than three times V2’s stars. ddean2009/MoneyPrinterPlus (6,943 stars): in Chinese, batch generation of short videos with automatic publishing to Douyin, Kuaishou, Xiaohongshu, and Channels. Asad-Ismail/MoneyPrinterTurbo-Extended (383 stars), q1uki/MoneyPrinterAICreate (322 stars, based on Turbo with Alibaba’s Wanxiang 2.1 model), yl365/MoneyPrinterTurboEasy (226 stars, a “portable” Windows variant of Turbo), cevencheng/MoneyPrinterClaw (77 stars), Hiutaky/MoneyPrinterV3 (67 stars, continuing the FujiwaraChoki line’s numbering), MingxiLi/MoneyPrinter-AiSearch (35 stars), Troptrap/MoneyPrinter-Enhanced (19 stars), and office233/MoneyPrinterPro (12 stars, a local-first creativity pipeline that appeared on Hacker News on May 28, 2026).
Dependencies and associated projects named in the repository itself: KittenML/KittenTTS (15,381 stars, a voice synthesis model under 25 MB; V2’s default voice, Jasper, is one of its voices), gosom/google-maps-scraper (5,575 stars, the Go-based Google Maps scraper V2 downloads and compiles for the outreach flow), xtekky/gpt4free (66,580 stars, appears only in the README’s “Acknowledgments” section, with no dependency in requirements.txt), and Post Bridge (post-bridge.com, the social publishing service V2 hands off the Short to after uploading to YouTube; the integration is v1 and only supports TikTok and Instagram).

Community container images: Docker Hub has ceramicwhite/moneyprinter (6,181 pulls, corresponding to V1) and several smaller unofficial images; there’s no official V2 image. No PyPI package exists under the project’s name.
Official / semi-official status
There’s no official status: no vendor backs the project, it’s not on any marketplace, and it’s not a recognized de facto standard. What does exist “officially” is the perimeter FujiwaraChoki himself maintains: the README, the docs/ folder, CONTRIBUTING.md, and docs/Roadmap.md are the canonical surface; everything else (forks, Docker images, third-party tutorials) is semi-official and should be audited separately. The author runs his own Discord server (dsc.gg/fuji-community) linked from the README.
The project is monetized through personal sponsorship: a readme.cash badge, Buy Me A Coffee (“fujicodes”), and, until June 2026, a Post Bridge sponsorship banner that also appears as an affiliate link in docs/PostBridge.md. Anyone reading that documentation should know the author receives an incentive for that service’s use. The AGPLv3 license is a statement of position: the author requires that any modification offered as a network service be published, which keeps the project from silent absorption by a commercial product.
In practice, its status is that of a community reference within the “Python monetization automation” lineage: V2 holds 31.6K stars, more than double V1’s, but the ecosystem’s center of gravity is MoneyPrinterTurbo (113.9K), where the bulk of current community activity happens.

Quick-start guide
Installation and first run
Requirements: Python 3.12 (the README requires it; there are open issues about 3.13 incompatibility), ImageMagick, an Ollama server with at least one model downloaded, Firefox with the YouTube/X accounts already logged in (or a dedicated Firefox profile), and Go only if the email outreach flow will be used.
git clone https://github.com/FujiwaraChoki/MoneyPrinterV2.git
cd MoneyPrinterV2
cp config.example.json config.json
python -m venv venv
source venv/bin/activate # on Windows: .\venv\Scripts\activate
pip install -r requirements.txt
python src/main.py
Semi-automatic alternative (Linux/macOS): bash scripts/setup_local.sh, which creates config.json, the venv, installs dependencies, detects ImageMagick and the Firefox profile, picks an already-installed Ollama model, and runs a preflight. On first running src/main.py, you’re asked to create an account (nickname, Firefox profile path, niche, and language); the data lives in the .mp/ cache.

Common workflows
- To generate and upload a Short manually: in the menu, option 1 (YT Shorts Automater) → select the account → the flow generates a script (Ollama), images (Gemini or another provider), voice (KittenTTS), composes it, and uploads it; with
post_bridge.enabled=trueandauto_crosspost=falseit will ask whether to also publish to TikTok/Instagram. - To upload a Short via script (no menu):
bash scripts/upload_video.sh; the script lists account IDs from.mp/youtube.json, asks for one, and runspython src/cron.py youtube <id>. - To schedule recurring tasks: the same menu option 1 lets you register jobs with
schedule(the README’s “CRON jobs”); the process must stay running for them to fire. - To run email outreach: install Go, fill in
google_maps_scraper_niche,email(SMTP), and the subject/body templates (outreach_message.html), and choose the Outreach menu option; V2 downloads the gosom scraper, extracts businesses, and sends the emails.
Essential configuration
The only file a new user touches is config.json (copied from config.example.json). The five keys adjusted first: ollama_model (local text model; if left empty, the app queries Ollama at startup and lets you choose interactively), firefox_profile (path to the Firefox profile logged into the networks; without it there’s no publishing), nanobanana2_api_key or the GEMINI_API_KEY variable (key for generating images with Gemini; nanobanana2_model and nanobanana2_aspect_ratio are also set), stt_provider (local_whisper or third_party_assemblyai, which requires assembly_ai_api_key), and post_bridge (an optional block for cross-posting to TikTok and Instagram).
Other frequent settings: headless (hide the browser), threads (composition parallelism), tts_voice (8 KittenTTS voices), script_sentence_length (script length), and is_for_kids (marks the Short as “for kids” on upload).
Common pitfalls and fixes
WebDriverException: Process unexpectedly closed(issue #90, 13 comments): a Selenium/Firefox failure; usually involves out-of-sync driver versions or a Firefox profile locked by another instance.- Firefox isn’t found even with an absolute path (issue #111): the binary must be accessible from the environment; the
setup_local.shscript only auto-detects profiles on macOS. - Infinite “Generated Title is too long” loop on Windows (issue #265): the generated title exceeds the limit; shorten
script_sentence_lengthor truncate the title. 429 Too Many Requestswhen generating images (issue #266): Gemini API rate limits; reducethreadsor space out attempts.ImportError ... distutils.ccompilerand Python 3.13 incompatibility (issue #116, PR #161): the dependency baseline targets 3.12; use the README-required version.- The tweet button fails (issue #100, PR #102): Selenium selectors age as X changes the DOM; the README implicitly warns about operating via a browser profile.
- Cross-posting skipped in scheduled jobs: with
auto_crosspost=false, cron jobs skip Post Bridge by design (to avoid hanging on an interactive prompt); setaccount_idsif there are multiple accounts. - Documentation and code don’t agree on some key names:
docs/YouTube.mdanddocs/TwitterBot.mdmention anllmandimage_modelkey, whileconfig.example.jsonusesollama_modeland thenanobanana2_*block; it’s worth validating against the installed version’s code. config.jsoncontains secrets (SMTP, API keys, browser profiles): don’t commit it to Git; theGEMINI_API_KEYandPOST_BRIDGE_API_KEYvariables are documented alternatives.
Integrations and migration
- Ollama: the default text provider; any local model works, and the app picks interactively if
ollama_modelis empty. The community has proposed cloud providers (PR #149: OpenRouter). - Post Bridge: the only documented multi-platform publishing integration; it works only after a successful YouTube upload and only with TikTok and Instagram in its v1.
- Go / gosom google-maps-scraper: downloaded by URL (pinned to v0.9.7 in
config.example.json) and compiled locally. - No public API or official container: integrating with CI or other tooling means running
python src/cron.py ...or thescripts/scripts in a persistent process. - Migrating from V1:
docs/YouTube.mdstates V2 uses “a similar implementation of V1”; anyone with V1 accounts or flows finds the same goal in V2 with generated images instead of stock, plus the three extra flows. - Migrating to MoneyPrinterTurbo: those who only want “topic → video” tend to find a more mature flow with more community in Turbo; the tradeoff is that MPV2 is the one that adds an X bot, affiliation, and outreach in the same console.
Repo numbers
Measured: August 21, 2026, GitHub API.
| Metric | Value |
|---|---|
| Stars | 31,640 |
| Forks | 3,413 |
| Real subscribers | 250 |
| Commits | 115 |
| Open issues + PRs | 94 |
| Primary language | Python |
| License | GNU AGPLv3 |
| Created | February 12, 2024 |
| Last publish | June 14, 2026 |
| Releases / tags | None |
watchers_count mirrors the star count, so subscribers_count is reported as the real subscriber figure. The commit count comes from the last page of the commits API’s pagination link. The absence of releases means “the version” of reference is the state of the main branch.
Top contributors per the API: FujiwaraChoki (102 contributions), TomyDiNero (2), supperfreddo (2), and seven contributors with one contribution each.
How the community received it
Attention concentrates on version 1; V2 has barely generated its own thread. In V1’s Hacker News thread (117 points, 59 comments, February 7, 2024), kaladin-jasnah attacks the name: “It’s telling the name of this repository is ‘MoneyPrinter’ — says a lot about the monetization of videos today,” and asks whether the creator has made any money off it. plasticbugs responds with data: the demo video shows Shorts with over 1,000 views but most sitting around two hundred, and recalls that YouTube requires 1,000 subscribers and 4,000 hours to monetize. atrus clarifies the Shorts threshold (10 million views in 90 days), and RulerOf calculates that at 15 seconds each, that’s roughly 5 years of accumulated watch time.
sorenjan cites an interview with an AI video creator who reportedly earned over $15,000 a month; kevingadd and pjc50 counter that Shorts-to-subscription conversion is low and that only the top viral Shorts earn anything. megous leads the moral criticism: “Why would one want to create more of those abominations?”, after deleting their own YouTube videos; haxiomic asks for more projects that detect this kind of junk content rather than produce it. Mashimo criticizes the practical result: in the example video, the stock footage is poor; jcpham2 confirms that barely 1 in 5 retrieved clips actually relates to the script.
No notable V2-specific discussion exists on Hacker News (V2’s own thread landed at 1 point and 0 comments). On GitHub, the most-debated issue is #90 (13 comments) about the Selenium crash, followed by PR #149 (13 comments) proposing OpenRouter as a cloud LLM provider, and #243 (6 comments) on automatic contextual replies on X. The recurring criticism is reliability: Firefox issues, 429 limits on the image API, the “title too long” loop, and Python 3.13 incompatibility. On the positive side, the volume of PRs from 2026 (March–June) shows a community keeping the project alive: browser leak fixes, file handling, compatibility, and Post Bridge itself.
MoneyPrinterV2 versus other proposals
| Project | Verified fact | Verifiable difference |
|---|---|---|
FujiwaraChoki/MoneyPrinter (V1, 13,858 ⭐) | Same author; Shorts with MoviePy and stock footage. | V2 rewrites it with AI-generated images and adds X, affiliation, and outreach. |
harry0703/MoneyPrinterTurbo (113,864 ⭐) | Automated topic → HD video flow, Chinese-language, the largest in the ecosystem. | Doesn’t include an X bot, Amazon affiliation, or outreach; its focus is video. |
ddean2009/MoneyPrinterPlus (6,943 ⭐) | Batch generation with automatic publishing to Douyin, Kuaishou, Xiaohongshu, and Channels. | Aimed at the Chinese multi-platform publishing market; not at outreach. |
Hiutaky/MoneyPrinterV3 (67 ⭐) | “Generate and Publish AI Powered Youtube Shorts in seconds.” | Continues the FujiwaraChoki line’s numbering; doesn’t document the X/affiliation/outreach flows. |
The comparison that matters in practice: those who want only “topic → video” tend to be better served by Turbo for its maturity and community; those who want the full console (X + Shorts + Amazon + outreach) in a single project with local models by default find in MPV2 the family’s most-starred option, in exchange for accepting its documented lower reliability and its AGPL license.
Use cases and who this repository can help
- People who want to automate their own YouTube Shorts channel without paying for text or voice APIs: the default configuration (local Ollama + Whisper + KittenTTS + Firefox profile) allows producing and uploading Shorts with no text/voice/STT API cost; only the image provider (Gemini) and, optionally, Post Bridge require a service key.
- Scheduled content experiments: with
scheduleand the menu’s “CRON” jobs, you can chain daily Shorts or per-niche tweet publishing. - Automation and scraping students: the outreach flow (Go-based gosom google-maps-scraper + yagmail + templates) is a complete example of a data → email chain.
- Creators publishing across multiple platforms: Post Bridge’s v1 integration covers the specific case of uploading to YouTube and forwarding the same asset to TikTok and Instagram.
- Who is NOT its audience: operations requiring high-cadence reliability, use on Python 3.13, or any commercial network deployment of a modification (AGPLv3 requires publishing the derived code).
Resources
- Repository: https://github.com/FujiwaraChoki/MoneyPrinterV2
- Documentation: https://github.com/FujiwaraChoki/MoneyPrinterV2/tree/main/docs
- Official demo video: https://youtu.be/wAZ_ZSuIqfk
- Ecosystem: V1 https://github.com/FujiwaraChoki/MoneyPrinter · MoneyPrinterTurbo https://github.com/harry0703/MoneyPrinterTurbo
- Community / Discord: https://dsc.gg/fuji-community
Note: this report combines the repository’s README, documentation, and scripts (main branch), the GitHub API, the Hacker News API (Algolia), and repository searches consulted on August 21, 2026. Figures change over time; platform rules (YouTube, X, TikTok) and AI service terms are the responsibility of whoever operates the project.
Comments