August 25, 2026 · By YasKad
FujiwaraChoki/MoneyPrinterV2

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.

Detailed, dark-mode cyberpunk timeline visual showing the evolution of a software project from V1 to V2, neon accents, ultra-detailed 8K resolution. On the left, a smaller legacy terminal labeled only by abstract version glyphs uses stock video thumbnails and simple script generation. On the right, a larger glowing V2 interface expands into four modular flows: short-form video, social posting, affiliate content, and local business outreach. Between them, a luminous commit graph branches forward, with timestamps represented as glowing nodes rather than readable dates. A shield icon with an open lock symbolizes a copyleft license, while a small educational disclaimer icon appears as a neutral holographic tag. A subtle Zurich skyline in the far background, rendered in cold blue light, suggests the author's origin.

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.md document 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).

High-tech, dark-mode cyberpunk illustration of local-first AI automation, neon accents. The scene centers on a compact local server rack glowing with cyan and magenta lights, connected by fiber-like cables to three abstract modules: a large language model core, a speech transcription waveform, and a tiny voice synthesis chip emitting soft vocal patterns. A user silhouette sits in front of a terminal, carefully reviewing generated content before it is published, emphasizing human oversight. Around the workspace, floating icons represent a logged-in browser profile, a JSON configuration file, and a consent checkbox glowing amber. The atmosphere communicates responsibility, local control, and privacy-aware automation, with no readable text.

How it works

The entry point is python src/main.py, which shows a four-option menu:

  1. 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 by script_sentence_length, 4 sentences by default), generates vertical 9:16 images with the configured image model (by default, the Gemini API “Nano Banana 2,” model gemini-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.
  2. 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 schedule library (the README’s “CRON jobs”).
  3. Affiliate Marketing (Amazon + Twitter): the AFM class 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.
  4. Outreach (local business prospecting): downloads and compiles a Google Maps scraper written in Go (gosom/google-maps-scraper v0.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.

Detailed, dark-mode cyberpunk interface diagram of a four-option command-line menu, ultra-detailed 8K resolution, neon accents. The terminal displays four large glowing panels arranged in a cross layout: a vertical 9:16 video frame for short-form content, a circular social media bubble for automated posting, a product box with a price tag for affiliate marketing, and a map pin connected to an email envelope for local business outreach. Each panel is linked to a central Python prompt cursor. Behind the interface, translucent workflows show script generation, image generation, voice synthesis, video composition, browser upload, and SMTP delivery. Electric blue, neon green, violet, and warning amber distinguish the four flows while maintaining a cohesive dark cyberpunk style.

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).

Technical cyberpunk visualization of an automation stack, dark mode, neon accents. A browser window is steered by a glowing robotic hand, representing Selenium-based automation, with a Firefox-like silhouette rendered abstractly. Beside it, a video editing timeline assembles vertical frames, audio waveforms, and subtitle blocks. Nearby, a clock with rotating gears represents scheduled jobs, and a small SMTP envelope flies along a neon data path. Abstract representations of a local LLM node, a TTS voice chip, a faster transcription waveform, and an image composition engine complete the scene. Precise developer pipeline mood, with cables, terminal panels, and holographic dependency graphs connecting every component.

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) and FujiwaraChoki/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.

Cyberpunk ecosystem map showing a network of related software projects, dark mode, ultra-detailed 8K resolution, neon accents. A central glowing node represents the main project, surrounded by smaller orbiting nodes for community derivatives, ports, and sibling tools. One much larger node glows brighter and farther away, representing the most popular community sibling project, with a dense cluster of stars and forks visualized as tiny luminous particles. Chinese-inspired glyph fragments and abstract repository icons suggest international variants. The network feels alive, with data streams flowing between nodes, some branches active and bright, others dimmer and experimental. A subtle Hacker News thread icon appears as a small floating paper-like hologram.

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).

Detailed, dark-mode cyberpunk scene of external dependencies and integrations, ultra-detailed 8K resolution, neon accents. On the left, a compact voice synthesis chip emits colorful sound waves and tiny voice profile orbs, representing lightweight TTS models. In the center, a Go-language compiler icon shaped like a fox silhouette compiles a Google Maps scraper into a glowing binary, with map pins and business markers floating above it. On the right, a bridge-like structure connects a vertical video frame to two social platforms, visualized as abstract TikTok-like and Instagram-like panels. Modular integration mood, with cables, API ports, and service badges floating in a dark cyberpunk workspace.

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.

Symbolic cyberpunk image representing project status, governance, and monetization, dark mode, ultra-detailed 8K resolution, neon accents. A large glowing shield with an open-source copyleft emblem connects to a README document icon, a Discord server icon, a coffee cup with a steam-like data cloud, and a sponsorship badge rendered as a small neon chip. A subtle network service icon with a lock and a code-sharing symbol conveys the requirement to publish modified source code when offered as a service. The background includes a community server room, a small personal funding dashboard, and a transparent disclaimer panel glowing in neutral amber. Balanced mood: independent, community-driven, legally clear, and personally sustained.

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.

Practical, dark-mode cyberpunk quick-start illustration for a developer setup, ultra-detailed 8K resolution, neon accents. A dark terminal window with abstract command lines flowing in glowing cyan, beside a checklist hologram with five glowing items: Python runtime, ImageMagick, local Ollama server, Firefox profile, and Go compiler. A virtual environment icon appears as a small shielded container, and a JSON configuration file floats with key-value pairs represented as glowing blocks. A Firefox browser profile folder glows with two account tokens, one for video platform and one for social platform. A setup script icon runs a preflight check, with progress bars, dependency graphs, and a final green "ready" light. Clear onboarding sequence mood for a technical user.

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=true and auto_crosspost=false it 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 runs python 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.sh script 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_length or truncate the title.
  • 429 Too Many Requests when generating images (issue #266): Gemini API rate limits; reduce threads or space out attempts.
  • ImportError ... distutils.ccompiler and 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); set account_ids if there are multiple accounts.
  • Documentation and code don’t agree on some key names: docs/YouTube.md and docs/TwitterBot.md mention an llm and image_model key, while config.example.json uses ollama_model and the nanobanana2_* block; it’s worth validating against the installed version’s code.
  • config.json contains secrets (SMTP, API keys, browser profiles): don’t commit it to Git; the GEMINI_API_KEY and POST_BRIDGE_API_KEY variables are documented alternatives.

Integrations and migration

  • Ollama: the default text provider; any local model works, and the app picks interactively if ollama_model is 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 the scripts/ scripts in a persistent process.
  • Migrating from V1: docs/YouTube.md states 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.

MetricValue
Stars31,640
Forks3,413
Real subscribers250
Commits115
Open issues + PRs94
Primary languagePython
LicenseGNU AGPLv3
CreatedFebruary 12, 2024
Last publishJune 14, 2026
Releases / tagsNone

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

ProjectVerified factVerifiable 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 schedule and 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


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