[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Schedule Ghost posts and send them as a newsletter

> Draft a Ghost post from your notes, schedule it for a set time and send it as a newsletter to all, free or paid members. Hosted, nothing to maintain.

Source: https://cotlet.dev/integrations/ghost-api-mcp-server/schedule-newsletter-posts

The weekly issue starts as notes, and every week someone turns them into a post, adds tags, opens the publish menu, picks the newsletter and the audience and sets the time.

Cotlet does it in your own Ghost account with list\_newsletters, list\_tags, create\_draft\_post, get\_post and schedule\_post, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=ghost) [All Ghost tools](https://cotlet.dev/integrations/ghost-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Ghost do this on its own?

Ghost Admin schedules a post or a newsletter for later, and the Admin API does the same with status scheduled and a future published\_at (checked 17 Oct 2026). Both start after someone has written the post and chosen the newsletter and the audience. The API also needs a signed token on every call and a newsletter slug looked up first. Nothing in Ghost turns your notes into a draft and schedules it.

## How you do it in Ghost today

1. In Ghost Admin the author writes the post in the editor and uses the post settings menu to set the URL, tags, post access (Public, Members only, Paid-members only or Specific tiers) and authors.
2. Preview, at the top right of the editor or with Ctrl/Cmd + P, shows the post on the web and in email on desktop and mobile, and can send a test email to the author.
3. The publishing menu at the top of the editor offers to publish the post, deliver it as an email newsletter, or both, to a segment of the audience.
4. Schedule for later sets the date and time, and Ghost uses the timezone from Settings > General.
5. Email only goes out if newsletter sending is switched on under Settings > Membership > Email newsletter, so a new site or a new newsletter can fail on the first Monday.

## How to schedule Ghost posts and send them as a newsletter

Prompt

```
Write this week's issue from my notes below as a Ghost draft tagged "Weekly". Check the draft with me, then schedule it for Monday 9:00 and send it to all members on the weekly newsletter.
```

1. 01  
### Find the newsletter  
list\_newsletters returns each newsletter with its slug and whether it is active or archived. Archived ones are skipped, because Ghost no longer offers them when publishing. With two active newsletters the agent asks which one.
2. 02  
### Reuse your tags  
list\_tags runs first. Ghost creates a tag it cannot match by name, so "weekly" next to an existing "Weekly" would become a second tag. The agent uses the exact name that exists.
3. 03  
### Write the draft  
create\_draft\_post saves the issue from your notes as a draft with the tags, the access level you named and the authors. A draft reaches nobody, so this step needs no OK.
4. 04  
### Read it back  
get\_post returns the draft as Ghost stored it. The agent reports title, tags, access and excerpt, and flags HTML that Ghost converted differently from the source.
5. 05  
### Schedule and send  
schedule\_post sets published\_at to the time you gave and passes the newsletter slug and the audience. It asks for your OK first, because at that time the post goes public and the email goes out.

### What you get back

Example data

```
Draft created: "Issue 42: pricing notes" (tags Weekly, access Public)
Newsletter: weekly-roundup, active
Scheduled for Mon 19 Oct 2026 09:00 UTC
Audience: all members subscribed to weekly-roundup
Status: scheduled
```

### Other ways to ask

- Schedule it for free members only on Monday, and for paid members on Wednesday, as two posts.
- Create the draft only, do not schedule it, and show me the preview text.
- Every Friday, turn my notes into a draft for next week and leave it in draft for me.
- Schedule this post without an email, only as a post on the site.

## What Ghost allows, and what to know first

- An email is sent only if an active newsletter is passed when the post is published or scheduled, so a post scheduled without one goes out on the site alone.
- The audience can be all members, free members or paid members, and Ghost applies it to the members subscribed to the chosen newsletter.
- At the scheduled time the post becomes published; an email-only post gets the status sent instead.
- If the email status comes back as failed, Ghost retries only after the post goes back to draft and is published again.
- Self-hosted Ghost sends bulk email through Mailgun, and Ghost(Pro) includes email delivery.

schedule\_post asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.

Sources: [Ghost Help: Publishing and scheduling](https://ghost.org/help/publishing-content/) · [Ghost Help: Preparing posts for publishing](https://ghost.org/help/publishing-options/) · [Ghost Developer Docs: Scheduling a post](https://docs.ghost.org/admin-api/posts/scheduling-a-post) · [Ghost Developer Docs: Sending a post via email](https://docs.ghost.org/admin-api/posts/sending-a-post) · [Ghost Developer Docs: Email newsletters](https://docs.ghost.org/newsletters)

## Call schedule\_post from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/ghost/posts/6710a1c2f3e4d500a1b2c3d4/schedule \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"publish_at":"2026-10-19T09:00:00.000Z","newsletter":"weekly-roundup","send_to":"all"}'
```

Example response

```
{
"post": {
"id": "6710a1c2f3e4d500a1b2c3d4",
"title": "Issue 42: pricing notes",
"status": "scheduled",
"published_at": "2026-10-19T09:00:00.000Z",
"newsletter": "weekly-roundup",
"send_to": "all"
}
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is ghost\_write → schedule\_post. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/ghost-api-mcp-server.md#automations)

## Ghost tools this automation uses

__Cotlet Ghost tools used to schedule Ghost posts and send them as a newsletter__
| Tool | Parameters |
| ------------------- | ------------------------------------------- |
| list\_newsletters | none |
| list\_tags | page, limit |
| create\_draft\_post | title, content, tags, access, excerpt |
| get\_post | post\_id, format |
| schedule\_post | post\_id, publish\_at, newsletter, send\_to |

[All 14 Ghost tools with descriptions](https://cotlet.dev/integrations/ghost-api-mcp-server.md#tools)

## Frequently asked questions

### Can I send the issue to free members only?

Yes. send\_to takes all, free or paid. Ghost applies it to the members subscribed to the chosen newsletter, so a free-only send leaves paid members out.

### Is it safe to connect Ghost to Cotlet?

Yes. You sign in to Ghost yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Ghost once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Ghost automations

- [Label Ghost members by where they signed up](https://cotlet.dev/integrations/ghost-api-mcp-server/label-members-by-signup-source.md)
- [Unsubscribe unengaged Ghost members from email](https://cotlet.dev/integrations/ghost-api-mcp-server/unsubscribe-unengaged-members.md)
- [Ghost API and MCP server: every tool](https://cotlet.dev/integrations/ghost-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Ghost.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Ghost.

[Sign up free](https://cotlet.dev/app/signup?app=ghost)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
