Skip to content
Business
Skill

/influencer-discovery

Find the bloggers/creators who can help promote your work, capture their contact info, and append them to the target sheet in Google Sheets. Targets must bring their own audience — followers, readers, subscribers; people building their own product are not targets. Use for

BOOST
From plugin
influencer-discovery
2191 skill
Install
$ npx -y skills add tigerless-labs/influencer-discovery --skill influencer-discovery --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/influencer-discovery

Context preview

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

Find the bloggers/creators who can help promote your work, capture their contact info, and append them to the target sheet in Google Sheets. Targets must bring their own audience — followers, readers, subscribers; people building their own product are not targets. Use for

SKILL.md

influencer-discovery.SKILL.md
name: influencer-discovery
description: >
  Find the bloggers/creators who can help promote your work, capture
  their contact info, and append them to the target sheet in Google Sheets.
  Targets must bring their own audience — followers, readers, subscribers;
  people building their own product are not targets. Use for requests like
  "find a batch of bloggers doing X", "top up the target sheet", "dig up
  contact info for these people", "how do I get emails on this platform".
  Covers X/Twitter, TikTok, Instagram, Threads, YouTube, Reddit, Mastodon,
  DEV.to, Hashnode, Blog, Newsletter, Podcast, plus distribution Websites
  (tool-recommendation sites, directory sites).

  Stops at capturing contact info. Sending, tiering, deal tracking, and click
  settlement are all out of scope — do not use this skill for those requests.

influencer-discovery

One sentence: **hit the qualified-row count the user asked for, every row with contact info, not one row a duplicate.**

Who to find

**People who can help us promote our work.** The criterion is **bring your own audience**: followers, readers, subscribers — when they post something, someone sees it.

**People building their own product are not targets.** They want traffic and won't distribute for us — capturing their email is a false positive, not output. This is the biggest false-positive source in this methodology; see [seller-vs-buyer.md](reference/methodology/_shared/seller-vs-buyer.md) for how to tell.

**The publication itself is not a target; its authors may be.** Multi-author publications have editors and pages, and the site only exposes a submissions inbox — one row per site collapses hundreds of authors into a single row. The move is to pull the author list from the publication and go out through the authors; see [5-media/](reference/methodology/5-media/index.md).

Read these first

Before starting, read `docs/design/index.md`, then the docs for the areas involved. **Invariants and scope are authoritative there; this file does not restate them**:

  • Append-only never modify, the log records everyone while the sheet records only the qualified, failures are not logged, better to miss a row than fabricate one

— [index.md](../../docs/design/index.md)

  • Two shapes and three stop semantics, the two hops, fetching rules — [platforms.md](../../docs/design/platforms.md)
  • What the log / target sheet / run report each record — [records.md](../../docs/design/records.md)
  • Dedup rules and their premise — [dedup.md](../../docs/design/dedup.md)

Run loop

The number the user gives is **the count of qualified rows that end up in the sheet**, not how many to crawl.

loop {
  discover a batch of candidates    you plan the order; it is not pre-baked
  check the log, skip seen ones     the key is (person, platform)
  capture contact info              platform page → their own site → contact page
  write the log                     record hit or miss; failures are not logged
  qualified rows go to the sheet    has contact info AND meets the requirements
}

Each round produces a run report. Plan, actuals, deviations, per-channel stop reasons, yield by channel — since the order is not pre-baked, this ledger is the only point where constraint lands.

Three things to nail down before any run

They are **deliberately not in config**: intent differs every round; hard-wiring them lets the last round hijack the next.

1. **How many** — qualified-row count. 2. **What "meets the requirements" means** — thresholds on topic, size, audience. Comparing yield across rounds requires comparing the thresholds along with it, or the numbers are not comparable. 3. **What to prioritize** — size, topic fit, contact-capture success rate, platform diversity; weights are set at use time.

Run without nailing these down and the yield numbers in the report mean nothing.

Two tiers

Two separate things; do not mix them:

**[reference/datalayer/](reference/datalayer/index.md) — each platform's capability boundary.** One file for the no-auth surface, one per platform for the rest: whether the route is plain HTTP, cookie, CLI, or a third-party API; what you can get; what it costs. **Record only what is confirmed; leave the unverified blank.**

**[reference/methodology/](reference/methodology/index.md) — where contact info comes in once you have the data.** Per-channel entry points, stop semantics, dedup keys, known boundaries. **Directory names are the collaboration priority**; the prose does not restate ordering. **Shared rules are written once** (the three shared pieces: second hop, seller-vs-buyer, cost ranking); each channel writes only its own exceptions.

**Each channel doc answers one question: how to get a blogger's email on this platform.** Selection reasoning, cost arguments, and vendor comparisons do not go in the channel doc — cost belongs in [cost-ranking.md](reference/methodology/_shared/cost-ranking.md), vendors in the data layer.

The data layer states the **boundary**; methodology **rules on whether to run based on it** and writes the how. Channels ruled out but still needing a guard against accidental runs are demoted to reference (`_not-run/`); channels with zero yield for the goal are deleted outright, the reason kept in methodology's index.

**Credentials live in `~/.config/influencer-discovery/.env` (`chmod 600`); variable names in [reference/datalayer/index.md](reference/datalayer/index.md#credentials).** Not in the repo, and do not borrow from `~/.config/last30days/.env`. On a missing key, report the missing variable name — do not guess, do not fall back to another project's credentials.

**Current platform distribution of the target sheet** (2026-08-06, 409 rows; used to judge investment priority, will drift as the sheet grows):

YouTube 113 · Newsletter 97 · Website 62 · Blog 38 · GitHub 28 · LinkedIn 26
Podcast 24 · Twitter 7 · Medium 4 · Reddit 3 · everything else 1 each

Among link domains, `passionfroot.me` a

Read more
Ships withinfluencer-discovery

Influencer discovery & contact enrichment pipeline that runs as a Claude Code skill — 15 channels, stdlib only, appends to a Google Sheet

Get the whole plugin
Stats
219
Stars
33
Forks
Active
Maintenance
Python
Language
1mo ago
Last commit
2mo ago
Created
2d ago
Added

Repo: tigerless-labs/influencer-discovery