Install
$ agentstack add skill-antonioblago-peec-ai-skills-peec-outreach ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo 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.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
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 →About
Citation Outreach
Role
Writing new content isn't enough — most AI-visibility lift comes from citations on domains LLMs already crawl. This skill turns get_actions plus forum discovery into a prioritized outreach pipeline with concrete, target-specific pitches, a tracker, and a citation-gain measurement after 4 weeks.
Input
project_id— Peec project- optional
scope—editorial|ugc|reference|owned|all(defaultall) - optional
weekly_cap— max pitches per week (default 5) - optional
own_asset_url— an own URL to actively pitch (case study, pillar, tool)
Output
- One outreach tracker at
/outreach/YYYY-Wkk_outreach_log.md(schema below) - One ready-to-send pitch per queued target, filled with concrete quote + concrete offer
- After 4 weeks: one attribution summary feeding into
peec-report
When to use
- After
@peec-setupPhase 8 or@peec-content-intelPhase 6 — when the opportunity list is in - Weekly ritual: 3–5 quality pitches to stay independent of Google
- Whenever Peec
get_actionssurfaces high-opportunityeditorial/ugc/referencerows
Do not use when:
- No opportunity list from Peec (run
get_actionsfirst) - Brand has no reference page / case study to pitch yet (run
content-writefirst)
Pipeline
0. Pre-flight — setup state required
Per [_shared/SETUP_STATE.md](../shared/SETUPSTATE.md), this skill refuses to run without a completed setup:
Read /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 /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. Aggregate opportunity sources
mcp__peec-ai__get_actions(project_id, scope="overview", start_date, end_date)
mcp__peec-ai__get_actions(project_id, scope="editorial", start_date, end_date)
mcp__peec-ai__get_actions(project_id, scope="ugc", domain="reddit.com", start_date, end_date)
mcp__peec-ai__get_actions(project_id, scope="ugc", domain="youtube.com", start_date, end_date)
mcp__peec-ai__get_domain_report(
project_id, start_date, end_date,
filters=[{field: "gap", operator: "gt", value: 0}],
limit=40
)
Merge into one candidate table: target_url | domain | type | opportunity_score | retrieval_% | citation_rate | mentioned_brand_ids
2. Sort into 4 quadrants
│ High impact │ Low impact
─────────┼──────────────────┼──────────────────
Easy ask │ QUICK WINS │ SNACKABLE
│ (pitch now) │ (when time allows)
─────────┼──────────────────┼──────────────────
Hard ask │ STRATEGIC │ DROP
│ (build relation)│
- Impact =
opportunity_score × retrieval_% - Difficulty:
easy= reddit thread (just post), Gutefrage, OMR forummedium= editorial blog (email), LinkedIn authorhard= major publication, closed community
3. Extract contact per target
| Target type | Contact source | |---|---| | Editorial blog | WebFetch(url) → author box / LinkedIn / contact page | | Reddit thread | OP username visible in mcp__peec-ai__get_url_content output | | YouTube | channel URL from channel_title → /about page | | Gutefrage | no direct contact (post the answer directly) | | LinkedIn Pulse | author profile in URL path |
Produce: target_url | target_type | contact_method | contact_handle | language | topic_focus
4. Pick pitch template
Write in the target's language. The templates below are structural — fill them in the language of the target URL.
Editorial inclusion pitch
Subject: Expert quote for your article on —
Hi ,
I came across your article "" while researching .
One section could use an added angle from my practice: .
I've worked years as with . In a recent
, I observed .
Would a 2–3 sentence expert quote or a short sidebar with my take work?
I can deliver copy + name + headshot within 48 hours.
Rule: quote the concrete section, offer a concrete addition. No generic "happy to collaborate".
Reddit thread answer
Not a pitch — a direct, substantive answer to the OP (150–300 words). Rules:
- First 2 sentences answer the question directly — no preamble
- Middle: one concrete method / number / example from own practice
- Optionally end with one own source — only if it completes the answer, never as CTA
- Match the OP's language exactly
- Use a personal account, never a brand account (reddit policy)
Gutefrage / forum answer
Same shape as Reddit, 100–200 words. Forum users prefer compact answers.
YouTube comment + follow-up
- Substantive comment under the video (300–500 chars, question + addition)
- After 48h without response: email to the channel owner referencing 3 of your own videos / posts that match the channel theme
5. Fill templates with project context
mcp__peec-ai__get_project(project_id)
# or: mcp__visiblyai__get_project(project_id)
# → brand_name, USPs, custom_content_prompt, crawl_summary
Per candidate, replace every angle bracket with specific detail:
- `` → real quote from target URL
- `` → real number from own project (retainer case, traffic lift, measurable result)
- `` → concrete industry of the target author
6. Append to tracker
File: /outreach/YYYY-Wkk_outreach_log.md
# Outreach log — week
| # | Target | Type | Status | Sent | Replied | Citation | Notes |
|---|--------|------|--------|------|---------|----------|-------|
| 1 | evergreen.media/ratgeber/ki-seo | editorial | sent | 2026-04-22 | pending | — | expert quote on retainer pricing |
| 2 | r/selbststaendig/comments/xyz | reddit | posted | 2026-04-22 | — | answer_score=12 | — |
Status values: queued → sent | posted → replied → citation_live | declined | ignored
7. Measure after 4 weeks
For each target with status=citation_live:
mcp__peec-ai__get_url_report(filters=[{field: "url", values: [target_url]}])
# retrievals before vs. after
mcp__peec-ai__get_brand_report(...)
# own-brand visibility for prompts that had this URL as source
Winners (citation gain > baseline) feed into peec-report as a "working leverage pattern" — next cycle prioritizes similar targets.
Quick reference
| Step | Tool | |---|---| | Opportunity sources | mcp__peec-ai__get_actions(scope=overview/editorial/ugc) | | Gap URLs | mcp__peec-ai__get_domain_report(filters: gap>0) | | Thread content + OP | mcp__peec-ai__get_url_content | | Contact extraction | WebFetch on target URL | | Project frame for pitch | mcp__peec-ai__list_projects + get_project | | Citation measurement | mcp__peec-ai__get_url_report(dimensions=["date"]) |
Done criteria (self-check before returning)
An outreach batch is only complete when:
- ≤
weekly_cappitches — 5 quality pitches beat 20 generic ones - Every pitch has a concrete quote from the target URL
- Every pitch offers something specific — a concrete asset, by a concrete date
- Tracker is live — every pitch logged with
status=sent | posted - Each pitch has an explicit success criterion: "expecting a mention in section X, measurable via
get_url_reportwithin 6 weeks"
Guardrails (do not do these)
- Do not send generic "happy to contribute" pitches — quote something specific or don't send
- Do not use a brand account on Reddit / Gutefrage — it gets you banned; only personal accounts
- Do not skip follow-ups — 30–50% of editorial citations come from a follow-up 7–10 days later
- Do not exceed the weekly cap — 3 considered pitches beat 15 mass pitches
- Do not pitch before there's an asset to back it — no case study or reference page = no substance
- Do not measure before 4 weeks — LLM indexing of new citations takes time
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: AntonioBlago
- Source: AntonioBlago/peec-ai-skills
- License: MIT
- Homepage: https://antonioblago.de
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.