00-gtm-router
Plan and run the full API-first GTM chain - the orchestrator (step 00) that turns an ICP description plus optional budget, volume, and urgency into the right…
Scrape recent LinkedIn posts from one or more prospect profiles via Apify and scan them for a theme (e.g. hiring pain, AI-first GTM). Outputs a report with matched excerpts and post links. Use for prospect or account intelligence research before outreach.
$ npx -y skills add Zevenue/headless-gtm --skill prospect-posts --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/prospect-postsContext preview
The summary Claude sees to decide when to auto-load this skill.
Scrape recent LinkedIn posts from one or more prospect profiles via Apify and scan them for a theme (e.g. hiring pain, AI-first GTM). Outputs a report with matched excerpts and post links. Use for prospect or account intelligence research before outreach.
name: prospect-posts description: >- Scrape recent LinkedIn posts from one or more prospect profiles via Apify and scan them for a theme (e.g. hiring pain, AI-first GTM). Outputs a report with matched excerpts and post links. Use for prospect or account intelligence research before outreach.
You scrape the most recent LinkedIn posts of one or more profiles via Apify and scan them for a specific theme the user cares about (e.g. "AI-first GTM", "hiring pain", "pivoting to enterprise"). Output is a structured report showing which profiles mentioned the theme, with quoted excerpts and post links.
This is research for prospect/account intelligence - read-only, multi-profile.
The user says something like:
Required inputs: 1. **Profile URL(s)** - one or more LinkedIn profile URLs 2. **Theme** - what to look for. Can be a topic, belief, pain point, or signal
Optional:
If either profile URL or theme is missing, ask the user before running.
1. Confirm `APIFY_API_TOKEN` is set. If missing, tell the user to add it. 2. Pick the output directory:
3. Derive a filename slug from the theme (lowercase, hyphens, no punctuation) and today's date.
4. Create `prospects/_scans/` if it doesn't exist.
Run the scraper. Repeat `--profile-url` for each profile:
python3 scripts/prospect_posts.py \ --profile-url "<url-or-username-1>" \ --profile-url "<url-or-username-2>" \ --count 20 \ --output-path "<json-path>"
The script:
Read the JSON output. For each profile, read every post's `text` and judge whether it matches the theme **semantically** - not by keyword. A post about "our GTM team is replacing playbooks with Claude agents" matches "AI-first GTM" even without the exact phrase. Conversely, a post that mentions "AI" in passing while talking about something unrelated should not match.
For each match, capture:
If a post is borderline, include it in a separate "Adjacent signals" section with a note on why it's adjacent rather than a direct match.
Write a markdown report at the report path with this structure:
# Post scan: {theme}
**Scanned:** {date}
**Theme:** {theme exactly as user phrased it}
**Profiles:** {count}
**Posts reviewed:** {total across all profiles}
## {Profile name or URL}
**Profile:** {linkedin url}
**Headline:** {headline if available}
**Posts reviewed:** {n}
**Direct matches:** {m}
### Direct matches
#### {date} - [link]({post_url})
> {quoted excerpt}
**Why it matches:** {one-line interpretation}
{repeat per match}
### Adjacent signals
{only include if any; same format with a "Why it's adjacent" line}
### No-match summary
{if zero matches, one sentence summarizing what they DO post about so the user can judge whether the theme is truly absent or just framed differently}
---
{repeat per profile}
## Cross-profile patterns
{2-4 bullets if multiple profiles: who is loudest on the theme, what angles recur, who's silent. Skip this section for single-profile scans.}Tell the user:
Do not paste the full report into chat. The user will open the file.
| Issue | Fix | |---|---| | `APIFY_API_TOKEN not found` | Add to `.env` | | Actor run times out | Increase `timeout_secs` in `scripts/prospect_posts.py` or reduce `--count` | | Profile returned 0 posts with status `SUCCEEDED` | Profile may be private,
GTM without the SaaS layer. An outbound pipeline built as agent skills for Claude Code and Codex: describe an ICP in plain English and the chain takes it from company discovery to verified, signal-ranked contacts - every step running on raw vendor APIs, not
Plan and run the full API-first GTM chain - the orchestrator (step 00) that turns an ICP description plus optional budget, volume, and urgency into the right…
The qualification gate of the GTM chain - judges every discovered company against the client's ICP before any paid enrichment, so credits are spent only on…
B2B company discovery and list building via the Prospeo search API. Use when the user wants to find companies from an ICP, build a prospect or TAM list, search…
Seed-based B2B company discovery via the Prospeo company-lookalike API. Use when the user has example companies and wants more like them - "find companies…
Find local-business (SMB) prospects via Google Maps using the Apify Compass actor. Use for Zevenue Step-2 Discovery (Vertical) when the ICP is Maps-addressable…
Scrapes a company website into clean, page-typed markdown using Firecrawl map + scrape + extract. Triggers on: "scrape this company", "read their website",…