Connect Claude to blog-maker
Add blog-maker as a connector in Claude once, then manage your article briefs and drafts just by chatting. Setup takes about two minutes and you only do it once per device.
https://blog-maker.com/mcpBefore you start
You need a blog-maker account, and you should be signed in to blog-maker in the same browser you use to approve the connection.
Claude Desktop
- Open Claude Desktop, then Settings, then Connectors.
- Choose Add custom connector.
- Paste the connection URL above and confirm.
- A blog-maker tab opens. If you are signed in you go straight to the approval screen, otherwise sign in first.
- On the approval screen, check the access it asks for and choose Allow access.
- Back in Claude you are connected. Ask: what article ideas do I have?
Claude web (claude.ai)
- Open claude.ai, then Settings, then Connectors.
- Choose Add custom connector.
- Paste the connection URL above and confirm.
- Approve the connection in the blog-maker tab that opens.
- You are connected. Ask Claude about your briefs to test it.
Claude Code
- In Claude Code, run /mcp and add a connector.
- Use the connection URL above.
- Approve the connection in the browser window that opens.
- You are connected from the terminal.
What Claude can do
- •Find new topic ideas from your content gaps and Search Console, then turn the good ones into briefs.
- •Read, create and refine your article briefs, so the writing comes out better.
- •Read your articles, polish a draft, and check its status and scores.
- •Start the research and writing for an article you name (this uses your article quota).
- •Create WooCommerce product texts the same way (Basic plan or higher).
- •See where each brand publishes, so you know where content would go.
What stays in your hands
Claude reads and drafts for you. Publishing an article live is always a manual step you take in the blog-maker dashboard, so nothing goes public without your review.
Manage or disconnect
You can see and revoke the connection any time under Settings, then Connected apps. Revoking takes effect immediately.
Troubleshooting
- Claude cannot add the connector or the connection is refused
- Make sure the URL is exactly https://blog-maker.com/mcp with no trailing characters, and that you are signed in to blog-maker in the same browser.
- The approval screen says access denied or nothing happens
- You need to choose Allow access on the blog-maker approval screen. If you closed it, start adding the connector again to reopen it.
- Claude says it is no longer authorized or the token expired
- Reconnect from the Connect to Claude card on your dashboard, or check Settings, then Connected apps, in case the connection was revoked.
- I revoked the connection by mistake
- Just add the connector again with the same URL. A new approval creates a fresh connection.
- Did Claude publish something on its own?
- No. Claude can draft and prepare, but publishing is always a manual step you take in the dashboard.
Developer reference
blog-maker exposes a Model Context Protocol (MCP) server, so you can drive it from your own agent, not just from Claude's connector UI. This section is the technical contract.
Connection and OAuth
- •Endpoint: https://blog-maker.com/mcp (canonical for both blog-maker.com and blog-maker.de), over Streamable HTTP.
- •Auth is OAuth 2.1 with PKCE. Dynamic Client Registration (DCR) is supported, so your client can register itself.
- •Protected-resource metadata is advertised at /.well-known/oauth-protected-resource (RFC 9728) and referenced from the 401 challenge.
- •Access tokens last 1 hour, refresh tokens 30 days (request the offline_access scope). Idle sessions expire after 30 minutes.
- •One connection grants access to all of your brands. Isolation is enforced per user at the tool layer, not through per-brand scopes.
Scopes
Nine resource scopes gate the tools. Request only what your client needs; each tool checks its scope before it runs.
briefs:readRead briefs and topic gaps.briefs:writeCreate, edit and dismiss briefs.articles:readRead articles, exports and usage.articles:writeEdit article drafts and regenerate article images.articles:convertGenerate an article from a brief (spends a credit).products:readRead product texts and generation status.brand:readRead brand details, analytics and publish targets.brand:writeUpdate brand writing style, business goals and content-length settings; refresh the sitemap.products:writeCreate, regenerate and optimize product texts.
Tool catalog
38 tools, grouped by the access they need. Reads never mutate and are not rate-limited; writes create or change content.
- List brands you own or manage.
list_brandsbrand:read - Brand details: voice, language, compliance rules.
get_brandbrand:read - List briefs for a brand.
list_briefsbriefs:read - Brief details and outline.
get_briefbriefs:read - Discover topic opportunities from sitemap and pillars.
find_topic_gapsbriefs:read - Discover keyword gaps from Google Search Console.
find_from_gscbriefs:read - List articles for a brand.
list_articlesarticles:read - Get an article draft or its published version.
get_articlearticles:read - Poll article generation progress.
get_article_statusarticles:read - Export an article as Markdown plus frontmatter.
get_article_exportarticles:read - List configured publishing destinations. "funnelexpert"-type targets use the content_blocks format for articles (see /docs/content-blocks) and product_markdown for products.
list_publish_targetsbrand:read - Current credit usage and plan details: articles, podcast episodes, video conversions and keyword-cluster research runs.
get_usagearticles:read - First-party traffic and engagement analytics.
get_brand_analyticsbrand:read - Raw Google Search Console performance data.
get_gsc_performancearticles:read - List WooCommerce products for a brand.
list_productsproducts:read - Get a product's text.
get_productproducts:read - Poll product generation progress.
get_product_statusproducts:read - Export a product as Markdown plus frontmatter and a Product JSON-LD fragment without offers.
get_product_exportproducts:read - One-call onboarding checklist: briefs, GSC connection, length settings, clusters, remaining quota.
get_brand_healthbrand:read - List a brand's podcast episodes: processing status, feed inclusion, duration and the linked article.
list_podcast_episodesarticles:read - List a brand's newsletters, grouped by series.
list_newslettersarticles:read - Get a newsletter's structured content: subject, paragraphs, CTAs, signoff.
get_newsletterarticles:read - Export a newsletter as ready-to-paste plain text and HTML for an ESP.
get_newsletter_exportarticles:read
- Create content briefs for planning.
create_briefsbriefs:write - Edit a brief's outline, persona, keywords or title.
update_briefbriefs:write - Archive a brief.
dismiss_briefbriefs:write - Re-fetch and index the brand sitemap.
refresh_brand_sitemapbrand:write - Update writing style, business goals and content-length settings.
update_brandbrand:write - Accept or dismiss a brand's weekly focus-topic suggestions, batch-capable.
decide_pillarbrand:write - Generate an article from a brief (uses 1 credit, 3-5 min).
convert_brief_to_articlearticles:convert - Edit an article draft.
update_articlearticles:write - Correct, rewrite, expand, shorten or enrich one section or the whole article, applied directly with a revision snapshot.
refine_articlearticles:write - Regenerate an article's images.
regenerate_article_imagesarticles:write - Generate WooCommerce product text (1 credit, Basic plan or higher).
create_productproducts:write - Regenerate an existing product text.
regenerate_productproducts:write - Optimize product image assets.
optimize_product_imagesproducts:write - Turn a seed keyword plus a market (Cyprus, Germany or Greece) into a real, DataForSEO-backed keyword cluster and persist it as briefs. Counts against a monthly keyword-research quota (Basic 5, Pro 20, Partner 60).
plan_content_clusterbriefs:write - Generate a newsletter mail (mail 1 from an article, or the next follow-up in a series). Counts against a daily on-demand generation cap.
generate_newsletterarticles:write
How find_topic_gaps and plan_content_cluster cluster topics
find_topic_gaps groups its suggestions by topic and intent: it maps a new topic to an existing pillar when one clearly fits, or proposes a new shared cluster name across related suggestions when it does not. This is lightweight topical grouping from a single model call, not full search-volume research. For that depth, plan_content_cluster expands one seed keyword using real DataForSEO search data (related keywords, suggestions, autocomplete) checked against your existing content and Search Console rankings, then groups the results into at most one commercial page per intent plus supporting informational articles, saved directly as briefs. Each run counts against your monthly keyword-research quota. Like every newly added tool, it only shows up in Claude after you disconnect and reconnect the connector.
Rate limits
Write tools are limited to 20 calls per minute per user. Read tools are not rate-limited. Exceeding the write limit returns the rate-limit error below; try again after a minute.
Errors
Tool-level errors come back as a normal tool result flagged as an error, with a plain-language message (there are no numeric error codes). Authentication failures are an HTTP 401 with a WWW-Authenticate header.
HTTP 401 invalid_token: "A valid OAuth access token is required"Missing required scope: <scope>Rate limit reached: too many write operations. Try again in a minute.This brand is shared with you read-only; you cannot create or change its content.The tool failed. Please try again.No publish tool
There is deliberately no publish tool over MCP. Your agent can research, draft, edit and export, but taking an article live stays a manual step in the dashboard. Podcast hosting is mostly dashboard-only, too: uploading episode audio, editing show settings, cover upload and toggling feed distribution are not exposed. list_podcast_episodes and get_usage give your agent read-only visibility (processing status, feed inclusion, duration, and your remaining podcast/video-conversion quota) so it can reason about the show without touching it.
Podcast & video
Uploading episode audio, editing show settings, cover upload and toggling feed distribution stay dashboard-only, same as publishing an article (see "No publish tool" above). What your agent gets over MCP is read-only visibility: list_podcast_episodes returns each episode's processing status, feed inclusion, duration, play counts and the linked article, and get_usage reports your remaining podcast and video-conversion quota.
Each publish target renders a published episode as a plain <figure class="bm-podcast-player"> with a native <audio controls> element and a fallback link, so it works with zero setup anywhere. If you self-host on a plain WordPress site (no mylandingpage.ai plugin) and want the upgraded player with skip -10s/+20s and a seekbar, see the self-hosting guide linked below for the copy-paste CSS and JS.
RSS feed URLs
Each brand with an active podcast show publishes an audio feed and, if it has video episodes, a separate video feed. {brandPublicId} is the brand's publicId from list_brands (the same br_... value get_brand and list_publish_targets return).
https://blog-maker.com/podcast/{brandPublicId}/feed.xmlhttps://blog-maker.com/podcast/{brandPublicId}/video-feed.xmlThe markup a published episode renders as
This is what a podcast episode looks like in the published article's HTML. You don't write this; it's here so a receiver or agent knows what to expect.
<figure class="bm-podcast-player" data-bm-podcast="2"> <figcaption>Podcast episode: Show Name</figcaption> <audio controls preload="none" src="https://blog-maker.com/audio/podcasts/..."></audio> <p><a href="https://blog-maker.com/audio/podcasts/..." rel="noopener">Play the episode as audio, right in your browser</a></p> </figure>
Full self-hosting guide (copy-paste CSS and JS for the upgraded player, plus why it's self-hosted and not linked from blog-maker.com):
Self-hosting the podcast player ->