ChatbotX
오픈소스 ManyChat 대안, AI용으로 제작
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Self-hosted social media scheduling. Connect your accounts with one click, write a post once, publish it everywhere — now or later.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Self-hosted marketing for a business: social media posts, online ads, print, letters by post and video or radio spots, planned in campaigns with one brand and one recurring brand character. Connect your accounts with one click, write once, publish everywhere.
Documentation: schulzoli.github.io/MarketingAsAService: getting started, configuration, a guide for every network, and the marketing tools.
/canvas#n=network:instagram, /canvas#@x,y,zoom).| Flow builder | Composing through a flow |
|---|---|
| Calendar | Auf Deutsch |
|---|---|
| A campaign | A print-ready flyer | AI drafts |
|---|---|---|
| Aurora | Paper | Blueprint |
|---|---|---|
Phases 0 (foundation), 1 (uploads, editing, calendar, teams, email, Bluesky sign-in, German and English) and 2 (the bridge: every network without app reviews, through Zernio) are done, and so is marketing beyond social media (brand kit, campaigns, print and letters, spots, paid ads, the AI studio). Phase 3 is prepared: every network integration is implemented, and each server's admin chooses per network between their own developer app, the Zernio bridge, or switching it off (guide). Every server registers its own apps; the project applies for none on anyone's behalf. MarketingAsAService serves the about, privacy, terms, imprint and data deletion pages the reviews ask for (docs/legal.md). Networks become "live-verified" as operators run them with their own apps (docs/platforms.md). The canvas with flows is the main interface (the classic list pages remain under “List view”); its look comes from theme plugins. Roadmap: docs/plan.md.
Requirements: Node 22+, Docker.
npm install
cp .env.example .env
sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$(openssl rand -base64 32)|" .env
npm run services:up # Postgres on localhost:5432
docker compose exec postgres psql -U maas -c "CREATE DATABASE maas_test" # for tests
npm run db:migrate
npm run dev # web on http://localhost:3000 + worker
Sign up, add a Sandbox account and schedule a post. Put #fail or #flaky in the text to see error handling.
cp .env.example .env # set ENCRYPTION_KEY, APP_URL, POSTGRES_PASSWORD
docker compose --profile app up -d --build
This starts Postgres, runs migrations, and launches the web app (port 3000) and the worker. Put a reverse proxy with HTTPS in front of the web app and set APP_URL to the public URL — OAuth callbacks and links in emails depend on it. The proxy should set X-Forwarded-For; login rate limits per IP rely on it (limits per email address do not).
| Variable | Required | Description |
|---|---|---|
DATABASE_URL | yes | Postgres connection string |
ENCRYPTION_KEY | yes | 32 random bytes, base64 (openssl rand -base64 32). Encrypts account tokens; do not change after accounts are connected |
APP_URL | yes | Public URL without trailing slash |
ENABLE_SANDBOX | no | true shows the fake Sandbox network |
WORKER_POLL_INTERVAL_MS | no | How often the worker checks for due posts (default 10000) |
MEDIA_STORAGE | no | local (default) keeps uploads in MEDIA_DIR (a Docker volume), s3 uses any S3-compatible storage (S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, see .env.example) |
MEDIA_MAX_VIDEO_MB | no | Largest video upload (default 512; images up to 20 MB) |
SMTP_URL | no | Outgoing mail for password resets, invites, email confirmation and failed-post alerts, e.g. smtp://user:[email protected]:587. Without it, emails are printed to the log |
MAIL_FROM | no | Sender address, e.g. MarketingAsAService <[email protected]> |
OPERATOR_NAME, OPERATOR_EMAIL | for app reviews | Who runs the server. Turns on /about, a privacy policy, terms and data deletion instructions; with OPERATOR_ADDRESS also an imprint. LEGAL_*_URL links your own pages instead. See docs/legal.md |
<NETWORK>_CLIENT_ID / _CLIENT_SECRET | no | Operator developer apps, e.g. INSTAGRAM_CLIENT_ID. See docs/platforms.md |
apps/web Next.js app: canvas (components/world), list pages, server actions, OAuth callbacks
apps/web/messages UI texts in English and German, one catalog per area
apps/worker Worker: publishes due posts, sends letters, reads ad numbers
packages/core Posts, accounts, flows, campaigns, print, ads, AI studio, theme plugins, publishing loop, encryption
packages/db Drizzle schema + SQL migrations
packages/providers Network and ad platform integrations behind common interfaces
docs/ Documentation website: guides per network, marketing, plan, screenshots
The UI is in English and German. Texts live in typed catalogs — apps/web/messages/*.ts for the app, packages/core/src/messages.ts for errors and emails, packages/providers/src/messages.ts for validation and network texts. Each catalog has an en and a de object, and TypeScript refuses a German catalog that misses a message or takes other values. To add a language, add it to locales in packages/providers/src/i18n.ts and follow the type errors.
| Command | What it does |
|---|---|
npm run dev | Web app + worker with hot reload |
npm test | Unit tests; integration tests run when TEST_DATABASE_URL is set |
npm run typecheck | TypeScript across all packages |
npm run build | Production builds of web and worker |
npm run db:generate | Create a migration after changing packages/db/src/schema.ts |
npm run db:migrate | Apply migrations |
Contributions are welcome — bug reports, ideas, translations and code. Read CONTRIBUTING.md for the setup, checks and conventions, and report security problems privately as described in SECURITY.md. Everyone taking part follows the code of conduct.
MarketingAsAService is open source under the MIT License. Its dependencies have their own licenses, almost all MIT, Apache-2.0, ISC or BSD; the image library sharp that Next.js installs includes libvips under LGPL-3.0.
HIDE_NETWORKS | no | Network ids you don't offer at all, e.g. x,tiktok |
ZERNIO_API_KEY | no | Connects every network without a developer app through Zernio. ZERNIO_NETWORKS limits or forces the list, ZERNIO_ACCOUNT_PRICE (e.g. 6 or 5.50 EUR) shows cost estimates. See docs/bridge.md |
PINGEN_CLIENT_ID / _CLIENT_SECRET | no | Sends letters and postcards by post through Pingen. See docs/marketing/print.md |
GOOGLE_ADS_DEVELOPER_TOKEN, ENABLE_META_ADS | no | Turn on paid ads on Google Ads and Meta Ads with the Google and Facebook apps. See docs/marketing/ads.md |
ANTHROPIC_API_KEY | no | Turns on the AI studio (AI_MODEL picks the Claude model). See docs/marketing/ai-studio.md |