Contact Extractor

SkillFiles & storage

Multi-source contact email extraction for KOL / media prospect rows. Given a CSV with personal_site / youtube / podcast_apple columns (e.g. output of linktree-expander or media-press-discovery), enrich each row with up to 3 ranked candidate emails + source label + confidence tier (high/medium/low/none). Triggers on "find contact email", "extract email from creator profile", "deep dig contact info", "enrich KOL contacts".

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Contact Extractor skill

What this skill tells your AI

The instructions your AI receives, as published by noique/cross-border-ecommerce-skills in tools/contact-extractor/SKILL.md and read by ahel’s review.

Multi-source email extraction with confidence tiering.

Quick Start

python3 scripts/extract_contacts.py linktree_expanded.csv --out linktree_with_contacts.csv
python3 scripts/extract_contacts.py creators.csv --verify --out enriched.csv  # SMTP MX probe

Sources tried (in order)

  1. personal_site root + /about + /contact + /press + /work-with-me
    • mailto: links → high confidence
    • Visible text emails → medium
  2. YouTube Data API v3 (set YOUTUBE_API_KEY env var)
    • Channel description email → high
  3. Apple Podcasts public API (no key needed)
    • RSS feed iTunes:owner email → high
  4. Email pattern guess (only if 1-3 produce no hits)
    • hello@, hi@, contact@, {firstname}@ on personal_site domain
    • Low confidence unless --verify runs SMTP MX probe

Required input columns

  • personal_site — domain (e.g. nurtuher.com)

Optional input columns

  • youtube — channel slug or ID (for YouTube source)
  • podcast_apple — Apple Podcast ID (for podcast RSS)
  • page_title / linktree_handle — used as name hint for pattern guessing

Output

Same CSV + 5 new columns:

  • contact_email_1, contact_email_2, contact_email_3 — ranked
  • contact_sources — e.g. "site / podcast" (which sources hit)
  • contact_confidencehigh / medium / low / none

Confidence rubric

TierSource patternAction
highmailto: link OR YouTube API description OR podcast RSS ownersafe to outreach directly
mediumVisible text email on creator's sitespot-check before outreach
lowPattern-guessed email only (no verification)run --verify OR Hunter.io before outreach
noneNo personal_site / no hitsneeds IG bio extraction or manual lookup

NEVER_DIG_DOMAINS

The script skips visiting known third-party domains that produce noise emails (link shorteners, affiliate platforms, scheduling tools, etc.). See list in source.

Pilot run (2026-05-06, 45 Linktree-derived KOLs)

After fixing personal_site identification (handle-match scoring) + NEVER_DIG filtering:

  • 5 high (real mailto / podcast owner / brand support)
  • 4 medium (text emails on creator sites)
  • 11 low (pattern guess on validated personal_site)
  • 25 none (no findable personal_site — recommend IG bio extraction next)

Limitations

  • Requires personal_site in input — for KOLs without one (~50-70% of Linktree pool), this skill produces "none". Use IG bio extraction (Apify or manual) for those.
  • Pattern guess at low confidence has ~60% land rate (推算 industry baseline) — recommend SMTP probe or Hunter.io verification before mass send.
  • YouTube channel businessEmail is hidden behind CAPTCHA — only emails embedded in description are captured.

Signals

GitHub stars
50
Forks
6
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
contact-extractor
Source
github.com/noique/cross-border-ecommerce-skills