# publish_post

> Create or update a Blogizi post and publish immediately (cancels any schedule).

HTML version: https://blogizi.com/docs/mcp-publish-post
Markdown version: https://blogizi.com/docs/mcp-publish-post.md

Upserts by slug and always publishes **immediately** (cancels any pending schedule). For a future go-live, use `scheduledAt` on draft/update or [schedule_post](/docs/mcp-schedule-post).

## Arguments

- `title`, `slug` — required
- `description`, `keyword`, `content` — optional
- `coverImageUrl` — optional public cover URL
- `ctaTitle`, `ctaSubtitle`, `ctaButtonLabel`, `ctaButtonUrl` — optional per-post CTA override
- `sidebarCtaTitle`, `sidebarCtaText`, `sidebarCtaBullets` (string array), `sidebarCtaButtonLabel`, `sidebarCtaButtonUrl` — optional per-post sidebar CTA override (title, button label, and URL required together)
- `projectSlug` — required when the account has more than one project

## Example result

```json
{
  "created": false,
  "url": "https://my-app.app.blogizi.com/how-we-built-our-auth-flow",
  "project": { "id": "665f…", "slug": "my-app" },
  "post": {
    "id": "666a…",
    "title": "How we built our auth flow",
    "slug": "how-we-built-our-auth-flow",
    "status": "published",
    "scheduledAt": null
  }
}
```
