塑造个人品牌,发现细分市场,构建可持续盈利的产品
개인 브랜드 구축·세분화 시장 발굴·지속 가능한 수익 제품 만들기를 공유
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AI CMO for solo founders — plans the week, drafts posts, clips your videos. You approve everything that goes out.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
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.