> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shipstar.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# generate_blog_post

> Kick off a blog post generation from recent commits

Kicks off background generation of a blog post drawing from commits on the project's tracked repositories.

## Arguments

| Name | Type | Default | Description |
| - | - | - | - |
| `start_date` | string (ISO-8601) | 7 days ago | Earliest commit timestamp to consider. |
| `end_date` | string (ISO-8601) | now | Latest commit timestamp to consider. |
| `product_name` | string | project name | Override the product name. |
| `idea` | object | *none* | Optional idea to steer the post. See below. |
| `blog_options` | object | *none* | `{ "length": "short" \| "long", "seo": boolean, "focus": "multi_feature" \| "single_feature" }` — see below. |
| `audience` | `"technical"` \| `"business"` \| `"mixed"` | project default | Technical depth of the writing. Omit to use the project's [content guidelines](/guides/content-guidelines) default. |
| `instructions` | string (≤ 2000 chars) | project default | Free-text guidance on scope, tone, or terminology, e.g. `"British spelling; do announce docs-site changes"`. Omit to use the project default. |
| `repos` | string\[] | all tracked repos | Restrict the commit source to these tracked repositories (full names, e.g. `["acme/backend"]`), as listed by [`get_project_context`](/mcp/project/get-project-context). Omit to use every active tracked repo. |

### `idea` object

Pair with [`generate_blog_post_ideas`](/mcp/generation/generate-blog-post-ideas) to pick an angle first, then pass one of the returned ideas back here.

```json theme={null}
{
  "title": "Ship faster with webhook retries",
  "summary": "We shipped per-endpoint retry budgets this week...",
  "angle": "Reliability story for platform teams",
  "category": "Engineering"
}
```

### `blog_options` object

| Key | Values | Default |
| - | - | - |
| `length` | `"short"` (600–1000 words) or `"long"` (1200–1800 words) | `"short"` |
| `seo` | `true` to include a target keyword, meta description, and related topics | `false` |
| `focus` | `"multi_feature"` (roundup) or `"single_feature"` (deep-dive on one feature) | `"multi_feature"` |

`blog_options.focus` controls *breadth*; to steer *what to include or leave out*, use `instructions`.

## Returns

```json theme={null}
{
  "content_id": "7f5e2c1a-...",
  "status": "pending"
}
```

Poll `list_blog_posts` / `get_blog_post` once the background task completes.

## Example prompts

> "Brainstorm three blog post ideas from this week's commits, pick the one about the new webhook retries, and kick off generation."

> "Draft a blog post covering everything we shipped in March."


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.