> ## 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_banner

> Kick off generation of an announcement banner from recent commits

Analyses commits on the project's tracked GitHub repositories and kicks off a background task that writes an announcement banner: the single most impactful user-facing change of the period as a `headline` (≤ 80 chars), a one-sentence `body` (≤ 160 chars), and a `cta_label` (≤ 24 chars). Returns immediately with a pending content record. Costs 25 credits.

Publishing the draft ([`publish_content`](/mcp/lifecycle/publish-content)) makes it the project's live banner, **replacing the current one** under the same embed key — the site's snippet needs no change. Read it back with [`get_banner`](/mcp/banner/get-banner).

## Arguments

| Name | Type | Default | Description |
| - | - | - | - |
| `start_date` | string (ISO-8601) | 7 days ago | Earliest commit timestamp to include. |
| `end_date` | string (ISO-8601) | now | Latest commit timestamp to include. |
| `product_name` | string | project name | Override the product name used in the banner. |
| `idea` | object | — | Optional `{title, summary}` suggestion to focus the banner on; commits unrelated to the idea are ignored. |
| `link_url` | string (http/https) | resolved at publish | Where the call-to-action points. Omit to fall back to the project's configured Changelog page (Destinations → Website), then the period's published changelog permalink; with neither, the banner renders without a link. |
| `expires_after_days` | `7` \| `14` \| `30` | — | Stop serving the banner this many days after publication. Omit to keep it live until the next banner replaces it. |
| `badge` | string (≤ 16 chars) | project default | The short tag shown before the headline (e.g. `"Beta"`, `"v2.0"`). Omit to use the project's default badge (Destinations → Website), which is `"New"` unless changed. |
| `show_badge` | boolean | `true` | Pass `false` to render the banner without a badge, whatever the project default. |
| `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. 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). |

## Returns

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

If nothing customer-facing shipped in the period (only marketing-site, docs-hosting, CI, or refactor commits), the run ends `failed` with `skip_reason: "no_customer_facing_changes"`, the credits are refunded, and the current banner stays up — widen the date range or pass `instructions` if that change should have counted.

Poll [`get_generation_status`](/mcp/lifecycle/get-generation-status) until the status is `completed`, then read the draft with [`get_content_draft`](/mcp/lifecycle/get-content-draft). The draft is JSON (`badge`, `headline`, `body`, `cta_label`, `link_url` — an empty `badge` means none); edit it with [`update_content`](/mcp/lifecycle/update-content) before publishing — banner drafts are validated and clamped on save (headline 80, body 160, `cta_label` 24, `badge` 16 characters; `link_url` an http(s) URL or `null`), and the draft's badge becomes the prefill for a later regenerate.

## Errors

* `No GitHub account connected. Connect GitHub in Sources first.`
* `No active tracked repositories. Add repos in Sources first.`
* `Invalid banner options: link_url must be an http(s) URL, expires_after_days one of 7, 14, or 30, and badge at most 16 characters.`
* `Monthly credit limit reached (10/10 used). Upgrade your plan to keep generating content.`

## Example prompts

> "Put a banner on our site about the biggest thing we shipped this week, linking to the changelog."

> "Generate a banner for the new API keys page, take it down after 14 days."

> "Banner for the beta of the new editor — tag it 'Beta' instead of 'New'."


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