Skip to content
Marketing
Skill

/peec-content-intel

Content-intelligence workflow that turns a Peec AI visibility gap into a publish-ready content brief. Combines Peec (prompt visibility, source URLs, scraped chat responses), Visibly AI (backlinks, onpage, keywords, GSC), and Reddit / forum mining. Uses Query Fan-Out to expand

From plugin
peec-ai-skills
99 skills1 hook
Install
$ npx -y skills add AntonioBlago/peec-ai-skills --skill peec-content-intel --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/peec-content-intel

Context preview

The summary Claude sees to decide when to auto-load this skill.

Content-intelligence workflow that turns a Peec AI visibility gap into a publish-ready content brief. Combines Peec (prompt visibility, source URLs, scraped chat responses), Visibly AI (backlinks, onpage, keywords, GSC), and Reddit / forum mining. Uses Query Fan-Out to expand

SKILL.md

peec-content-intel.SKILL.md
name: peec-content-intel
description: Content-intelligence workflow that turns a Peec AI visibility gap into a publish-ready content brief. Combines Peec (prompt visibility, source URLs, scraped chat responses), Visibly AI (backlinks, onpage, keywords, GSC), and Reddit / forum mining. Uses Query Fan-Out to expand one prompt into 5–8 sub-queries and scores competitor URLs for attackability. Use when the user wants to find content opportunities, evaluate competitor content, build a content brief from Peec data, or discover what content wins specific AI prompts.
user-invocable: true

Peec Content Intel

Role

For one Peec prompt that the brand is losing, produce one publish-ready content brief: sub-queries, verbatim buyer pains, competitor breakdown, outline, focus keywords, and outreach targets.

Input

  • `project_id` — Peec project (read from `setup_state.json` per pre-flight; do not re-resolve)
  • `prompt_id` — the target prompt (must have ≥24h of data)
  • optional `date_range` — default last 28 days
  • `language` — read from `setup_state.json` (`prompt_language`); user can override per-run, but never default to `en` silently
  • `target_country` — read from `setup_state.json`; drives forum source picks (DE→reddit/r/de+gutefrage+t3n, AT→reddit+derstandard, US→reddit+quora, CH→reddit/r/de+r/fr) and SERP/GSC market filters
  • `page_type` — **required**. Must be one of the values in `setup_state.page_type_taxonomy`. If the user doesn't pass it, the skill infers the best fit from the funnel stage of the target prompt + competitor top-url classifications, then ASKS the user to confirm ("Suggested page_type: `landing_page` (Decision-stage, competitors use PRODUCT_PAGE). OK? [y/n/override]"). Never guess silently — a brief with the wrong page_type is a wasted publish cycle.
  • `business_type` — read from `setup_state.json`. Used to validate `page_type` selection against the allowed taxonomy matrix.
  • `audience` — read from `setup_state.json`. `audience.primary` and `audience.pain_points` feed the brief's "Why this page wins" + "Voice / tonality" sections directly; do not restate them in the brief prose, USE them.

Output

One markdown brief per prompt, saved at `briefs/<YYYY-MM-DD>_<prompt-slug>/brief.md`, plus the raw data next to it (`competitor-urls.json`, `forum-pains.json`, `scoring.json`). No dashboards.

Every brief starts with a **front-matter block** that downstream skills (`peec-report`, `peec-learn`) consume for attribution:

---
brief_id:      <YYYY-MM-DD>_<prompt-slug>
prompt_id:     pr_xxxxxx
business_type: b2b-service
page_type:     landing_page           # MUST be in setup_state.page_type_taxonomy
target_url:    /seo-retainer          # planned publish path
funnel_stage:  Decision                # from the prompt's topic
audience:
  primary:     "Shop-Owner DACH, 3-20 MA, Shopify"
  pain_hook:   "3 Agenturen gewechselt, keine Ergebnisse"
success_metric_4w:
  prompt_visibility: "0% → ≥15%"
  zone_visibility:   "4% → ≥20%"
---

A brief without this front-matter block is invalid and will be rejected by `peec-report`.

When to use

  • "Which content wins Peec prompt X?"
  • "Analyze the sources competitors get cited for on prompt X"
  • "What's the content gap between me and competitor.de?"
  • Runs **after** `peec-setup` — the project must exist with structured prompts.

Do not use when:

  • Prompt has <24h of Peec data (no chats / sources yet)
  • No own-brand absence on the prompt (nothing to close)

---

Pipeline

0. Pre-flight — setup state required

Per [`_shared/SETUP_STATE.md`](../_shared/SETUP_STATE.md), this skill refuses to run without a completed setup:

Read <project>/growth_loop/setup_state.json
If missing OR completed_at missing OR phases_completed lacks
   {competitors, prompts, topics, tags}:
     STOP. Output:
       "No Peec setup state found at <project>/growth_loop/setup_state.json.
        Run /peec-setup first."
If completed_at older than 90 days: WARN once, continue.
Use peec_project_id from state — don't re-resolve via list_projects.

1. Find the gap URLs

mcp__peec-ai__get_brand_report(
  project_id, start_date, end_date,
  dimensions=["prompt_id"],
  filters=[{field: "prompt_id", operator: "in", values: [prompt_id]}]
)
mcp__peec-ai__get_url_report(
  project_id, start_date, end_date,
  dimensions=["prompt_id"],
  filters=[
    {field: "prompt_id", operator: "in", values: [prompt_id]},
    {field: "gap", operator: "gt", value: 0}
  ],
  limit=25
)

Output: up to 25 URLs, sorted by retrieval frequency, each with a `classification` (LISTICLE / ARTICLE / COMPARISON / HOW_TO_GUIDE / PROFILE / DISCUSSION).

Interpretation:

  • **LISTICLE / COMPARISON** → outreach targets (get included)
  • **HOW_TO_GUIDE / ARTICLE** → own-content targets (write and publish)
  • **PROFILE / DISCUSSION (reddit, youtube)** → community targets (participate)

2. Query Fan-Out

**Primary path — `mcp__visiblyai__query_fanout`** (Visibly MCP ≥ v0.6.0, ~3–5 credits):

mcp__visiblyai__query_fanout(
  url="https://<own-or-competitor-domain>/<page>",
  keyword="<focus_keyword>",
  data_source="dataforseo",   # or "gsc" / "both"
  gsc_property=null,          # required if data_source includes gsc
  language="de"               # or "en"
)

Returns: `fanout_queries[]`, `coverage_score` (0–1), `covered_count` / `total_count`, `gaps[]` (sub-queries not addressed on the URL — this is the content backlog), `coverage_details[]`.

Fire once per top gap URL from Phase 1. Replaces sub-query generation + crawling + semantic match in one call.

**Fallback — inline heuristic** (if Visibly MCP unavailable or credits tight):

Generate 6 sub-queries along fixed intent axes: 1. Synonym (same intent, different wording) 2. Decision ("what does it cost", "when to switch") 3. Comparison ("X vs Y") 4. Problem ("why doesn't X work") 5. Long-tail (narrow niche) 6. Forum / community (informal phrasing)

Coverage matching is then skipped — flag that explicitly in the brief

Read more
Ships withpeec-ai-skills

Production-tested Claude Code skills for Peec AI — the brand-visibility tracking platform for LLM-powered search (ChatGPT, Perplexity, Google AI Overviews, Gemini).

Get the whole plugin
Stats
9
Stars
0
Forks
Maintained
Maintenance
Python
Language
MIT
License
4mo ago
Last commit
4mo ago
Created

Repo: AntonioBlago/peec-ai-skills

Other skills on peec-ai-skills.