peec-outreach — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited peec-outreach (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
project_id — Peec projectscope — editorial | ugc | reference | owned | all (default all)weekly_cap — max pitches per week (default 5)own_asset_url — an own URL to actively pitch (case study, pillar, tool)<project>/outreach/YYYY-Wkk_outreach_log.md (schema below)peec-report@peec-setup Phase 8 or @peec-content-intel Phase 6 — when the opportunity list is inget_actions surfaces high-opportunity editorial / ugc / reference rowsDo not use when:
get_actions first)content-write first)Per _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.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
│ High impact │ Low impact
─────────┼──────────────────┼──────────────────
Easy ask │ QUICK WINS │ SNACKABLE
│ (pitch now) │ (when time allows)
─────────┼──────────────────┼──────────────────
Hard ask │ STRATEGIC │ DROP
│ (build relation)│opportunity_score × retrieval_%easy = reddit thread (just post), Gutefrage, OMR forummedium = editorial blog (email), LinkedIn authorhard = major publication, closed community| 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
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 <topic> — <1-line angle>
Hi <author>,
I came across your article "<title>" while researching <concrete tie-in>.
One section could use an added angle from my practice: <concrete section>.
I've worked <N> years as <role> with <specialization>. In a recent
<project context>, I observed <concrete number / finding>.
Would a 2–3 sentence expert quote or a short sidebar with my take work?
I can deliver copy + name + headshot within 48 hours.
<signature with own domain + 1 reference URL>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:
#### Gutefrage / forum answer
Same shape as Reddit, 100–200 words. Forum users prefer compact answers.
#### YouTube comment + follow-up
mcp__peec-ai__get_project(project_id)
# or: mcp__visiblyai__get_project(project_id)
# → brand_name, USPs, custom_content_prompt, crawl_summaryPer candidate, replace every angle bracket with specific detail:
<concrete section> → real quote from target URL<concrete number> → real number from own project (retainer case, traffic lift, measurable result)<project context> → concrete industry of the target authorFile: <project>/outreach/YYYY-Wkk_outreach_log.md
# Outreach log — week <ISO-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
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 sourceWinners (citation gain > baseline) feed into peec-report as a "working leverage pattern" — next cycle prioritizes similar targets.
| 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"]) |
An outreach batch is only complete when:
weekly_cap pitches — 5 quality pitches beat 20 generic onesstatus=sent | postedget_url_report within 6 weeks"~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.