> ## 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"
}
```

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'."
