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

# Content Optimization

> Turn visibility gaps into editorial briefs delivered to your CMS.

## What this module does

The **Content Optimization** page (`/dashboard/content`) lists *opportunities* — prompts where you have a visibility gap relative to competitors. Each opportunity carries:

* A title (the angle of attack)
* An impact rating (high / medium / low) based on prompt volume × visibility gap
* Source data (related prompt, est. AI volume, visibility, competitor gap %, intent, keywords, competitors cited)
* An "opportunity score" 0–100

## From opportunity to brief

<Steps>
  <Step title="Click into an opportunity">
    Navigate from the list to the detail page. You see the full source data and any existing brief.
  </Step>

  <Step title="Generate Brief">
    If no brief exists, click **Generate Content Brief**. An LLM produces a structured brief with:

    * Suggested article title
    * Content type (technical preview, comparison, how-to, listicle, etc.)
    * Target word count
    * Outline (5–8 sections, each with key points)
    * Target keywords (5–8 SEO + AEO blended)
    * Competitor insights paragraph (what rivals are doing right, where the gap is, what to attack)
    * Call to action recommendation
  </Step>

  <Step title="Send to your workflow">
    Click **Send to workflow** to fire a webhook with the brief payload. The opportunity status moves from `new` → `sent`.
  </Step>

  <Step title="Mark as done after publishing">
    Once your team ships the article, mark the opportunity as `done`. Ansvisor monitors the related prompt; if visibility climbs ≥10% in the following 4 weeks, you'll get a "win recap" notification.
  </Step>
</Steps>

## Webhook configuration

Set up a webhook once, fire briefs at it from any opportunity:

* Open `/dashboard/content` and click **Webhook settings** in the toolbar
* Set the **URL** (e.g. Notion automation, Zapier, Linear webhook, custom endpoint)
* Set a **secret** (HMAC-signed payloads — recommended)
* Toggle **Active**

Payload schema:

```json theme={null}
{
  "opportunityId": "uuid",
  "brandId": "uuid",
  "brandName": "string",
  "opportunity": { ...full opportunity object... },
  "brief": { ...full brief object... },
  "sentAt": "2026-05-06T10:00:00Z"
}
```

## Bulk operations

On the listing page you can:

* Multi-select opportunities and **bulk send to webhook** (great for kicking off a content sprint)
* Bulk update status (mark a batch as `dismissed` if they're not relevant this quarter)

## Strategy notes

* **Don't ship every brief** — pick the top 2–4 high-impact opportunities per week. Editorial bandwidth is the bottleneck.
* **Re-generate briefs after publishing** — once you've shipped one piece, regenerate adjacent briefs; the AI now has different competitive context
* **Mix owned and earned** — some opportunities are best closed with a guest post or PR placement (`type: earned`), not a new owned page

<Card title="Self-host setup" icon="server" href="/self-host/docker-compose">
  Ready to run Ansvisor on your own infrastructure?
</Card>
