塑造个人品牌,发现细分市场,构建可持续盈利的产品
I share how to build a personal brand, discover niche markets, and create sustainably profitable products. I also share everything about AI.
AI translation
Your AI marketing team: it edits the videos, writes the posts and finds the conversations. Led by an AI CMO. You approve everything.
MarketingTypeScript · PLpgSQLGitHub @marcus-legiaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
AI CMO for solo founders — plans the week, drafts posts, clips your videos. You approve everything that goes out.
Taken from the repository README
Loading the full README.
Read the full README ↗An AI CMO for solo founders. Paste your website, and OpenCMO learns your business, plans the week, and drafts the work across three departments — you approve everything that goes out.
OpenCMO drafts and assists; it never posts, likes, follows or comments on its own.
The hosted version runs at opencmo.io. This repository is the full source of the web app, the editor and the video engine, released under the GNU AGPL-3.0.
Browser ──► Next.js app + /api/v1 (Vercel) ──► Supabase (Auth · Postgres/RLS · Storage · Realtime)
▲
Modal worker (Python + ffmpeg + Node exporter) ── claims queued tasks
Your Claude ──► MCP server (Modal) ──────────────────┘ same tools as the in-app Assistant
Every read runs under Row Level Security; every write goes through a Postgres RPC that checks ownership. The database schema is the contract between the web app, the worker and the MCP server.
opencmo/
├── apps/
│ └── web/ Next.js app: landing, workspace, AI CMO, clip editor, /api/v1
│ ├── app/ routes (App Router); app/api/v1 = the public API
│ ├── components/ UI, including the editor (components/editor)
│ ├── lib/
│ │ ├── agent/ the editor Assistant — its tools are editor-core operations
│ │ ├── cmo/ the AI CMO: onboarding, jobs, schedules and its agents
│ │ ├── generate/ AI image/video/voice generation, with prompt moderation
│ │ ├── mcp/ MCP auth: API keys → short-lived user tokens under RLS
│ │ └── supabase/ Supabase clients (admin.ts = service role, server-only)
│ ├── e2e/ Playwright end-to-end tests
│ └── e2e-compat/ Safari/Firefox compatibility tests
├── packages/
│ ├── engine/ Python engine: an upload → editor master + transcript, exports,
│ │ media generation, all via streaming ffmpeg;
│ │ Modal worker in production (modal_app.py)
│ ├── contracts/ JSON contracts shared by Python and TypeScript
│ │ (task kinds, AI model catalog, document schemas)
│ ├── clip-doc/ the clip document: zod schema, validation, migrations
│ ├── editor-core/ operations on the document — the only write path
│ │ (editor buttons, the API and the Assistant all use it)
│ ├── clip-render/ Canvas 2D renderer, shared by the browser preview and the exporter
│ ├── clip-export/ server export: document → MP4
│ ├── clip-motion/ explainer animations (Remotion), rendered on the worker
│ ├── clip-icons/ animated icon library
│ ├── clip-assets/ the editor media library: manifest, folders, rename/move/delete
│ ├── clip-media/ bundled fonts
│ ├── editor-parity/ golden-image tests that keep the renderer pixel-stable
│ ├── skills/ style skills: markdown + frontmatter → a generated index
│ └── mcp-server/ MCP server (Streamable HTTP, stateless) so your own Claude
│ can drive OpenCMO
├── supabase/
│ ├── migrations/ schema history, applied in order
│ ├── tests/ pgTAP tests, one per migration
│ ├── schema/current.sql generated snapshot of the current schema (read-only)
│ └── config.toml local stack config
├── scripts/ dev stack (dev.mjs), schema dump, document checks
└── docs/ design notes, build plans and research reports
Read ARCHITECTURE.md for the decisions behind this shape, including the hard budget every change must respect: peak RAM per job < 2 GB.
Requirements: Node 22+, Docker (for the local Supabase stack), the
Supabase CLI, uv,
and FFmpeg/ffprobe.
npm ci
uv venv --python 3.12 packages/engine/.venv312
uv pip install --python packages/engine/.venv312/bin/python -e 'packages/engine[worker,dev,face]'
cp apps/web/.env.example apps/web/.env.local # fill in what you need; most keys are optional
npm run dev # web on http://127.0.0.1:3000
npm run dev checks Docker, starts the local Supabase stack if needed, loads its keys, and
runs Next.js and the worker together. Without the worker, jobs sit in queued with no error.
Sign-in is Google OAuth. For local sign-in through the UI, create an OAuth client and set
SUPABASE_AUTH_GOOGLE_CLIENT_ID / SUPABASE_AUTH_GOOGLE_SECRET (see supabase/config.toml);
the test suites sign in with a password through the Auth API and need no Google setup.
AI features need three provider keys: Anthropic (agents and moderation),
fal (images, video, voice and sound, plus image safety checks) and ElevenLabs (transcripts). With OPENCMO_AGENT_FAKE=1 and OPENCMO_AI_FAKE=1 the app runs
with deterministic fake providers, which is what the tests use.
npm run db:reset && npm run db:test # migrations + pgTAP
cd packages/engine && .venv312/bin/python -m pytest -q && .venv312/bin/python -m ruff check .
cd ../.. && npm run typecheck && npm run build
npm run test:editor-core && npm run test:clip-doc && npm run test:clip-render
cd apps/web && npm run check:contracts && npm run test:e2e
See CONTRIBUTING.md for the full list and what each check covers.
Issues and pull requests are welcome — start with CONTRIBUTING.md and the Code of Conduct. Report security issues privately as described in SECURITY.md.
OpenCMO is licensed under the GNU Affero General Public License v3.0 only (LICENSE). If you run a modified version as a network service, the AGPL requires you to offer its source code to that service's users.
Bundled fonts, icons, emoji and animations keep their own licenses — see THIRD_PARTY_NOTICES.md.
The OpenCMO name and logo are trademarks of the OpenCMO project and are not licensed under the AGPL. Forks must use a different name and logo.