# AI Models
# AI Models
Sitefire tracks your brand's presence in AI-generated answers across multiple platforms and markets.
## Supported Platforms
- **ChatGPT**
- **Google Gemini**
- **Google AI Mode**
- **Google AI Overviews**
- **Perplexity**
- **DeepSeek**
- **Claude** (soon)
- **Microsoft Copilot** (soon)
If you need support for another model, please let us know at [support@sitefire.ai](mailto:support@sitefire.ai).
## Markets
Sitefire supports visibility tracking across 180+ markets globally. Configure your target markets in the dashboard to see region-specific results.
---
# Talk to Us
# Talk to Us
Need help with Sitefire? We're here for you.
## Book a Call
The fastest way to get help is to book a short call with our team. We'll walk through your issue together and get it sorted.
[Book a support call](https://pulse.cal.com/jochen/intro) - pick a time that works for you.
## Email Us
Prefer async? Reach out at [support@sitefire.ai](mailto:support@sitefire.ai). We typically respond within a few hours on business days.
## What We Can Help With
- Account setup and configuration
- Connecting your CMS (Webflow, Framer, and others)
- Understanding your visibility reports and GEO scores
- Prompt set customization
- Billing and plan questions
- Bug reports and feature requests
## Community
Follow us for updates and tips:
- [LinkedIn](https://www.linkedin.com/company/106162152)
- [X / Twitter](https://x.com/sitefireai)
---
# remove-category
import { Steps, Callout } from 'nextra/components'
# Remove a category
Categories group prompts so you can slice visibility data by topic. If a category is no longer relevant, you can delete it from any prompt's toolbar.
Removing a category won't rewrite history. It may still appear in older reports so your past data stays comparable.
### Open Prompts
In the Sitefire app sidebar, navigate to **Prompts**.
### Select a prompt
Click any prompt in the list. The contextual toolbar appears at the top of the panel.
### Open the category selector
In the toolbar, click the **category** dropdown to see every category in your workspace.
### Edit the category
Hover the category you want to remove and click **Edit** next to its name.
### Delete
In the edit panel, click **Delete**.
### Confirm
Confirm the prompt and Sitefire removes the category from your workspace.

---
# Quick Start
import { Steps } from 'nextra/components'
# Quick Start
Get your first AI visibility report in under 5 minutes.
### Create an account
Sign up at [app.sitefire.ai](https://app.sitefire.ai) with your work email.
### Add your domain
Enter your company domain (e.g., `example.com`) and your most important subpage URLs. Sitefire automatically extracts your core topics and brand information.
### Generate your prompt set
Sitefire analyzes your domain and generates a realistic set of prompts that real users would ask AI models about your topics. You can customize and expand this set.
### Run your first analysis
Click "Analyze" and Sitefire will query AI models with your prompt set. Within minutes, you'll see:
- Your **visibility score** across AI platforms
- Which of your pages get **cited**
- Where **competitors** appear instead
- Specific **content recommendations**
### Optimize
Review the AI-optimized content briefings Sitefire generates. Edit, approve, and publish directly to your CMS.
## Next Steps
- [GEO Overview](/docs/geo-overview) - Learn the fundamentals
- [Visibility Tracking](/docs/visibility-tracking) - Deep dive into metrics
- [Improve Content](/docs/actions/improve-content) - How Sitefire scores and optimizes your pages for AI citation
---
# MCP
import { Tabs } from 'nextra/components'
import { McpSparkIntro } from '@/components/docs/mcp-spark-intro'
# MCP
## Setup
1. Claude.ai: open [Claude.ai](https://claude.ai), then go to **Customize**, **Connectors**, **+**, and **Add custom connector**.
2. Claude Desktop: open **Settings**, **Connectors**, and **Add Custom Connector**.
3. Name it **Sitefire**, paste the MCP server URL, and connect your Sitefire account.
```txt copy
https://app.sitefire.ai/api/mcp
```
1. Run the command in Claude Code.
2. Approve Sitefire in the browser when Claude opens sign-in.
3. Verify with `claude mcp list`.
```bash copy
claude mcp add --transport http --scope user sitefire https://app.sitefire.ai/api/mcp
```
Install Sitefire workflow skills:
```bash copy
npx skills add sitefire-ai/skills
```
ChatGPT full MCP connectors are available through ChatGPT developer mode for supported workspaces.
1. Use this only if your ChatGPT workspace has developer mode for apps and full MCP connectors enabled.
2. Admins enable it in **Workspace Settings**, **Permissions & Roles**, **Connected Data**.
3. Create an app from **Workspace settings**, **Apps**, **Create**, or **Settings**, **Apps**, **Create**.
4. Add Sitefire as the MCP endpoint, then test it in a new chat.
```txt copy
https://app.sitefire.ai/api/mcp
```
1. Add the Sitefire remote MCP server.
2. Run the login command, then approve Sitefire in the browser.
3. Verify inside Codex with `/mcp`.
```bash copy
codex mcp add sitefire --url https://app.sitefire.ai/api/mcp
```
Authorize Sitefire:
```bash copy
codex mcp login sitefire
```
Install Sitefire workflow skills:
```bash copy
npx skills add sitefire-ai/skills
```
If you prefer editing config manually, open or create `~/.codex/config.toml` and add:
```toml copy
[mcp_servers.sitefire]
url = "https://app.sitefire.ai/api/mcp"
```
## Skills and rules
The MCP server gives your assistant data access. Skills and rules teach it when and how to use Sitefire.
Claude and ChatGPT use the MCP server URL flow above. For Claude Code and Codex, install the Sitefire skills bundle too:
```bash copy
npx skills add sitefire-ai/skills
```
For clients that use persistent instructions, add this rule:
```txt copy
Use Sitefire MCP tools when the task involves Sitefire actions, tracked topics, briefings, generated articles, or AI visibility opportunities.
Prefer a Sitefire tool call over guessing from general knowledge.
Ask before creating new actions or triggering article generation unless the user explicitly requested it.
```
Suggested locations:
- Claude Code: install the skills bundle, then start a new session.
- Codex CLI: add the rule to `AGENTS.md`.
## What to ask
Start a fresh session and try one of these prompts:
| Goal | Prompt |
| --- | --- |
| Verify the setup | **What Sitefire actions are ready?** |
| Review ready work | **Show my ready Sitefire actions.** |
| Open a briefing | **Get the briefing for my latest content action.** |
| Find opportunities | **Find tracked topics that do not have actions yet.** |
| Create work | **Create actions for topics where Sitefire sees the strongest opportunity.** |
| Retrieve an article | **Get the generated article for my latest ready briefing.** |
Use **show**, **list**, or **get** for read-only inspection. Prompts that create actions or trigger article generation can change your Sitefire workspace.
## Troubleshooting
- If tools do not appear, verify the MCP server is connected in your client.
- If sign-in loops, reconnect the Sitefire server and make sure the browser is using the right Sitefire account.
- If the assistant does not use Sitefire automatically, install the skills bundle or add the rule above.
- If the wrong company appears, switch company in Sitefire and reconnect if your client cached the old session.
---
# KPIs
import { Callout } from 'nextra/components'
# KPIs
Sitefire tracks your AI visibility across four surfaces: the answers AI models give, the citations they pull from, the bots that crawl your site, and the traffic those answers send back to you. This page is the canonical reference for every metric you'll see across the product.
## At a glance
| Metric | Unit | What it measures |
|--------|------|------------------|
| [Visibility Score](#visibility-score) | % | Share of AI answers mentioning your brand |
| [Share of Voice](#share-of-voice) | % | Your mentions vs. all brand mentions |
| [Average Position](#average-position) | Rank (1 = best) | Average rank when you're mentioned |
| [Citation Rate](#citation-rate) | % | Share of answers citing your pages |
| [Citation Share](#citation-share) | % | Your citations vs. all citations |
| [Bot Requests](#bot-requests) | Count | AI bot visits to your site |
| [Active Bots](#active-bots) | Count | Distinct AI bots crawling you |
| [Top Provider](#top-provider) | Name | Provider sending the most crawl traffic |
| [Top Page](#top-page) | Path | Most-crawled page |
| [AI Sessions](#ai-sessions) | Count | GA4 visits from AI engines |
| [Conversions](#conversions) | Count | GA4 conversions from AI traffic |
| [Conversion Rate](#conversion-rate) | % | AI-referred sessions that convert |
| [Engagement Rate](#engagement-rate) | % | Engaged AI-referred sessions |
| [Bounce Rate](#bounce-rate) | % | Non-engaged AI-referred sessions |
| [Avg. Duration](#avg-duration) | Seconds | Average AI-referred session length |
---
## Visibility metrics
### Visibility Score
*Unit: percentage (0-100%)*
The share of AI answers that mention your brand, weighted by how much each prompt matters to you.
**Why it matters** - Tells you how often your brand shows up in AI answers at all. The headline metric, before you worry about how prominently.
**Formula**
```
Score = Σ (prompt_weight × mention_rate) / Σ prompt_weight
prompt_weight = prompt_volume × model_weight
prompt_volume = topic_volume / active_prompts_in_topic
```
**Inputs**
| Input | Description |
|-------|-------------|
| `topic_volume` | Monthly search volume for the topic. Topics are the broader subjects you track; each topic contains one or more prompts. |
| `active_prompts_in_topic` | Number of active prompts under the topic. The topic's volume is split evenly across them, so adding more prompts to a topic dilutes each prompt's weight. |
| `model_weight` | Your configured model mix. Weights across ChatGPT, Perplexity, Gemini, and other supported models, summing to 100%. |
| `mention_rate` | The share of answers on that prompt/model where your brand is mentioned (0-100%). |
**Example**
You're **Northwind**, a CRM for small businesses. You track **Contoso** and **Fabrikam** as competitors. You've set up two topics, each with a single active prompt:
| Topic | Topic volume | Active prompts | Prompt volume | Prompt text |
|-------|--------------|----------------|---------------|-------------|
| Small-business CRM tools | 1,000 | 1 | 1,000 ÷ 1 = **1,000** | A: "best CRM for small business" |
| Sales pipeline tracking | 500 | 1 | 500 ÷ 1 = **500** | B: "how to track sales pipeline" |
Each topic's volume splits evenly across its active prompts. In this example each topic has only one, so each prompt gets the full topic volume. If a topic had 3 active prompts, each would get a third of the topic volume.
Model weights: ChatGPT 80%, Perplexity 20%. Each prompt is asked on each model, so you get 4 answers.
**Answer 1** — Prompt A on ChatGPT
> For small businesses, these CRMs come up most often:
>
> 1. **Northwind** — strong pipeline management with a generous free tier [1]
> 2. **Contoso** — simple contact management, low learning curve [2]
> 3. **Fabrikam** — broader feature set, geared toward growing teams
>
> Sources: [1] northwind.com/features · [2] contoso.com
**Answer 2** — Prompt A on Perplexity
> The most-recommended CRMs for small businesses:
>
> 1. **Contoso** — affordable, used by thousands of small teams [1]
> 2. **Northwind** — richer feature set for active pipeline tracking [2]
>
> Sources: [1] contoso.com · [2] northwind.com/features · [3] fabrikam.com
**Answer 3** — Prompt B on ChatGPT
> Core practices for tracking a sales pipeline:
>
> - **Contoso**'s guide recommends a weighted-probability approach [1]
> - **Fabrikam**'s playbook emphasizes stage-by-stage forecasting [2]
>
> Sources: [1] contoso.com/guide · [2] fabrikam.com
**Answer 4** — Prompt B on Perplexity
> Three tools come up for pipeline tracking:
>
> 1. **Northwind** — visual kanban with stage probabilities [1]
> 2. **Contoso** — solid CRM with a built-in pipeline view
> 3. **Fabrikam** — enterprise-grade forecasting
>
> Sources: [1] northwind.com/tracking
Extracted, that's:
| # | Prompt | Model | Mentions (in order) | Citations |
|---|--------|-------|---------------------|-----------|
| 1 | A | ChatGPT | Northwind, Contoso, Fabrikam | northwind.com/features, contoso.com |
| 2 | A | Perplexity | Contoso, Northwind | contoso.com, northwind.com/features, fabrikam.com |
| 3 | B | ChatGPT | Contoso, Fabrikam | contoso.com/guide, fabrikam.com |
| 4 | B | Perplexity | Northwind, Contoso, Fabrikam | northwind.com/tracking |
Northwind's mention rate per prompt:
- Prompt A: mentioned on ChatGPT *and* Perplexity → 80% + 20% = **100%**
- Prompt B: mentioned only on Perplexity → 0% + 20% = **20%**
```
Score = (1,000 × 100% + 500 × 20%) / 1,500 = 73.3%
```
*Related: [Share of Voice](#share-of-voice) · [Average Position](#average-position)*
---
### Share of Voice
*Unit: percentage (0-100%)*
Your mentions as a percentage of all brand mentions in the same AI answers.
**Why it matters** - Tells you whether you're gaining ground on competitors. Visibility Score can rise across the whole category at once; Share of Voice only rises when you're winning a bigger slice of mentions than competitors are.
**Formula**
```
Share of Voice = your_mentions / total_mentions
```
**Inputs**
| Input | Description |
|-------|-------------|
| `your_mentions` | Count of answers in the selected prompts and date range that mention your brand. |
| `total_mentions` | Count of mentions of any tracked brand in the same answers. |
**Example**
You're **Northwind**, a small-business CRM. You track **Contoso** and **Fabrikam** as competitors. Across two prompts asked on ChatGPT and Perplexity, you collect 4 answers:
| # | Prompt | Model | Mentions (in order) | Citations |
|---|--------|-------|---------------------|-----------|
| 1 | A | ChatGPT | Northwind, Contoso, Fabrikam | northwind.com/features, contoso.com |
| 2 | A | Perplexity | Contoso, Northwind | contoso.com, northwind.com/features, fabrikam.com |
| 3 | B | ChatGPT | Contoso, Fabrikam | contoso.com/guide, fabrikam.com |
| 4 | B | Perplexity | Northwind, Contoso, Fabrikam | northwind.com/tracking |
Count mentions:
- Total mentions across all answers: 3 + 2 + 2 + 3 = **10**
- Northwind mentions: 1 + 1 + 0 + 1 = **3**
```
Share of Voice = 3 / 10 = 30%
```
Northwind's Visibility Score on this data is 73.3% but Share of Voice is 30%. Northwind shows up in most answers, but is only one of several brands named each time.
*Related: [Visibility Score](#visibility-score) · [Average Position](#average-position)*
---
### Average Position
*Unit: rank (1 is best; lower is better)*
When your brand is mentioned, the average rank it appears at within the AI answer.
**Why it matters** - Being mentioned 7th in a list of 10 is very different from being the first recommendation. Shows how prominently you appear, not just whether you appear.
**Formula**
```
Average Position = mean(rank) across all answers where your brand is mentioned
```
**Example**
You're **Northwind**, tracking **Contoso** and **Fabrikam**. Across two prompts asked on ChatGPT and Perplexity, you collect 4 answers:
| # | Prompt | Model | Mentions (in order) |
|---|--------|-------|---------------------|
| 1 | A | ChatGPT | Northwind, Contoso, Fabrikam |
| 2 | A | Perplexity | Contoso, Northwind |
| 3 | B | ChatGPT | Contoso, Fabrikam |
| 4 | B | Perplexity | Northwind, Contoso, Fabrikam |
Northwind's rank in each answer where it's mentioned:
- Answer 1 - rank **1**
- Answer 2 - rank **2**
- Answer 3 - *not mentioned, skipped*
- Answer 4 - rank **1**
```
Average Position = (1 + 2 + 1) / 3 = 1.33
```
Northwind typically leads the list when it's mentioned at all.
*Related: [Visibility Score](#visibility-score) · [Share of Voice](#share-of-voice)*
---
## Citation metrics
### Citation Rate
*Unit: percentage (0-100%)*
The percentage of AI answers that cite one of your pages as a source.
**Why it matters** - Mentions are about your brand name showing up. Citations are about your content being the source the AI pulled from. This is what GEO content strategy targets directly.
**Formula**
```
Citation Rate = answers_citing_you / total_answers
```
**Inputs**
| Input | Description |
|-------|-------------|
| `answers_citing_you` | Count of answers that include at least one citation pointing to a domain you own. |
| `total_answers` | Count of all answers in the selected prompts and date range. |
**Example**
You're **Northwind** (northwind.com), tracking **Contoso** and **Fabrikam**. Across two prompts asked on ChatGPT and Perplexity, you collect 4 answers with these citations:
| # | Prompt | Model | Citations |
|---|--------|-------|-----------|
| 1 | A | ChatGPT | **northwind.com**/features, contoso.com |
| 2 | A | Perplexity | contoso.com, **northwind.com**/features, fabrikam.com |
| 3 | B | ChatGPT | contoso.com/guide, fabrikam.com |
| 4 | B | Perplexity | **northwind.com**/tracking |
Northwind-owned pages appear in answers 1, 2, and 4 — 3 of the 4 answers.
```
Citation Rate = 3 / 4 = 75%
```
*Related: [Citation Share](#citation-share) · [Visibility Score](#visibility-score)*
---
### Citation Share
*Unit: percentage (0-100%)*
Your citations as a percentage of all citations in the same AI answers.
**Why it matters** - If your Citation Rate is flat but Citation Share is dropping, competitors are winning more of the source slots.
**Formula**
```
Citation Share = your_citations / total_citations
```
**Inputs**
| Input | Description |
|-------|-------------|
| `your_citations` | Count of citations to any domain you own. |
| `total_citations` | Count of all citations in the same answer set, across every domain. |
**Example**
You're **Northwind** (northwind.com), tracking **Contoso** and **Fabrikam**. Across two prompts asked on ChatGPT and Perplexity, you collect 4 answers with these citations:
| # | Prompt | Model | Citations |
|---|--------|-------|-----------|
| 1 | A | ChatGPT | **northwind.com**/features, contoso.com |
| 2 | A | Perplexity | contoso.com, **northwind.com**/features, fabrikam.com |
| 3 | B | ChatGPT | contoso.com/guide, fabrikam.com |
| 4 | B | Perplexity | **northwind.com**/tracking |
Count citations:
- Total citations: 2 + 3 + 2 + 1 = **8**
- Northwind citations: 1 + 1 + 0 + 1 = **3**
```
Citation Share = 3 / 8 = 37.5%
```
*Related: [Citation Rate](#citation-rate)*
---
## AI Crawler metrics
### Bot Requests
*Unit: count*
Total requests from AI bots (GPTBot, ClaudeBot, PerplexityBot, and others) to your site in the selected date range.
**Why it matters** - Crawls feed citations. No crawls means no citations. A drop in crawls is an early warning for citation drops weeks later.
The delta on the card compares the last 7 days against the 7 days before that, using your current bot and path filters.
---
### Active Bots
*Unit: count*
The number of distinct AI bots that accessed your site in the selected range.
**Why it matters** - Shows how broadly AI platforms are picking you up. Heavy crawling from a single bot is a more fragile position than steady crawling from several.
---
### Top Provider
*Unit: provider name*
The AI provider (OpenAI, Anthropic, Google, Perplexity, and others) that sent the most bot requests in range.
**Why it matters** - Shows where your crawl traffic is concentrated, which helps you prioritize content for the platforms that actually read it.
---
### Top Page
*Unit: URL path*
The page path that received the most AI-bot requests.
**Why it matters** - Your highest-AI-attention page. Often the best candidate for structured data or a freshness update.
---
## AI Referral metrics (GA4)
These metrics come from your connected Google Analytics 4 property and cover visits to your site from AI search engines.
### AI Sessions
*Unit: count*
Visits to your site from AI search engines like ChatGPT, Gemini, and Perplexity, measured by GA4.
**Why it matters** - Turns visibility into actual traffic. If Visibility Score is climbing but AI Sessions aren't, the mentions aren't generating clicks.
---
### Conversions
*Unit: count*
Conversion events from AI-referred visitors, using the conversion goals you've set up in GA4.
**Why it matters** - The bottom line. Only as accurate as the conversion goals configured in your GA4 property.
---
### Conversion Rate
*Unit: percentage*
The percentage of AI-referred sessions that convert.
**Formula**
```
Conversion Rate = conversions / sessions
```
The delta shown on the card is in percentage points (pp).
---
### Engagement Rate
*Unit: percentage*
The percentage of AI-referred sessions that are "engaged" by GA4's definition: the visitor viewed 2+ pages, converted, or spent 10+ seconds actively on the site.
**Why it matters** - Filters out low-intent traffic. High sessions with low engagement means AI is sending visitors who aren't a fit.
**Formula**
```
Engagement Rate = engaged_sessions / sessions
```
---
### Bounce Rate
*Unit: percentage*
The percentage of sessions that aren't engaged: no second page view, no conversion, and under 10 seconds of active time (GA4's definition).
**Formula**
```
Bounce Rate = 1 - Engagement Rate
```
High Bounce Rate with long Avg. Duration often means visitors read the page but didn't click further. Not necessarily a failure.
---
### Avg. Duration
*Unit: seconds*
The average time between the first and last event in a session.
---
# Sitefire Documentation
import { Cards } from 'nextra/components'
# Sitefire Documentation
Sitefire tracks how AI models answer questions about your industry and whether they mention or cite your brand. When they don't, it diagnoses why and tells you what to do about it.
## Methodology and actions
Understand how Sitefire analyzes AI visibility and what actions it recommends.
## How to
Step-by-step guides for common tasks.
## Integrations
Connect Sitefire to your analytics, CMS, and AI assistants.
### Tracking
Measure AI-driven visitors in your existing analytics.
### CMS
Connect your CMS so Sitefire can publish content directly.
### Agent Plugin (MCP)
Let AI assistants like Claude and ChatGPT access your Sitefire data directly.
---
# AI Answer
# AI Answer
Generative Engine Optimization (GEO) is the practice of optimizing your online presence to appear in AI-generated answers.
### Brand Mentions and Search Queries
AI models don't answer questions in isolation. They break each prompt into multiple background search queries - we call this the **query fanout** - and then synthesize results into a single answer. Sitefire tracks which brands get mentioned and every search query the AI generates behind the scenes.

### Sourced Pages and Citations
For each AI answer, Sitefire identifies the **sourced pages** the model pulled information from and the **citations** it included in the response. A single page can be cited multiple times within one answer - each citation is tracked separately.

---
# Diagnosis
# Diagnosis
For every topic cluster, Sitefire runs a diagnosis agent that analyzes why certain content gets cited by AI engines and yours doesn't. The output is a structured report that ends with one clear recommended action.
## The 4C Framework
Sitefire uses 4C classification to turn citation evidence into a recommended action. Each C answers one question:
| Axis | Question | What it decides |
| :--- | :--- | :--- |
| C0 Source Class | Who publishes the cited content? | Whether owned content, editorial coverage, or UGC is the right route |
| C1 Content Type | What kind of page is cited? | Whether the brand has the right asset type |
| C2 Content Format | How is the article structured? | Whether the brand has the right article format |
| C3 Content Angle | Why does this version win? | Which angle, freshness, audience, and authority signals to copy or beat |
C0 comes first because Sitefire needs to know where citations happen before deciding what to create or improve. C1, C2, and C3 then explain the winning content pattern.
---
## What the Agent Analyzes
### 1. Visibility vs. Citations
The agent starts by mapping who gets mentioned and who gets cited. These are different signals:
- **Visibility** means an AI engine talks about your brand when answering a question
- **Citation** means it links to your content as a source
A brand can have high visibility (AI engines mention it frequently) but zero citations (they never link to its pages). This is common - and it's the gap Sitefire closes.
### 2. Citation Landscape (C0)
Who owns the citations for this cluster? The agent classifies every cited URL with C0, the source class:
| C0 Source Class | Example |
| :--- | :--- |
| **Corporate** | Company blogs, agency sites, SaaS review pages |
| **Editorial** | TechRadar, Forbes, industry publications |
| **UGC** | Reddit threads, Stack Overflow, community forums |
| **Competitor** | Direct competitor pages |
| **Own** | Your own content |
| **Reference** | Wikipedia, standards bodies, documentation sites |
C0 decides whether owned content is the right arena. If editorial sites or UGC own most citations, the best action may be Editorial Coverage or Engage UGC instead of writing another page on your own site.
### 3. Top-Cited Content (C1, C2, C3)
When owned or competitor content can plausibly win, the agent classifies every top-cited page along three more axes to identify the winning formula.
#### C1: Content Type
C1 asks what kind of page this is. AI engines overwhelmingly cite the same type of page for a given query. If every cited result is a blog post, your product page will not break through - regardless of how good it is.
| Content Type | Description |
| :--- | :--- |
| Blog Post / Article | Editorial content - guides, comparisons, listicles |
| Product / Feature Page | Marketing page for a product, feature, or pricing |
| Category / Listing Page | Collection or directory of items |
| Landing Page | Focused conversion page for a service or tool |
| Video | YouTube or video-dominant result |
| Interactive Tool | Calculator, checker, generator, playground |
| Documentation | Reference docs, API docs, knowledge base |
| Forum / Discussion | Reddit, Stack Overflow, community Q&A |
#### C2: Content Format
C2 asks how a blog post or article is structured. A how-to guide and a comparison article serve fundamentally different intents - even though both are blog posts. Format mismatches are the most common missed opportunity.
| Content Format | Signals |
| :--- | :--- |
| How-to Guide | Step-by-step instructions |
| Listicle | Numbered list - "10 best...", "top N..." |
| Definitive Guide | Long-form, "complete guide", "everything you need" |
| Comparison | X vs Y, head-to-head evaluation |
| Review | Single product or service evaluation |
| Opinion / Thought Piece | Perspective, argument, commentary |
| Roundup | Curated from multiple sources or experts |
| Statistics Post | Aggregated data - "N statistics about..." |
| Checklist | Actionable verification list |
| Case Study | Real-world implementation with results |
#### C3: Content Angle
C3 asks what the hook is. The winning angle tells you how to position your content against what already gets cited.
| Angle | Signals |
| :--- | :--- |
| Freshness | Current year in title, "2026", "updated" |
| Speed / Ease | "quick", "easy", "in 5 minutes" |
| Cost | "free", "cheap", "budget", "open-source" |
| Audience-specific | "for beginners", "for enterprise", "for developers" |
| Depth | "complete", "ultimate", "everything you need" |
| Niche Specificity | Narrow use case or industry vertical |
| Authority | "expert-tested", "we reviewed N products", data-driven |
### 4. Your Existing Content
Finally, the agent looks at what you already have. Does your site have a page that matches the winning C1 + C2 profile? If so, how does it perform compared to the top-cited content?
This final step compares your existing content against the 4C pattern found in the citation landscape.
---
## The 4 Actions
Based on the diagnosis, Sitefire recommends one of four actions:
| Diagnosis finding | Action | What it means |
| :--- | :--- | :--- |
| Editorial or UGC dominates citations | [Editorial coverage](/docs/actions/editorial-coverage) or [Engage UGC](/docs/actions/engage-ugc) | The winning sources are not owned pages, so the strategy is to earn coverage or participate where citations happen. |
| C1 or C2 mismatch | [Create content](/docs/actions/create-content) | You don't have the right type or format of page. No amount of optimization will fix a product page competing against listicles. |
| C1 + C2 match, low citations | [Improve content](/docs/actions/improve-content) | You have the right page - it just underperforms. Sitefire scores it with the GEO Score and generates specific improvements. |
The key principle: C0 decides where to act, while C1 and C2 decide whether to create or improve owned content. When C1 or C2 do not match, you need new content - not optimization. Only when your content type and format already match the cited results does page-level improvement make sense.
---
# Prompt Research, weekly opportunities, and new connectors
# Prompt Research, weekly opportunities, and new connectors
_June 8, 2026_
Three new surfaces in Sitefire: find the prompts worth tracking, act on the opportunities that matter most each week, and connect your software stack to Sitefire.
This update answers one of the questions we get asked the most, with our new proprietary and research-backed Prompt Research. You can now also see a weekly shortlist of which action to create, and manage your integrations from a single page.
## "Which prompts should we monitor?"
Prompt Research is based on patterns from over 22 million real prompts and fan-out queries, and cross-verified with findings from [OpenAI and Harvard's 2025 study](https://www.nber.org/system/files/working_papers/w34255/w34255.pdf). More information on the methodology will follow in a separate post.
Instead of starting from a blank list, you discover prompts for a segment and region, grounded with real search volume data, and select the best for monitoring.

## Weekly opportunities, now inside Actions
Instead of reading through every prompt and model yourself, you get a ranked shortlist of the highest-leverage opportunities each week in the Actions tab.
Each opportunity weighs how often a topic comes up in AI search, how you compare against competitors on it, and how much room there is to improve. The strongest signal and the widest gap rise to the top.
From any opportunity, you create an action in one click, helping you close the visibility gaps.

[Open Sitefire →](https://app.sitefire.ai/actions)
## One page to connect your whole stack
Connectors is a new section in Settings that brings every integration into one place, grouped by what it does for you:
- Search data: import search performance for prompt research and action briefs (Google Search Console, Bing Webmaster).
- AI referral traffic: measure sessions and outcomes from AI assistants (Google Analytics 4).
- AI bot traffic: track AI crawler requests from your CDN or hosting logs (Cloudflare, CloudFront).
- CMS: publish approved content to your site as drafts (Webflow, Framer).
- File management: create editable files for action briefs and team review (Google Drive).
We've also added file export to MS Word and Google Docs, so you can continue working on your actions where you already are.

---
# Better actions with Brand kit and new output formats
# Better actions with Brand kit and new output formats
_May 27, 2026_
The next generation of Sitefire Actions is here: every recommendation now sounds like your brand. They are sharper and easier to ship. Produce content, engage on Reddit and YouTube, and win backlinks from editorial sites.
This update covers two things:
1. **Brand Kit** makes every action sound like your brand.
2. **New output formats** are shorter and easier to execute.
## Brand Kit now guides every recommendation
Requires Sitefire Pro
In settings, define a writing style, add custom rules, and upload documents to tell Sitefire:
- your brand's tone of voice
- what patterns to avoid
- any context you want to share

[Setup Brand Kit →](https://app.sitefire.ai/settings#brand-kit)
## Actions are easier to understand and execute
We rebuilt the output format so you can see at a glance:
- what we recommend
- why it is the right move, and
- how to act on it
### Improve Content
Now suggests concrete edits anchored to the existing page. Export the changes as a Word document or copy them as markdown to hand off to your team.

### Editorial Coverage
Opens into a focused outreach view.

### Engage with UGC
Generates output in the right format for each channel: Reddit replies, YouTube video outlines, forum posts.

[Create an Action →](https://app.sitefire.ai/actions)
## Small improvements
- The redesigned Actions page makes it easier to keep an overview.
- Technical SEO actions are now easier to understand and fix with step-by-step instructions.

## Coming next
- **Opportunities:** smarter suggestions for topics to prioritize.
- **Action impact:** track how your actions are impacting your KPIs.
---
# Google Analytics (GA4)
import { Steps } from 'nextra/components'
# Google Analytics (GA4)
By default, GA4 lumps visits from ChatGPT, Perplexity, and other AI platforms into the generic "Referral" channel. This guide creates a dedicated "Artificial Intelligence" channel so AI traffic shows up separately in your reports.
> **Time needed:** ~5 minutes. Changes apply retroactively to historical data.
---
## Setup
### Open Channel Groups
Go to **Admin** (gear icon, bottom-left) > under **Property settings**, expand **Data display** > click **Channel groups**.
Click the blue **"Create new channel group"** button.

### Create the Channel Group
Name the group something descriptive (e.g., "With AI Traffic"). This creates a copy of all default channels that you can customize.
Click **"Add new channel"** to define your AI traffic channel.

### Configure the AI Channel
Set the channel name to **Artificial Intelligence** (or whatever label you prefer in reports).
Configure the condition:
- **Dimension:** Source
- **Condition:** matches regex
- **Value:** paste the regex below
```regex copy filename="AI Source Regex"
chatgpt\.com|chat\.openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com|deepseek\.com|you\.com|meta\.ai|poe\.com
```
This covers the major AI platforms that drive the vast majority of referral traffic.
Click **Apply**, then **Save channel**.

### Reorder - Place AI Above Referral
This step is critical. GA4 assigns traffic to the **first matching channel** in the list. If "Referral" sits above your new AI channel, AI traffic will still get caught by Referral and never reach your custom channel.
Use the drag handles to move **Artificial Intelligence** directly above **Referral**, then save.

### Switch to the Custom Channel Group
Navigate to **Reports** > **Life cycle** > **Acquisition** > **Traffic acquisition**.
Click the dimension dropdown (the blue pill at the top of the table) and select **Session Custom channel group**.

### View Your AI Traffic
You should now see **Artificial Intelligence** as its own row in the acquisition table, with Sessions, Users, Engagement Rate, and all other standard metrics broken out.

---
## Which Metrics to Track
| Metric | Use | Detail |
| :--- | :--- | :--- |
| **Sessions** | Primary metric | Total visits from AI platforms. Most stable number for weekly trends. |
| **Engagement Rate** | Quality check | Sessions with 10+ seconds, 2+ pages, or a conversion. Compare against Organic Search. |
| **New Users** | Quarterly review | Whether AI platforms drive net-new audience. |
> GA4 undercounts AI traffic by an estimated 30-40%. Free-tier ChatGPT users and mobile AI apps often don't send referrer headers, so those visits appear as "Direct". Use [Cloudflare tracking](/docs/tracking/cloudflare) as a complementary signal.
---
# Cloudflare
import { Callout, Steps } from 'nextra/components'
# Cloudflare
If your site is behind Cloudflare, you already have AI bot analytics built in - no log parsing, no code changes. Cloudflare's **AI Crawl Control** identifies crawlers like GPTBot, ClaudeBot, and PerplexityBot and shows you exactly which bots visit which pages.
You can use this data in two ways:
1. **Read it manually** in the Cloudflare dashboard - great for weekly check-ins
2. **Connect API to Sitefire** via API token - so we can pull the data automatically and combine it with your [GEO visibility metrics](/docs/geo-overview)
**Cloudflare only sees traffic for hostnames it proxies.** Records in your DNS settings show either an orange cloud (proxied through Cloudflare) or a grey cloud (DNS only - traffic bypasses Cloudflare). Only orange-clouded hostnames produce bot analytics.
If your marketing site, docs, or blog (`www.example.com`, `docs.example.com`) is grey-clouded or hosted somewhere else (e.g. Vercel, Netlify, an S3 site), Cloudflare can't see AI crawlers visiting those pages and your dashboards will show near-zero data. Verify the right records are orange-clouded before troubleshooting elsewhere.
---
## Read AI Traffic in Cloudflare
Log in to the [Cloudflare dashboard](https://dash.cloudflare.com/), select your domain, and navigate to **AI Crawl Control** in the left sidebar.
### The Two Metrics That Matter
| Metric | What it tells you | Where to find it |
| :--- | :--- | :--- |
| **Allowed Requests by Operator** | How often AI bots crawl your site, grouped by operator (OpenAI, Anthropic, Google, Perplexity, etc.). This is your supply-side leading indicator - bots need to crawl your content before they can cite it. | Overview tab > "Crawlers grouped by operators". For trends: Metrics tab > "Allowed requests", group by **Operator**. |
| **Referrals by Operator** | How often humans click through from AI platforms to your site. The closest conversion metric for AI visibility. Unlike GA4, Cloudflare captures this server-side. | Metrics tab > "Referrals over time", group by **Operator**. |
Referral data requires a paid Cloudflare plan (Pro or above). On the free plan, use [GA4](/docs/tracking/google-analytics) for referral tracking.
**Free plan query limit:** Cloudflare's Analytics API caps single queries at a 1-day window on the free plan. Sitefire's daily sync handles this transparently by querying one day at a time, so your dashboards still show full history. Paid plans support longer windows and faster backfills.
**Export:** On the Metrics tab, click **Download CSV** or **Download image** for your own reporting.
---
## Connect API to Sitefire
For automated, continuous tracking, give Sitefire read-only access to your Cloudflare analytics via API token. We query the same data the dashboard shows and surface it alongside your [visibility tracking](/docs/visibility-tracking) and [GEO Score](/docs/actions/improve-content).
> **Time needed:** ~5 minutes. Two steps: find your Zone ID, create an API token.
### Find Your Zone ID
Go to **Cloudflare Dashboard** > select your domain. On the right sidebar of the **Overview** page, copy the **Zone ID** (a 32-character hex string).
### Create an API Token
Go to **My Profile** (top-right avatar) > **API Tokens** > **Create Token** > scroll past templates and click **Create Custom Token**.
| Setting | Value |
| :--- | :--- |
| Token name | `Sitefire - AI Analytics (read-only)` |
| Permissions | **Account** > **Account Analytics** > **Read** |
| Zone Resources | Include > Specific zone > select your domain |
Leave IP filtering and TTL blank unless your security policy requires them.
Click **Continue to summary**, review, then **Create Token**. **Copy the token immediately** - Cloudflare only shows it once.
Do not use your Global API Key. It grants unrestricted access to all zones and resources. API tokens are scoped, revocable, and the only method we support.
### Share with Sitefire
Email **support@sitefire.ai** with:
- Your **API token** (from Step 2)
- Your **Zone ID** (from Step 1)
- The **domain name** the zone belongs to
We configure the sync on our end and you'll see AI bot data in your dashboard within a few hours.
---
# AWS CloudFront
import { Tabs, Callout, Steps } from 'nextra/components'
# AWS CloudFront
CloudFront access logs record every request to your site - including the user-agent string that identifies AI crawlers like GPTBot, ClaudeBot, and PerplexityBot. By giving Sitefire read-only access to these logs, we can show you exactly which AI bots visit which pages, how often, and how that changes over time.
> **Time needed:** ~15 minutes. Two steps: enable logging, create an IAM role.
---
## How It Works
CloudFront writes a gzip-compressed log file to S3 for every batch of requests. Each line includes the URL path, timestamp, and user-agent. Sitefire assumes a read-only IAM role in your account, syncs new log files, filters for AI bot user-agents, and surfaces the insights in your dashboard.
This is the same cross-account IAM pattern used by Datadog, New Relic, and other SaaS tools. No credentials are shared. You stay in full control.
---
## Step 1: Enable CloudFront Logging
If your distribution already has logging enabled, skip to [Step 2](#step-2-create-an-iam-role-for-sitefire).
Standard Logging v2 (launched November 2024) is the recommended option for new setups. It delivers logs to S3 without requiring bucket ACLs, and the console handles all permissions automatically.
### Open the Logging tab
Go to **CloudFront** > **Distributions** > select your distribution > **Logging** tab > click **Add**.
### Configure S3 delivery
- Select **Amazon S3** as the destination
- Choose or create an S3 bucket (e.g., `yourcompany-cf-logs`)
- Optionally set a prefix
- Output format: select **W3C** (our parser requires this format)
- Field selection: make sure **cs(User-Agent)** is included (it is by default)
The console automatically creates the required S3 bucket policy. No manual permission setup needed.
### Save
Logs start appearing in your bucket within a few minutes.
### Verify logs are flowing
Wait 5 minutes, then check that files are appearing in your bucket:
```bash
aws s3 ls s3://YOUR-BUCKET/YOUR-PREFIX/ --recursive --summarize | tail -3
```
You should see `.gz` files. If the bucket is empty, double-check that logging is enabled on the correct distribution.
If you already have legacy standard logging enabled (the toggle under **General** > **Settings** > **Edit**), you're all set. No changes needed - Sitefire works with legacy logs.
Just note the **S3 bucket name** and **prefix** where your logs are stored, and continue to Step 2.
---
## Step 2: Create an IAM Role for Sitefire
This role grants Sitefire **read-only** access to your log bucket - nothing else.
Your **Account ID** and **External ID** are shown in the Sitefire app. Go to **Crawler Analytics** → **Connect CDN** → **AWS CloudFront** to find them.
### Create a new IAM role
Go to **IAM** > **Roles** > **Create Role** > select **Custom trust policy**.
Paste the following trust policy:
```json copy filename="Trust Policy"
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SITEFIRE_ACCOUNT_ID:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "UNIQUE_EXTERNAL_ID"
}
}
}
]
}
```
Replace `SITEFIRE_ACCOUNT_ID` and `UNIQUE_EXTERNAL_ID` with the values shown in the Sitefire setup wizard.
Click **Next**.
### Attach a permission policy
Click **Create policy** (opens in a new tab), switch to the **JSON** editor, and paste:
```json copy filename="Permission Policy"
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::YOUR-LOG-BUCKET",
"arn:aws:s3:::YOUR-LOG-BUCKET/*"
]
}
]
}
```
Replace `YOUR-LOG-BUCKET` with your bucket name from Step 1.
Name the policy something like `sitefireLogReaderPolicy`, then save it.
Go back to the role creation tab, refresh the policy list, and attach the policy you just created. Click **Next**.
### Name and create the role
Name the role `sitefireLogReader` (or similar) and click **Create role**.
### Enter details in Sitefire
Go back to the Sitefire setup wizard and click **I've created the IAM role**. Enter:
- The **Role ARN** from the role summary page (e.g., `arn:aws:iam::123456789012:role/sitefireLogReader`)
- Your **S3 bucket name** and prefix (if any)
Click **Connect & Import** to validate the connection and start syncing.
That's it. Sitefire will validate the connection and start importing the last 7 days of AI bot traffic. You'll see data in your dashboard within minutes.
---
# webflow
import { Steps, Callout } from 'nextra/components'
# Webflow
This guide walks you through creating a Webflow API token for [CMS integration](/docs/cms/setup) so Sitefire can publish content to your site.
### Open Site Settings
Open the Webflow Designer for your site. Click the **Webflow menu** (top left) and select **Site settings**.

### Navigate to Apps & Integrations
In the left sidebar, navigate to **Apps & Integrations**.

### Generate an API Token
Scroll down to the **API access** section and click **Generate API token**.

Give the token a descriptive name (e.g., `Sitefire`) and set the permissions as follows:
| Permission | Level | Purpose |
| --- | --- | --- |
| Assets | Read and write | Upload hero/OG images |
| Authorized User | Read-only | Token verification |
| CMS | Read and write | Push blog posts as drafts, upsert by slug |
| Components | Read-only | Verify layout compatibility |
| Pages | Read and write | Set meta titles, descriptions, OG tags |
| Sites | Read-only | List sites in workspace, read site info |
All other permissions can stay at **No access**.

Copy the token immediately - Webflow only shows it once.
Paste the token into the **API Key** field in Sitefire when [connecting your Webflow site](/docs/cms/setup). Then select your site and collection, map your fields, and you can start pushing articles.
---
# webflow-tables
import { Steps, Callout } from 'nextra/components'
# Webflow tables
Webflow's CMS rich-text field doesn't support native HTML tables. When Sitefire publishes an article that contains a table, we work around this by embedding the table markup as raw HTML inline in the post body. You then need to lift that markup into a proper **HTML Embed** block in the Webflow Designer so it renders as a styled table on the live site.
Sitefire applies basic out-of-the-box styling to embedded tables. You can adjust the default styles in the Webflow integration settings inside Sitefire.
## Why this extra step?
Webflow's rich-text editor strips `
` elements on save and the CMS API doesn't accept tables in rich-text fields either. The only reliable way to render a table inside a CMS-driven blog post is through an **HTML Embed** component, which has to be added in the Designer by hand. Sitefire ships the table markup with the article so you can do this in seconds.
## Convert the inline code into an embed
### Open the post in the Webflow CMS
After Sitefire publishes the article, open it in the Webflow Designer under your blog collection. You'll see the table rendered as a block of raw HTML inside the post body.

### Select and cut the code block
Highlight the full block of table markup - the wrapping `` and everything inside it - and cut it to your clipboard.

### Insert an HTML Embed
With your cursor in the same spot, press
/ to open the rich-text component picker and choose **HTML Embed**.

### Paste the markup
Paste the table markup into the embed editor and save. Webflow will validate the HTML and close the modal.

### Publish and verify
Publish the post and open it on the live site. The table should now render with the styling Sitefire applies by default.

## Customizing the styling
Default table styles (borders, padding, header treatment, zebra rows) are injected by Sitefire alongside the embed. To change them, open the Webflow integration in Sitefire and adjust the table styling options - new articles will pick up the updated styles automatically.
---
# CMS Integrations
# CMS Integrations
Sitefire can push articles directly to your CMS as drafts. Currently supported: **Framer** and **Webflow**.
## Framer
### 1. Get your Project URL
1. Open your project in [Framer](https://framer.com)
2. Copy the URL from your browser's address bar — it looks like:
```
https://framer.com/projects/YourSite--aAbBcCdD1234567890xy
```
3. Paste this URL into the **Project URL** field in Sitefire
### 2. Create an API key
1. In your Framer project, click the **Framer** menu (top-left) → **Settings**
2. Scroll to **API** and click **Generate API Key**
3. Copy the key and paste it into the **API Key** field in Sitefire
For step-by-step instructions with screenshots, see the [Framer API key guide](/docs/cms/framer).
### 3. Select a collection
After connecting, Sitefire will show the CMS collections in your Framer project. Select the collection where you want articles to be published (e.g. "Blog Posts").
### 4. Map your fields
Map each article field (Title, Body, Slug, Excerpt, Date) to the corresponding CMS field. Fields that aren't mapped will be skipped during push.
---
## Webflow
### 1. Create an API token
1. In the [Webflow Designer](https://webflow.com/dashboard), open your site and go to **Site settings** (Webflow menu → Site settings) → **Apps & Integrations** → **API access**
2. Click **Generate API token**
3. Give the token a name (e.g. `Sitefire`) and set these permissions:
| Permission | Level | Purpose |
| --- | --- | --- |
| Assets | Read and write | Upload hero/OG images |
| Authorized User | Read-only | Token verification |
| CMS | Read and write | Push blog posts as drafts, upsert by slug |
| Components | Read-only | Verify layout compatibility |
| Pages | Read and write | Set meta titles, descriptions, OG tags |
| Sites | Read-only | List sites in workspace, read site info |
All other permissions can stay at **No access**.
4. Copy the token and paste it into the **API Key** field in Sitefire
For step-by-step instructions with screenshots, see the [Webflow API token guide](/docs/cms/webflow).
### 2. Select a site
If your workspace has multiple sites, Sitefire will ask you to pick one. If you only have one site, it's selected automatically.
### 3. Select a collection
Choose the CMS collection where articles will be published. Sitefire shows all collections from your selected site.
### 4. Map your fields
Map each article field to the corresponding Webflow CMS field. Sitefire auto-detects common field names (like "Post Body" → Body, "Name" → Title), but you can adjust the mapping.
**Supported field types:**
- **PlainText** — used for Title, Slug, Excerpt
- **RichText** — used for Body (markdown is converted to HTML automatically)
- **Date** — used for publish date
---
## Pushing articles
Once connected, each completed article shows a **Push to [CMS]** button. Articles are always pushed as **drafts** — you can review and publish them in your CMS editor.
If an article with the same slug already exists in your CMS, Sitefire updates it instead of creating a duplicate.
### Tables in Webflow
Webflow's rich text fields don't support HTML tables. When your article contains tables, Sitefire converts them to a copyable HTML snippet inside a blockquote. To display the table on your site:
1. Push the article to Webflow
2. Open it in the Webflow Designer
3. Find the blockquote containing the table HTML
4. Replace it with a **Custom Code** embed block
5. Paste the HTML into the embed block
---
# framer
import { Steps, Callout } from 'nextra/components'
# Framer
This guide walks you through creating a Framer API key for [CMS integration](/docs/cms/setup) so Sitefire can publish content to your site.
### Open Site Settings
In the Framer editor, click the **gear icon** (top-right) to open **Site Settings**. Make sure you're on the **General** tab in the left sidebar, then scroll down past Site Title, Site Description, and Preview.

### Create an API Key
Scroll down to the **API Keys** section and click **Add API Key**.

Copy the generated key immediately - it won't be shown again.
Paste the key into the **API Key** field in Sitefire when [connecting your Framer project](/docs/cms/setup). Then choose your collection and map your fields to finish setup.
---
# Improve Content
# Improve Content
The [diagnosis](/docs/4c-content-classification) found that your page matches the dominant content type (C1) and format (C2) for this topic - but it's not being cited by AI engines, or earns far fewer citations than competitors. You have the right content. It needs to be improved.
Sitefire scores the page with the **GEO Score** and generates a full improvement briefing with prioritized fixes.
---
## GEO Score
The GEO Score measures how well a page is optimized to be cited by AI engines like ChatGPT, Perplexity, or Google AI Overviews. It answers one question: when an AI reads this page, can it extract trustworthy, well-structured content worth citing?
A high GEO Score doesn't guarantee citations, but a low one almost guarantees you won't get them.
---
## The 11 Tests
Every page is evaluated against 11 tests, grouped into three categories. Each test scores 0-10 and belongs to an impact tier (T1 = 3x weight, T2 = 2x, T3 = 1x) that determines how much it affects the final score.
### Authority - Can the AI trust what's on the page?
| # | Test | Impact | Before | After |
| :--- | :--- | :--- | :--- | :--- |
| 1 | Source Citations | T1 (3x) | "Studies show most users prefer simple designs." | "78% of users prefer simple designs (Webflow UX Survey, 2024)." |
| 2 | Statistics & Data | T1 (3x) | "Significantly improves build times for many teams." | "Reduces average build time by 43% across 1,200 teams (Source, 2024)." |
| 3 | Freshness Signals | T2 (2x) | No date visible on the page. | "Last reviewed: January 2026" below the title. |
| 4 | Author Attribution | T2 (2x) | No byline. Content appears anonymous. | "By Sarah Chen, Head of Design" with link to bio. |
### Readability - Can the AI extract the answer quickly?
| # | Test | Impact | Before | After |
| :--- | :--- | :--- | :--- | :--- |
| 5 | Answer-First Structure | T1 (3x) | "There are several factors to consider when choosing a website builder..." | "Webflow is the best website builder for design-led teams." |
| 6 | Paragraph Length | T2 (2x) | One paragraph covering pricing, features, and limitations in 8 sentences. | Three paragraphs - one per topic, each 2-3 sentences. |
### Structure - Can the AI parse the page correctly?
| # | Test | Impact | Before | After |
| :--- | :--- | :--- | :--- | :--- |
| 7 | FAQ + Schema | T1 (3x) | Questions on the page but no structured data markup. | Each Q&A pair in FAQPage JSON-LD with matching visible HTML. |
| 8 | Tables & Structured Data | T1 (3x) | "Plan A costs $14/mo, Plan B $16/mo, Plan C $17/mo." | A comparison table with columns for Plan, Price, and Features. |
| 9 | Semantic HTML | T2 (2x) | Content in nested `
` elements. | Main content in `
`, sections in ``. |
| 10 | Heading Hierarchy | T2 (2x) | Multiple H1 tags, H2 jumping to H4, generic labels. | Single H1, descriptive H2s for each section, H3s for subsections. |
| 11 | Visible vs Hidden Content | T3 (1x) | FAQ answers collapsed inside JavaScript accordions. | All answers visible in the initial HTML. |
---
## Scoring
Each test scores 0 to 10, multiplied by its tier weight (T1 = 3x, T2 = 2x, T3 = 1x).
**GEO Score = (sum of all weighted test scores / 250) x 100**
The maximum of 250 comes from: (5 T1 tests x 10 x 3) + (5 T2 tests x 10 x 2) + (1 T3 test x 10 x 1) = 150 + 100 + 10 = 250.
---
## From Score to Action
The raw 0-10 scores get translated into severity levels that determine what to fix first. Severity depends on both the score and the test's impact tier - a low score on a T1 test is more urgent than the same score on a T2 test.
| Impact | Score 0-3 | Score 4-7 | Score 8-10 |
| :--- | :--- | :--- | :--- |
| **T1 (3x)** | Critical | Moderate | No action |
| **T2 (2x)** | Moderate | Minor | No action |
| **T3 (1x)** | Minor | Minor | No action |
A score of 3 on Source Citations (T1) is **Critical**. The same score of 3 on Freshness (T2) is only **Moderate**. The tier reflects how much that dimension actually moves AI citation rates.
---
## How an Improve Content Action Looks
After scoring the page, Sitefire generates a full improvement briefing:
1. **GEO Score audit** - each of the 11 tests scored with a rationale
2. **Quick wins** - the 2-3 highest-impact, lowest-effort fixes
3. **Recommendations** - every improvement with severity, affected section, before/after examples, and estimated effort
4. **Competitor comparison** - your page side-by-side with the top-cited competitors across key dimensions
5. **Implementation checklist** - grouped by effort (quick wins, content enrichment, technical changes)
---
# Engage UGC
# Engage UGC
Coming soon.
---
# Editorial Coverage
# Editorial Coverage
Coming soon.
---
# Create Content
# Create Content
Create Content is recommended when the [diagnosis](/docs/4c-content-classification) finds that your site does not have the right owned page for a topic cluster.
That usually means one of two things:
- **C1 mismatch:** AI engines cite a different kind of page than the one you have. Example: cited results are blog posts, but your site only has a product page.
- **C2 mismatch:** AI engines cite the same broad page type, but a different article format. Example: cited results are comparison articles, but your site only has a how-to guide.
When C1 or C2 do not match, improving the existing page is the wrong move. Sitefire creates a new content briefing that matches the winning source pattern instead.
---
## What Sitefire Creates
The action produces a structured briefing for a new page or article:
| Field | What it defines |
| :--- | :--- |
| Target | The planned URL or slug where the content should live |
| Keywords | Primary and secondary queries from the topic cluster |
| Intent | The questions the article must answer |
| Format | The C2 article format that wins in the citation or SERP data |
| Outline | Section-by-section writing guidance with evidence, brand POV, links, and word ranges |
| Why this works | The format, brand angle, and GEO rationale behind the recommendation |
The briefing is built to be executable by a writer or by Sitefire's article generation flow.
---
## Format Examples
Create Content can recommend different formats depending on the winning C2 pattern:
| Format | When it fits |
| :--- | :--- |
| How-to guide | The cited pages explain a process step by step |
| Listicle | The cited pages rank, enumerate, or compare multiple options |
| Definitive guide | The cited pages win through depth and broad topic coverage |
| Comparison | The cited pages answer X vs Y or category evaluation queries |
| Review | The cited pages evaluate one product, service, or approach |
| Roundup | The cited pages curate expert or third-party input |
| Statistics post | The cited pages aggregate data points and trends |
| Checklist | The cited pages help readers verify or execute a task |
| Case study | The cited pages win through real-world evidence and results |
The format is not selected from a generic preference list. It comes from the 4C diagnosis: what AI engines already cite, what ranks in search, and what your site is missing.
---
## Create vs. Improve
Use Create Content when the page type or article format is missing. Use [Improve Content](/docs/actions/improve-content) when you already have the right C1 and C2 match, but the page lacks authority, readability, structure, or freshness signals.