Coding objects on white: a laptop with a code editor and chat bubble, a terminal card, sparkles and a plug joined to article cards
Blog integration

Connect with Vibe Coding

Built your site with Claude Code, Codex, Cursor or Lovable? Copy one prompt into it. It installs cmo.so, signs you in, builds your blog pages and connects them, and Maggie's articles start appearing on your site.

Free to start · About 15 minutes · Needs a verified website

Step 1 · Copy

Pick your tool, copy the prompt

Each prompt tells your tool how to install cmo.so, sign you in, add your website key, build the blog and switch publishing on. Type your website in the yellow box first: it fills in every highlighted spot.

Paste it into Claude Code, opened in your website's folder
Connect this website's codebase to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear on this site.

My website on cmo.so: example.com

1. Install cmo.so in this tool:
   - Run `npx @cmo-so/skills install -a claude --mcp`. It adds the cmo- skills to .claude/skills and the cmo-so MCP server to .mcp.json.
   - (If I'd rather use the plugin, tell me to type `/plugin marketplace add AI-Marketing-OS-LTD/cmo-so-skills` and then `/plugin install cmo-so-all@cmo-so` myself.)
   - Then ask me to run /mcp, choose cmo-so and Authenticate, and wait until I say it's done.
2. Sign in: run `npx @cmo-so/cli login`, show me the link and code it prints, and wait while I approve it in the browser. Then run `npx @cmo-so/cli workspaces` and check my website is listed (it must be verified in cmo.so).
3. Add the website key: run `npx @cmo-so/cli connect api-pull --workspace example.com`. It writes AICMO_API_KEY and AICMO_API_BASE_URL to .env. Never print the key, never commit .env, and never use the key in browser code.
4. Build the blog in this site's own framework and style:
   - A server-side job that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article (database, CMS or content files) so it is never lost, and make its slug from the title if there isn't one.
   - Run that job every hour (a cron job, scheduled function or build hook). Also read GET /updates, which brings improved versions of older articles, and update them in place.
   - Pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD. Add the articles to the sitemap.
5. Run the site, fetch once, and show me /blog with the first article.
6. When I say it looks right, run `npx @cmo-so/cli connect api-pull --workspace example.com --enable` so cmo.so delivers my articles this way (it stops publishing to any other platform for this website). Then tell me what to deploy.
Paste it into Codex (CLI, IDE or the ChatGPT app), in your website's folder
Connect this website's codebase to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear on this site.

My website on cmo.so: example.com

1. Install cmo.so in this tool:
   - Run `npx @cmo-so/skills install -a codex` to add the cmo- skills to .agents/skills.
   - Run `codex mcp add cmo-so --url https://mcp.cmo.so/mcp`, then `codex mcp login cmo-so` and wait while I sign in in the browser.
2. Sign in: run `npx @cmo-so/cli login`, show me the link and code it prints, and wait while I approve it in the browser. Then run `npx @cmo-so/cli workspaces` and check my website is listed (it must be verified in cmo.so).
3. Add the website key: run `npx @cmo-so/cli connect api-pull --workspace example.com`. It writes AICMO_API_KEY and AICMO_API_BASE_URL to .env. Never print the key, never commit .env, and never use the key in browser code.
4. Build the blog in this site's own framework and style:
   - A server-side job that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article (database, CMS or content files) so it is never lost, and make its slug from the title if there isn't one.
   - Run that job every hour (a cron job, scheduled function or build hook). Also read GET /updates, which brings improved versions of older articles, and update them in place.
   - Pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD. Add the articles to the sitemap.
5. Run the site, fetch once, and show me /blog with the first article.
6. When I say it looks right, run `npx @cmo-so/cli connect api-pull --workspace example.com --enable` so cmo.so delivers my articles this way (it stops publishing to any other platform for this website). Then tell me what to deploy.
Paste it into Cursor's Agent chat, with your website's project open
Connect this website's codebase to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear on this site.

My website on cmo.so: example.com

1. Install cmo.so in this tool:
   - Run `npx @cmo-so/skills install -a cursor` to add the cmo- skills.
   - Add the MCP server to .cursor/mcp.json: {"mcpServers": {"cmo-so": {"url": "https://mcp.cmo.so/mcp"}}}, then ask me to sign in to cmo-so under Settings → MCP.
2. Sign in: run `npx @cmo-so/cli login`, show me the link and code it prints, and wait while I approve it in the browser. Then run `npx @cmo-so/cli workspaces` and check my website is listed (it must be verified in cmo.so).
3. Add the website key: run `npx @cmo-so/cli connect api-pull --workspace example.com`. It writes AICMO_API_KEY and AICMO_API_BASE_URL to .env. Never print the key, never commit .env, and never use the key in browser code.
4. Build the blog in this site's own framework and style:
   - A server-side job that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article (database, CMS or content files) so it is never lost, and make its slug from the title if there isn't one.
   - Run that job every hour (a cron job, scheduled function or build hook). Also read GET /updates, which brings improved versions of older articles, and update them in place.
   - Pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD. Add the articles to the sitemap.
5. Run the site, fetch once, and show me /blog with the first article.
6. When I say it looks right, run `npx @cmo-so/cli connect api-pull --workspace example.com --enable` so cmo.so delivers my articles this way (it stops publishing to any other platform for this website). Then tell me what to deploy.
Paste it into Gemini CLI, started in your website's folder
Connect this website's codebase to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear on this site.

My website on cmo.so: example.com

1. Install cmo.so in this tool:
   - Run `npx @cmo-so/skills install -a gemini` to add the cmo- skills.
   - Run `gemini mcp add --transport http cmo-so https://mcp.cmo.so/mcp` and wait while I sign in when it asks.
2. Sign in: run `npx @cmo-so/cli login`, show me the link and code it prints, and wait while I approve it in the browser. Then run `npx @cmo-so/cli workspaces` and check my website is listed (it must be verified in cmo.so).
3. Add the website key: run `npx @cmo-so/cli connect api-pull --workspace example.com`. It writes AICMO_API_KEY and AICMO_API_BASE_URL to .env. Never print the key, never commit .env, and never use the key in browser code.
4. Build the blog in this site's own framework and style:
   - A server-side job that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article (database, CMS or content files) so it is never lost, and make its slug from the title if there isn't one.
   - Run that job every hour (a cron job, scheduled function or build hook). Also read GET /updates, which brings improved versions of older articles, and update them in place.
   - Pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD. Add the articles to the sitemap.
5. Run the site, fetch once, and show me /blog with the first article.
6. When I say it looks right, run `npx @cmo-so/cli connect api-pull --workspace example.com --enable` so cmo.so delivers my articles this way (it stops publishing to any other platform for this website). Then tell me what to deploy.
Paste it into Windsurf's Cascade, with your website's project open
Connect this website's codebase to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear on this site.

My website on cmo.so: example.com

1. Install cmo.so in this tool:
   - Run `npx @cmo-so/skills install -a windsurf` to add the cmo- skills to .windsurf/skills.
   - Ask me to add a remote MCP server named cmo-so with the URL https://mcp.cmo.so/mcp in Windsurf's MCP settings and sign in.
2. Sign in: run `npx @cmo-so/cli login`, show me the link and code it prints, and wait while I approve it in the browser. Then run `npx @cmo-so/cli workspaces` and check my website is listed (it must be verified in cmo.so).
3. Add the website key: run `npx @cmo-so/cli connect api-pull --workspace example.com`. It writes AICMO_API_KEY and AICMO_API_BASE_URL to .env. Never print the key, never commit .env, and never use the key in browser code.
4. Build the blog in this site's own framework and style:
   - A server-side job that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article (database, CMS or content files) so it is never lost, and make its slug from the title if there isn't one.
   - Run that job every hour (a cron job, scheduled function or build hook). Also read GET /updates, which brings improved versions of older articles, and update them in place.
   - Pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD. Add the articles to the sitemap.
5. Run the site, fetch once, and show me /blog with the first article.
6. When I say it looks right, run `npx @cmo-so/cli connect api-pull --workspace example.com --enable` so cmo.so delivers my articles this way (it stops publishing to any other platform for this website). Then tell me what to deploy.
Paste it into Copilot Chat in Agent mode, with your website's project open
Connect this website's codebase to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear on this site.

My website on cmo.so: example.com

1. Install cmo.so in this tool:
   - Run `npx @cmo-so/skills install -a copilot` to add the cmo- skills for GitHub Copilot.
   - Add the MCP server to .vscode/mcp.json: {"servers": {"cmo-so": {"type": "http", "url": "https://mcp.cmo.so/mcp"}}}, then ask me to start it and sign in.
2. Sign in: run `npx @cmo-so/cli login`, show me the link and code it prints, and wait while I approve it in the browser. Then run `npx @cmo-so/cli workspaces` and check my website is listed (it must be verified in cmo.so).
3. Add the website key: run `npx @cmo-so/cli connect api-pull --workspace example.com`. It writes AICMO_API_KEY and AICMO_API_BASE_URL to .env. Never print the key, never commit .env, and never use the key in browser code.
4. Build the blog in this site's own framework and style:
   - A server-side job that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article (database, CMS or content files) so it is never lost, and make its slug from the title if there isn't one.
   - Run that job every hour (a cron job, scheduled function or build hook). Also read GET /updates, which brings improved versions of older articles, and update them in place.
   - Pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD. Add the articles to the sitemap.
5. Run the site, fetch once, and show me /blog with the first article.
6. When I say it looks right, run `npx @cmo-so/cli connect api-pull --workspace example.com --enable` so cmo.so delivers my articles this way (it stops publishing to any other platform for this website). Then tell me what to deploy.
Paste it into OpenCode, started in your website's folder
Connect this website's codebase to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear on this site.

My website on cmo.so: example.com

1. Install cmo.so in this tool:
   - Run `npx @cmo-so/skills install -a opencode` to add the cmo- skills.
   - Ask me to add a remote MCP server named cmo-so with the URL https://mcp.cmo.so/mcp to opencode.json and sign in.
2. Sign in: run `npx @cmo-so/cli login`, show me the link and code it prints, and wait while I approve it in the browser. Then run `npx @cmo-so/cli workspaces` and check my website is listed (it must be verified in cmo.so).
3. Add the website key: run `npx @cmo-so/cli connect api-pull --workspace example.com`. It writes AICMO_API_KEY and AICMO_API_BASE_URL to .env. Never print the key, never commit .env, and never use the key in browser code.
4. Build the blog in this site's own framework and style:
   - A server-side job that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article (database, CMS or content files) so it is never lost, and make its slug from the title if there isn't one.
   - Run that job every hour (a cron job, scheduled function or build hook). Also read GET /updates, which brings improved versions of older articles, and update them in place.
   - Pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD. Add the articles to the sitemap.
5. Run the site, fetch once, and show me /blog with the first article.
6. When I say it looks right, run `npx @cmo-so/cli connect api-pull --workspace example.com --enable` so cmo.so delivers my articles this way (it stops publishing to any other platform for this website). Then tell me what to deploy.
Paste it into the chat of Lovable, Bolt, v0 or Replit
Connect this website to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear here.

My website on cmo.so: example.com

1. Ask me for my website key and store it as a secret named AICMO_API_KEY (never in the page code). I create it in the cmo.so app: Posts → Connect your website → Any site → Set up now → Create key.
2. Add AICMO_API_BASE_URL = https://api.cmo.so as a setting.
3. Add a server function (an edge or backend function, never the browser) that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article in the project's database, and make its slug from the title if there isn't one.
4. Run that function every hour with a scheduled job, and also read GET /updates for improved versions of older articles.
5. Add pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD, and add the articles to the sitemap.
6. Fetch once and show me /blog with the first article. When I'm happy, remind me to turn on API publishing for my website in the cmo.so app.
Pi, Amp, Cline, Goose, Kiro, Roo or any agent that can run commands
Connect this website's codebase to cmo.so, so the blog articles Maggie (my AI CMO at cmo.so) writes for my website appear on this site.

My website on cmo.so: example.com

1. Install cmo.so in this tool:
   - Work out which coding agent you are. Add the cmo- skills with `npx @cmo-so/skills install -a <agent>`, where <agent> is one of: claude, codex, pi, cursor, gemini, opencode, copilot, windsurf, amp, cline, goose, kiro, qwen, trae, roo, kilo, augment, droid, openhands, antigravity. In Pi, run `pi install npm:@cmo-so/skills` instead. If your agent isn't listed, run `npx skills add AI-Marketing-OS-LTD/cmo-so-skills -a <agent>`, or read the skills at https://github.com/AI-Marketing-OS-LTD/cmo-so-skills.
   - Connect the cmo-so MCP server: if you can add a remote (HTTP) MCP server, use the URL https://mcp.cmo.so/mcp and ask me to sign in; if you can only run MCP servers as a command (as in Pi), run `npx @cmo-so/cli login` once and add the command `npx -y @cmo-so/mcp`. If you can't use MCP at all, skip this: the steps below only need the CLI.
2. Sign in: run `npx @cmo-so/cli login`, show me the link and code it prints, and wait while I approve it in the browser. Then run `npx @cmo-so/cli workspaces` and check my website is listed (it must be verified in cmo.so).
3. Add the website key: run `npx @cmo-so/cli connect api-pull --workspace example.com`. It writes AICMO_API_KEY and AICMO_API_BASE_URL to .env. Never print the key, never commit .env, and never use the key in browser code.
4. Build the blog in this site's own framework and style:
   - A server-side job that calls GET {AICMO_API_BASE_URL}/posts with the header Authorization: Bearer {AICMO_API_KEY} (reference: https://api.cmo.so/docs). Each call returns the next new article (title, excerpt, category, keywords, featured picture with alt text, HTML and Markdown) or nothing. Save each article (database, CMS or content files) so it is never lost, and make its slug from the title if there isn't one.
   - Run that job every hour (a cron job, scheduled function or build hook). Also read GET /updates, which brings improved versions of older articles, and update them in place.
   - Pages /blog (newest first) and /blog/[slug], each with its title, meta description, canonical URL, featured picture with alt text and Article JSON-LD. Add the articles to the sitemap.
5. Run the site, fetch once, and show me /blog with the first article.
6. When I say it looks right, run `npx @cmo-so/cli connect api-pull --workspace example.com --enable` so cmo.so delivers my articles this way (it stops publishing to any other platform for this website). Then tell me what to deploy.

The prompt never asks for your password. Your website key stays in .env or your secrets, never in browser code.

Step by step

What happens after you paste it

  1. Pick your tool and copy the prompt

    Choose Claude Code, Codex, Cursor, Gemini CLI, Windsurf, VS Code, OpenCode, Lovable, Bolt and v0, or Any other tool (Pi, Amp, Cline and more) above, and press Copy prompt. In the cmo.so app the same prompt is under Posts → Show me how → Vibe Coding, with your website already filled in.

    The Copy-paste prompt panel with tool tabs and a Copy prompt button
  2. Paste it in your website's project

    Open your tool in your website's folder (or project) and paste. If you didn't type your website in the box, change the highlighted example.com first. The tool reads the whole plan before it starts and asks you before anything that needs you.

    An AI coding assistant in a terminal with the cmo.so prompt pasted in
  3. Let it install cmo.so

    Your tool adds the cmo- skills and the cmo-so MCP server. In Claude Code you then run /mcp, choose cmo-so and Authenticate; other tools ask you to sign in the same way.

    A terminal with the cmo.so plugin installed and Authenticated
  4. Approve the sign-in

    The tool runs npx @cmo-so/cli login and shows you a link and a code. Open it, check the code, and press Approve on the cmo.so page. The tool then adds your website key to .env without printing it.

    Tip The code on the page must match the one in your tool. If it doesn't, press Deny.

    The cmo.so page asking to approve cmo CLI access, with Deny and Approve buttons
  5. Check your new blog

    The tool builds /blog and /blog/[slug] in your site's own style, with metadata, Article JSON-LD and sitemap entries, fetches the first article and shows you the page running.

    An AI coding assistant listing the blog pages it created
  6. Switch publishing on

    When you say it looks right, the tool runs npx @cmo-so/cli connect api-pull --enable. From then on cmo.so delivers your articles to your site, and stops publishing to any other platform for this website.

    A terminal confirming example.com now delivers posts by API pull
  7. Deploy, then approve articles

    Deploy your site as you normally do. Approve articles in the app under Posts → Ready, and each one appears at /blog on its schedule.

    A website blog page with a new article card next to a deploy tick
Before you start

What you need

  • A verified websiteYour website added to cmo.so and verified: by email, DNS (one tap with Cloudflare) or ask us.
  • Your site's code in an AI coding toolClaude Code, Codex, Cursor, Gemini CLI, Windsurf, VS Code, OpenCode, or a builder like Lovable, Bolt, v0 or Replit.
  • Node.js on your computerFor npx: the cmo.so skills and CLI install with it. Browser builders don't need it.
  • Somewhere the site runs on a scheduleA host with cron jobs, scheduled functions or build hooks, so it can ask for new articles every hour.

Used by 600+ users and trusted by teams at

  • aeglesriphal.com
  • moonlakespa.com
  • shop.theteagroup.com
  • clo100.com
  • logtrics.io
  • mymorez.com
  • nextidal.com
  • otisapp.com
  • storaitelling.com
  • theheatpumps.co.uk
  • web-translations.com
  • exposeai.tech
  • orielipo.com
  • whitelabelcrowd.fund
  • elliptic.co
  • med.moonlakespa.com
  • netdex.co.il
  • orawellness.uk
  • reenest.com
  • syngage.ai
  • thepenthouseliving.com
  • zengolf.studio
  • imaintain.uk
  • rebuildingsociety.com
  • aurasocial.world
  • goaimex.com
  • moneyparents.com
  • newgenrenewables.uk
  • osmosisai.co
  • saunders.ac
  • teeza.app
  • thursdayclub.com
Once it's connected

A blog built into your own code

Your design, your stack

The pages are written in your framework and styled like the rest of your site, not an embed or an iframe.

Ready for search and AI

Titles, meta descriptions, canonical URLs, Article JSON-LD and sitemap entries come with every article.

The key stays private

The CLI writes your website key into .env without printing it, and the prompt keeps it out of browser code.

Rewrites included

Improved versions of older articles arrive through /updates and replace the old ones in place.

Your tool can do more

With the cmo- skills and MCP server in place, ask your tool for SEO checks, social posts or your results, any time.

You approve first

Articles wait in Posts → Ready unless you let them run on their own.

Inside the app

Your marketing team, in your pocket

Real screens from the cmo.so app on iPhone.

The cmo.so app home screen: monthly posts, website health scores and an AI visibility chartAsk Maggie: a chat where Maggie reviews 30 days of SEO and AI visibilityConnect your social accounts: LinkedIn, Google Business, Facebook, Instagram, YouTube and TikTokMaggie prepared your plan: look, voice, writing style and posting frequencyWrite a post once for LinkedIn, Google Business, Facebook and Instagram
A laptop with a new blog article beside a phone with articles waiting for approval
Day to day

A week with Maggie in your codebase

On Monday you approve the week's articles from your phone.

Every hour your site asks cmo.so for the next one. When there is one it's saved and appears at /blog, already in your sitemap. You never open the code again unless you want to; when you do, ask your coding tool things like "what did cmo.so publish this week?" and it answers through the cmo-so MCP server.

Good to know

Things to watch

Put your website in first

Type it in the yellow box above the prompt, or change every highlighted example.com before you paste.

One publishing connection

Switching publishing on stops publishing to WordPress, Shopify or any other platform for this website.

Hosts that sleep

If your host can't run a job every hour, call the fetch from a build hook or a free cron service instead.

Review what it builds

It's your code: read the changes before you deploy, as you would for any pull request.

At a glance

Vibe Coding with cmo.so

Works with
Claude Code, Codex, Cursor, Gemini CLI, Windsurf, VS Code, OpenCode, Pi, Lovable, Bolt, v0, Replit
Installs
The cmo- skills and the cmo-so MCP server (https://mcp.cmo.so/mcp)
Signs in with
npx @cmo-so/cli login: a code you approve in the browser
Delivery
API pull: GET https://api.cmo.so/posts with your website key
Builds
/blog, /blog/[slug], metadata, Article JSON-LD, sitemap entries
Time it takes
About 15 minutes
Pricing

Cut the £5,900/mo marketing bill to £15/mo

Everything a marketing team does, done by Maggie.

What needs doingWithout cmo.soWith cmo.so
Full-time marketing hire£3,000/moIncluded
SEO and AI search (GEO) agency£1,000/moIncluded
Content writer, AI-assisted£500/moIncluded
Social media manager, freelance£800/moIncluded
Designed pictures for every post£300/moIncluded
SEO and GEO softwareRank tracking, site audits, AI visibility£250/moIncluded
AI writing and image tools£50/moIncluded
Working hoursOffice hours24/7
Total per month£5,900+From £15/mo

Typical UK costs for a small business in 2026, with AI already cutting freelance rates. Estimates only; your own quotes will vary.

Founding member pricingLock in these prices for good.For the first 500 members, until 1 January 2027.
75days left
FreeTry it out
£0forever
No card needed
  • 5 social posts, 30 once verified
  • 15 Maggie messages a day
  • Upgrade any time
Start free
AirGetting started
£15/mo
Lowest paid plan
  • 2 posts a day
  • 60 Maggie messages a day
  • All channels
Choose Air
MaxSeveral channels
£45/mo
£75Save 40%
  • 24 posts a day
  • 300 Maggie messages a day
  • All channels
Choose Max
UltraBusy teams
£65/mo
£115Save 43%
  • 48 posts a day
  • 600 Maggie messages a day
  • All channels
Choose Ultra
EliteAgencies, many brands
£105/mo
£195Save 46%
  • 96 posts a day
  • 1,000 Maggie messages a day
  • All channels
Choose Elite

Per website, billed monthly. Blog and social posts share one allowance; your best plan sets how much you can talk to Maggie across all your websites.

Questions

Vibe Coding: your questions

Still unsure?

Which coding tools does the prompt work with?

Claude Code, Codex, Cursor, Gemini CLI, Windsurf, VS Code (GitHub Copilot) and OpenCode each have their own tab, with the right commands to install the cmo- skills and the cmo-so MCP server. Pi works with the Claude Code or Codex prompt and `pi install npm:@cmo-so/skills`.

Browser builders such as Lovable, Bolt, v0 and Replit have no terminal, so their prompt skips the install: you create the website key in the cmo.so app and the builder stores it as a secret.

What does the prompt change in my code?

It adds a server-side job that fetches new articles from the cmo.so API every hour and saves them, pages at /blog and /blog/[slug] in your site's own framework and style, sitemap entries, and AICMO_API_KEY and AICMO_API_BASE_URL in .env. It's ordinary code in your repository: read the changes before you deploy, as you would for any pull request.

Is my website key safe?

Yes, if you keep to the prompt. `npx @cmo-so/cli connect api-pull` writes the key straight into .env without printing it, the prompt tells your tool never to put it in browser code or commit .env, and the API is only called from your server.

If a key ever leaks, create a new one in the app and revoke the old one; the new key works straight away.

Why does it ask me to approve a sign-in?

The cmo.so CLI signs in with a device code: your tool shows a link and a code, and you approve it on the cmo.so page while signed in to your account. The tool never sees your password. Check that the code matches before pressing Approve, and press Deny if it doesn't.

What does switching publishing on do?

`npx @cmo-so/cli connect api-pull --enable` tells cmo.so to deliver this website's articles by API pull. Each website has one publishing connection, so it stops publishing to WordPress, Shopify, Wix or any other platform for that website. Articles already published stay where they are.

How many articles will Maggie publish on your website?

New connections start at one article a day. You choose Posts per day in Publishing settings, up to your plan's limit: 1 before a plan, then 2 (Air), 12 (Pro), 24 (Max), 48 (Ultra) or 96 (Elite).

Each delivered article uses one post from your monthly allowance, and the app shows what's left. Turn Publishing off and written articles simply wait in order.

Can I edit an article before it reaches your website?

Yes. Open it in Posts → Ready: switch between Preview and Edit, change any words and Save. Rewrite asks Maggie for a new version with your note, Fix Markdown tidies the formatting, and Publish now sends it straight away on connections that support it.

Ideas for future articles sit in Posts → Ideas, where you can add your own, reorder the plan or delete any you don't want.

Will Maggie update older articles on your website?

If you want her to. In Publishing settings, Refresh older articles can be Off, When I ask or Automatic. Automatic uses a share of each day's posts (10 to 50%) for rewrites of articles older than 30, 60, 90 or 180 days.

Rewrites keep the same address, so links and search history stay; the Rewrite queue in Me shows what's suggested and what has been rewritten, and Search Console data steers which articles need it most.

What does the content guard check before a your website post goes out?

When it's on, the content guard reads each post before it goes out and checks it against your industry's rules (financial, medical, insurance, legal or education) and any rule you write yourself, such as never naming a competitor.

A post that may break a rule is held, as a draft on your website or in Review for social, with the reason and a suggested rewrite, even if posts normally go out on their own. You can see what it held and why in Publishing settings.

Can I check every your website post before it goes out?

Yes, and that's how it starts. New posts wait in the app (Posts → Ready for articles, Social → Review for social posts) until you approve them. You can edit any post, ask Maggie to change it in your own words, or delete it.

When you trust the results, switch the channel to go out on its own; the content guard keeps checking each post first and holds anything it isn't sure about. You can switch back, or pause, at any time.

How soon will your website bring results?

Your brand profile and the first drafts are ready within minutes of entering your website, and the first posts can go out the same day once you approve them.

Search traffic builds over weeks to months as Google and AI assistants find and trust your pages; social reach grows with regular posting. Connect Search Console to see which posts bring clicks, and Maggie uses it to choose what to improve.

Do I need to verify my website first?

Verifying proves the website is yours. It unlocks your 30 free posts and, for some connections, publishing itself. You can verify with a work email at your domain, a DNS TXT record (one tap if your domain is on Cloudflare), the WordPress plugin, or by asking us to check by hand, usually within one working day.

Free email addresses such as Gmail or Outlook can't be used for the email check.

Ready when you are

Let your coding tool build the blog

Enter your website. Your brand profile and first articles are ready in minutes, then paste the prompt.

  • Free plan, no card needed
  • You approve every post
  • Cancel any time

Start with your website

Free to start. No card needed.

Welcome back.

Sign in to cmo.so.

or
At least 8 characters.
New to cmo.so? Have an account? Prefer a password?

By continuing, you agree to our Terms of Service and Privacy Policy.