Systeme.io logo

Systeme.io automation

Publish Systeme.io blog posts from Markdown

You write posts in Markdown or a doc. Each one then gets rebuilt by hand in the Systeme.io blog: the Create popup, the page editor, and finally Activate.

Cotlet does it in your own Systeme.io account with list_blog_posts, create_blog_post and activate_blog_post, called by your AI agent, an n8n workflow or a script.

Hosted · nothing to install or maintain

Official options

Can Systeme.io do this on its own?

Systeme.io's public API and MCP server have no blog endpoints (checked 12 Oct 2026). The MCP server covers contacts, emails, funnels, products and courses, so posts are created only in the blog section of the dashboard.

By hand

How you do it in Systeme.io today

  1. Go to Sites > Blogs, click the title of your blog, open Posts and click Create.
  2. Fill in the Systeme.io popup: Title, Short description, URL Path, Image and Categories, then click Save.
  3. Click the three dots next to the new post and choose Edit to build the content in the editor, heading by heading.
  4. Back in Posts, click the three dots again and choose Activate so the post shows on the blog.
  5. Every post repeats the popup, the editor and the activation. A category that does not exist yet has to be created first under Categories before the popup can offer it.

With an agent

How to publish Systeme.io blog posts from Markdown

Prompt

Publish the three Markdown drafts in /posts to my Systeme.io blog in the Marketing category. Create them all, then activate them after I check.
  1. 01

    Check what is already there

    list_blog_posts shows existing titles and paths. A draft whose path is already taken is held back and reported, since a second post on the same topic usually means the draft was published before.

  2. 02

    Match categories, never invent them

    Category names from the draft are compared with the blog's categories. A missing one stops that draft, and the agent tells you to add it under Categories first.

  3. 03

    Fill the fields readers see

    The agent takes the title from the first heading and writes the short description from the opening paragraph, because the post list page shows it on every card. The path comes from the title in lowercase.

  4. 04

    Create first, activate later

    Each draft is saved inactive with create_blog_post. The agent lists them with their paths and activates only the posts you approve, one call each.

What you get back

Example data

Blog "Course Creator Notes": 3 drafts read.
"Five email mistakes before a launch": created inactive, path five-email-mistakes-before-a-launch, Marketing.
"Pricing your first course": created inactive, path pricing-your-first-course, Marketing.
"Webinar checklist": skipped, the path webinar-checklist already exists (active since 4 Sep).
Activated after your OK: "Five email mistakes before a launch".

Other ways to ask

  • Publish draft.md today in Marketing and Courses, with cover.jpg from my site as the main image.
  • Create every draft in /posts as inactive posts and tell me which categories are missing.
  • Every Tuesday, activate the oldest inactive post on my blog and tell me which one went live.

Before you automate it

What Systeme.io allows, and what to know first

  • A new Systeme.io blog starts with default posts and three default categories, which you rename or delete under Posts and Categories.
  • Each Systeme.io blog category has its own Name, Path, Description, SEO title and SEO description.
  • The Systeme.io post list page shows each post's category, title, publication date and short description, taken from the values entered when the post was created.
  • Systeme.io generates an RSS feed for every blog, and the feed shows only the 20 most recently published posts.

activate_blog_post asks for your OK by default. To run it on a schedule without you, switch confirmation off for that tool in your dashboard.

Sources: Systeme.io Help: how to create a blog post · Systeme.io Help: how to create a blog category · Systeme.io Help: how to configure the post list page · Systeme.io Help: RSS feed for your blog

REST

Call create_blog_post from a script

curl

curl https://cotlet.dev/api/v1/systeme-io/create_blog_post \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"blog_id":"blog_3302","title":"Five email mistakes before a launch","body_markdown":"Most launches lose sales in the emails, not the page...","description":"Five fixes to make before your next launch email goes out.","categories":["Marketing"]}'

Example response

{
  "post_id": "bp_5521",
  "blog_id": "blog_3302",
  "title": "How we cut onboarding time in half",
  "categories": [
    "Marketing"
  ],
  "active": false
}

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is systeme-io_create_blog_post. Example data.

Schedule it in n8n, Make, Zapier or cron

Tools

Systeme.io tools this automation uses

Cotlet Systeme.io tools used to publish Systeme.io blog posts from Markdown
Tool Parameters
list_blog_posts blog_id, limit
create_blog_post blog_id, title, body_markdown, description, path, categories, image_url
activate_blog_post post_id
All 13 Systeme.io tools with descriptions

Give your agent access to Systeme.io.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Systeme.io.