AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Peec Report

skill-antonioblago-peec-ai-skills-peec-report · by AntonioBlago

Weekly / monthly closed-loop reporter for Peec AI visibility growth. Measures what moved (visibility per prompt, cluster, zone) against what was invested (content published, pitches sent, forum answers), detects winning patterns, and outputs a ranked next-actions list — not a dashboard. Closes the feedback loop for the growth agent. Use weekly for active projects or monthly for maintenance-mode.

No reviews yet
0 installs
18 views
0.0% view→install

Install

$ agentstack add skill-antonioblago-peec-ai-skills-peec-report

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-antonioblago-peec-ai-skills-peec-report)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Peec Report? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Growth Loop Reporter

Role

Close the loop. Three questions per cycle, answered in ≤400 words:

  1. What moved? — visibility trend per prompt, cluster, zone
  2. Why? — which specific investment caused which lift
  3. What next? — 3 prioritized actions, at least 1 stop-doing

Output is a short narrative + actions, not a dashboard. Fifteen charts don't get read. 400 words do.

Input

  • project_id — Peec project
  • reporting_windowweekly | monthly | quarterly
  • optional baseline_date — default 28 / 90 / 180 days back
  • optional include_clusters — auto-detected via zone:* tags if peec-cluster has run

Output

  • One narrative at /growth_loop/YYYY-MM-DD_report.md (schema below)
  • One learnings.json with winners / losers / surprises / nextactions / stopdoing — consumed by the next peec-cluster and peec-outreach runs as priors

When to use

  • Weekly for active projects with running content + outreach
  • Monthly for retainer projects in maintenance
  • Quarterly as strategy review — feeds the next peec-cluster run
  • After a launch, publication, or new zone going live

Do not use when:

  • Project has /growthloop/setupstate.json

If missing OR completedat missing OR phasescompleted lacks {competitors, prompts, topics, tags}: STOP. Output: "No Peec setup state found at /growthloop/setupstate.json. Run /peec-setup first." If completedat older than 90 days: WARN once, continue. Use peecprojectid from state — don't re-resolve via listprojects.


### 1. Pull time-series of core metrics

Overall brand visibility trend

mcp__peec-ai__getbrandreport( projectid, startdate=baseline, enddate=now, dimensions=["date"], filters=[{field: "brandid", operator: "in", values: [ownbrandid]}] )

Per prompt (top-N by weight)

mcp__peec-ai__getbrandreport( projectid, startdate=baseline, enddate=now, dimensions=["promptid", "date"], filters=[{field: "brandid", operator: "in", values: [ownbrand_id]}] )

Per zone (if zone:* tags exist)

for each zonetag: mcp_peec-ai__getbrandreport( projectid, startdate=baseline, enddate=now, dimensions=["tagid", "date"], filters=[{field: "tagid", values: [zonetag_id]}] )


Per bucket (prompt or zone) compute:
- `visibility_t0` (start of window)
- `visibility_t1` (end of window)
- `delta` = t1 − t0
- `trend` = linear-regression slope across the window

### 2. Assemble investment log

New content

git log --since= --author= -- "Content Automation/blog/"

or: filesystem scan for blog/YYYY-MM-DD_*/

Outreach

Read: /outreach/*outreachlog.md

all pitches with status != 'queued' in the window

Taxonomy changes in Peec

mcp__peec-ai__listprompts + listbrands + list_tags

diff against a snapshot from the start of the window (if one exists)


Produce: one list of investments with `date | type (content|outreach|taxonomy) | target (prompt_id or url) | description`.

### 3. Match investment → lift

- **Content investment** → prompts whose focus_keyword is referenced in the HTML body
  - Extract focus keyword from `publish_.py` (`RANK_MATH_FOCUS`)
  - Match against `list_prompts` via embedding or string-contains
- **Outreach investment (citation live)** → prompts where `target_url` appears in `get_url_report`
  - `mcp__peec-ai__get_url_report(filters=[{url in [target_url]}])`
- **Zone intervention** → all prompts with the zone tag

### 4. Compute attribution per investment

attributionscore = sum(affectedprompts[p].delta for p in matched_prompts)

  • baseline_drift

**baseline_drift** = median delta of non-affected prompts in the same window. This isolates the intervention effect from general drift.

### 5. Detect patterns (three buckets)

**Winners** (high attribution):
- Which content type (HOW_TO / COMPARISON / PILLAR) moved the most
- Which outreach target class (EDITORIAL / UGC / REFERENCE) produced most citations
- Which zone grew fastest

**Losers** (negative or zero attribution despite investment):
- Content published but not indexed / cited
- Pitches with no response after 14 days
- Zones stagnant despite new content (→ content misses the intent layer)

**Surprises** (positive delta without a direct investment):
- Prompts that gained without direct action (organic spillover from another page?)
- Sudden drops (competitor action? algorithm shift?)

### 6. Generate the narrative

Claude synthesizes a narrative **≤400 words** using the schema below.

### 7. Persist learnings

Save to `/growth_loop/YYYY-MM-DD_learnings.json` — used by the next runs of `peec-cluster` and `peec-outreach` as priors.

---

## Narrative schema

```markdown
# Growth loop —  ()

## Headline

## What moved
- Overall visibility: X% → Y% ()
- Strongest zone:  (+Z%)
- Weakest zone:  (flat or −)
- Top-3 single-prompt lifts: 

## What actually worked

## What did not work

## DO NOW (prioritized, max 3)
1. 
2. 
3. 

## STOP DOING
- 

Learnings JSON schema

{
  "period": {"start": "...", "end": "...", "window": "weekly"},
  "overall_visibility_delta": 0.04,
  "winners": {
    "content_types": [{"type": "HOW_TO_GUIDE", "avg_lift": 0.08, "n": 2}],
    "outreach_domains": [{"domain": "evergreen.media", "citations_gained": 5}],
    "zones": [{"zone_tag": "retainer-decision", "lift": 0.12}]
  },
  "losers": {
    "content_types": [],
    "outreach_domains": [{"domain": "", "response_rate": 0.0}]
  },
  "surprises": [],
  "next_actions": ["..."],
  "stop_doing": ["..."]
}

Quick reference

| Step | Tool | |---|---| | Overall visibility trend | mcp__peec-ai__get_brand_report(dimensions=["date"]) | | Per prompt | mcp__peec-ai__get_brand_report(dimensions=["prompt_id", "date"]) | | Per zone (if tagged) | mcp__peec-ai__get_brand_report(dimensions=["tag_id", "date"]) | | Citation source check | mcp__peec-ai__get_url_report(filters: url in [...]) | | Content log | git log on content-automation path | | Outreach log | local /outreach/*.md |


Done criteria (self-check before returning)

A growth report is only complete when:

  1. Narrative is ≤400 words — longer reports aren't read and usually hedge
  2. Attribution is reasoned, not guessed — every winner / loser needs a causal mechanism, not just correlation
  3. Exactly 3 next-actions — not 7, not 1. Three is the weekly capacity ceiling
  4. At least 1 STOP DOING — the courage to discard is worth more than new ideas
  5. learnings.json persisted — without it, no loop

Guardrails (do not do these)

  • Do not ship a dashboard — a dashboard is not a report
  • Do not sell correlation as causation — visibility went up; competitor also had an SSL outage
  • Do not ignore baseline drift — without a comparison group, every lift is suspect
  • Do not skip the STOP DOING line — addition without subtraction fragments energy
  • Do not ship a report without persisting learnings — the next cycle can't learn
  • Do not run this before 4 weeks of history — too little signal, pattern detection degenerates to noise

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.