← SearchFitCONTENT HISTORY

Update to SearchFit

Snapshot Sep 30, 2026 · 23:00 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "performance-report",
  "description": "Generate a complete performance report for a brand across AI visibility, Google Search Console, Google Analytics and content. Use for a monthly report, a client report, a quarterly review, an executive summary, or \"how are we doing overall\". Do not use for a single metric lookup, which belongs to the focused skill for that source.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 2433
    }
  ],
  "skill_md_contents": "---\nname: performance-report\ndescription: Generate a complete performance report for a brand across AI visibility, Google Search Console, Google Analytics and content. Use for a monthly report, a client report, a quarterly review, an executive summary, or \"how are we doing overall\". Do not use for a single metric lookup, which belongs to the focused skill for that source.\n---\n\n# Performance report\n\nProduce the report an agency sends a client, or a marketing lead takes into a review: several sources, one narrative, with the AI surface alongside classic search.\n\nEvery tool here is scoped to one brand and takes `brand_id`.\n\n## Step 1: agree the shape before gathering\n\nAsk for, or confirm sensible defaults on:\n\n- **Which brand.** Call `list_brands`. If more than one, ask.\n- **The period.** Default to the last full calendar month, not the last 30 days, because a report that spans two part months cannot be compared with the next one.\n- **The comparison.** Default to the equivalent previous period.\n- **The audience.** A client report leads with outcomes. An internal review can carry the detail behind them.\n\nGathering everything first and asking afterwards wastes the user's time and credits, so settle this first.\n\n## Step 2: check what is actually available\n\nCall `list_connectors`.\n\nReport on the sources that are connected and name the ones that are not. A report missing GA4 is still useful. A report that quietly omits GA4 without saying so is misleading, and the reader has no way to know.\n\n## Step 3: gather\n\nWork through the sources that are connected. Skip any that return nothing rather than padding.\n\n**AI visibility**, the part most reports do not have:\n- `get_visibility_overview` for share of tracked prompts where the brand appears.\n- `get_competitor_analysis` for how rivals place on the same prompts.\n- `get_visibility_insights` for the gaps worth acting on.\n- `list_scans` to confirm more than one scan exists before describing any movement.\n\n**Google search:**\n- `get_search_performance` for clicks, impressions, CTR, position.\n- `get_top_queries` and `get_top_pages` for what drove it.\n\n**Analytics:**\n- `get_ga4_metrics` for users and sessions.\n- `get_ga4_traffic_breakdown` for channels.\n- `get_ga4_events` for conversions.\n\n**Content shipped in the period:**\n- `list_content` and `list_publications` for what went live.\n- `get_published_content_urls` to tie articles to their search performance.\n\n**Site health**, when a technical audit is in scope:\n- `get_audit_issues` for what is still broken.\n\n## Step 4: write it\n\nStructure:\n\n1. **Headline.** Three or four numbers with their direction: AI visibility, clicks, users, conversions.\n2. **What changed and why.** Tie movement to work done. \"Published 6 articles, 4 now ranking, driving 340 of the 1,200 new clicks\" is a report. \"Traffic is up 12%\" is a number.\n3. **AI visibility.** Where the brand appears in AI answers, which competitors take the prompts it loses, and what would close the gap.\n4. **Search performance.** Queries and pages that moved, with position and CTR read together.\n5. **Audience and conversions.** What the traffic did.\n6. **Next period.** Three or four specific actions drawn from the data, each naming the page, query or prompt it applies to.\n\n## Step 5: rules that keep it trustworthy\n\nA report is read by people who will not check the tools, so the burden of accuracy sits here.\n\n- **Label every window and source.** Each number carries its date range and where it came from.\n- **Never describe a trend from one measurement.** With a single AI visibility scan, report the position and say a trend needs a second scan.\n- **Exclude the incomplete tail.** Search Console lags two to three days and GA4's current day is partial. Say the window excludes them.\n- **Never invent a number, and never fill a gap to make the report look complete.** Say what is missing and why.\n- **Report bad results plainly.** 0% AI visibility, a traffic fall, an article that did nothing: state it, then say what to do. A report that only carries good news is worthless, and the reader will discover the truth anyway.\n- **Separate correlation from cause.** Traffic rising in the same month as a publishing push is not proof the push caused it. Say what the data supports and what it only suggests.\n- **Compare like with like.** Equal length periods, same property, same market.\n\n## Boundaries\n\n- This skill reads and assembles. It does not publish content, start scans or delete anything. If the report shows work is needed, hand off to content-production, ai-visibility-report or technical-site-audit.\n- A large scan or crawl mid report costs credits and time. Ask first, and say the report will otherwise use existing data.\n- For one metric, use the focused skill instead. This one is for the whole picture.\n"
}

SHA-256: 53ce4023265c1665f96526b024d520f2cbffb3a803635d9eee365f0960397bff