Competitor signals

Extract leads from competitor product activity — Product Hunt commenters/upvoters, HN posts about competitors, case studies, testimonials, tech press, and switching signals.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/lead-generation/packs/lead-gen-devtools/competitor-signals#main ~/.claude/skills/competitor-signals

For one project only, change the path to .claude/skills/competitor-signals.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text280 lines
competitor-signals/SKILL.md280 lines11.6 KBpushed 96d agoRawView on GitHub

Competitor Signals

Find leads by monitoring competitor product activity. Instead of looking for your prospects directly, watch your competitors' audience — every person engaging with a competitor launch is self-identifying as in-market for your category.

When to Use

  • User wants to find people engaging with competitor products
  • User mentions Product Hunt launches, competitor press coverage, or competitor case studies
  • User wants to find people switching from or evaluating competitor products
  • User asks "who is using [competitor]" or "who is looking at alternatives to [competitor]"
  • User wants to monitor competitor activity for lead generation
  • User has a clear list of competitors and wants to mine their audience

Prerequisites

  • Python 3.9+ with requests and optionally python-dotenv
  • Product Hunt developer token (free, optional — get at api.producthunt.com/v2/oauth/applications)
  • Apify API token in .env (fallback for PH if API names are redacted, optional)
  • Working directory: the project root containing this skill

Phase 1: Collect Context

Step 1: Gather Competitor Information

Ask the user:

"To find leads from competitor activity, I need:

  1. Who are your competitors? (product names and company names)
  2. Do you know their Product Hunt slugs? (the URL path on producthunt.com/posts/SLUG)
  3. Any specific competitor launches or announcements you've seen recently?
  4. Are there competitors or signals you specifically want to track? (e.g., a competitor just raised funding, launched a new feature, or got press coverage)"

Step 2: Discover Competitors (if user needs help)

If the user doesn't have a complete competitor list, help them discover competitors:

2a. Product Hunt search:

  • Search producthunt.com for the user's product category
  • Note: PH doesn't have a great search API — use web search: "site:producthunt.com [product category]"

2b. G2/Capterra category pages:

  • Search: "[product category] G2" or "[product category] Capterra"
  • These pages list all competitors in a category with rankings

2c. "Alternatives to" sites:

  • Search: "[known competitor] alternatives"
  • Sites like alternativeto.net, slant.co, stackshare.io list competitors

2d. Ask the user:

"Based on my research, here are competitors I've found in your space: [list]. Are there any I'm missing? Any you'd like to exclude (e.g., not really competitors, too different in market segment)?"

Step 3: Find Product Hunt Slugs

For each competitor, find their PH launches:

  • Search: "site:producthunt.com [competitor name]"
  • Or browse: producthunt.com/products/[competitor-name]
  • Note the slug from the URL: producthunt.com/posts/SLUG
  • A competitor may have multiple launches (initial launch + feature launches)

Step 4: Identify Competitor Web Pages to Scrape

For each competitor, identify pages the agent should scrape:

Case studies page: [competitor].com/customers or [competitor].com/case-studies

  • Extract: company names, logos, quotes, person names, titles
  • These are PROVEN BUYERS in the category

Testimonials page: Often on the homepage or a dedicated page

  • Extract: person name, title, company, quote
  • These are current users who publicly endorsed the competitor

Blog: [competitor].com/blog

  • Guest posts by customers are case studies in disguise
  • "How [Company X] uses [Competitor]" = case study

Present all discovered pages to the user for review.

Phase 2: Agent-Driven Scraping

Step 5: Scrape Competitor Websites

Before running the tool, the agent should manually scrape competitor case studies and testimonials. This is agent-driven because every competitor website has a different format.

For each competitor's case study page:

  1. Navigate to the page using web fetch or Chrome DevTools
  2. Extract all customer company names and any associated person names/quotes
  3. Note the case study URL for reference

For each competitor's testimonials page:

  1. Extract: person name, title, company, quote text
  2. These are high-value signals — these people actively chose to endorse the competitor

Save all scraped data to ${CLAUDE_SKILL_DIR}/../.tmp/competitor_manual_signals.json:

[
    {
        "person_name": "Sarah Chen",
        "company": "TechCorp",
        "signal_type": "case_study_company",
        "signal_label": "Competitor Case Study",
        "competitor": "Twilio",
        "context": "How TechCorp scaled video calls to 100K users with Twilio",
        "url": "https://twilio.com/case-studies/techcorp",
        "profile_url": "",
        "date": "",
        "source": "Manual",
        "engagement": 0
    }
]

Step 6: Check Tech Press

Search for recent articles about competitors:

  • "[competitor] TechCrunch"
  • "[competitor] The New Stack"
  • "[competitor] InfoQ"
  • "[competitor] DevOps.com"
  • "[competitor] launch announcement"
  • "[competitor] raises funding"

For articles found:

  • Note the article URL and key companies/people mentioned
  • If the article has comments, check for people expressing opinions
  • Add notable findings to the manual signals JSON

Phase 3: Execute Tool

Step 7: Save Config

cat > ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals_config.json << 'CONFIGEOF'
{
    "competitors": ["Twilio", "Agora", "Vonage", "Daily.co"],
    "product_hunt_slugs": ["twilio-video", "agora-2", "daily-co"],
    "days": 90,
    "manual_signals_file": "${CLAUDE_SKILL_DIR}/../.tmp/competitor_manual_signals.json",
    "skip": []
}
CONFIGEOF

Step 8: Run the Tool

python3 ${CLAUDE_SKILL_DIR}/scripts/competitor_signals.py \
    --config ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals_config.json \
    --output ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals.csv

The tool will:

  1. Try Product Hunt API first (if PRODUCTHUNT_TOKEN is set)
  2. Fall back to Apify PH scraper if API names are redacted
  3. Search HN for all competitor names (stories + comments, last 90 days)
  4. Load manual signals (case studies, testimonials, press)
  5. Detect "switching signals" (highest priority — people saying they're moving to/from a competitor)
  6. Deduplicate and score
  7. Export CSV with switching signals highlighted

Phase 4: Analyze & Recommend

Step 10: Analyze Results

10a. Switching Signals (HIGHEST PRIORITY)

  • These are people who publicly said they're switching from or evaluating alternatives to a competitor
  • List every switching signal with full context
  • These leads should be contacted IMMEDIATELY — they're in active evaluation
  • Outreach angle: "I noticed you mentioned looking for alternatives to [competitor] — here's how we compare"

10b. Case Study Companies

  • These are PROVEN BUYERS in the category
  • They've already committed budget to the problem space
  • The decision-maker already said yes once — they'll consider alternatives if you offer something better
  • Recommend enriching these companies via SixtyFour to find the current decision-maker

10c. Testimonial Authors

  • Current users of the competitor who are vocal about it
  • They may be satisfied (hard sell) OR they may have moved on since the testimonial
  • Good for understanding what the competitor does well (competitive intel)
  • If the testimonial mentions specific pain points or limitations, that's an opening

10d. Product Hunt Activity

  • Commenters asking questions = evaluating the category
  • Commenters with negative feedback = potentially dissatisfied
  • Upvoters = interested in the space (weaker signal, higher volume)

10e. HN Discussion

  • Commenters engaging with competitor stories = following the space
  • People sharing experiences (positive or negative) = active users or evaluators

10f. Competitor-Level Analysis

  • Which competitor generates the most signals? (largest audience = most opportunity)
  • Which competitor has the most negative signals? (weakest competitor = easiest to displace)
  • Are there any surprises? (unknown competitor getting a lot of attention?)

Step 11: Recommend Next Steps

  1. Switching signals (immediate outreach):

    • Enrich these people via SixtyFour NOW
    • They're in active evaluation — speed matters
    • Personalize based on what they said ("You mentioned [specific pain]...")
  2. Case study companies (account-based approach):

    • These companies have budget for this category
    • Use SixtyFour /enrich-company to understand them
    • Find the decision-maker (not the person in the case study, who may have left)
    • Outreach angle: "Companies like yours in [industry] are switching to us because..."
  3. PH commenters asking questions:

    • They're early in evaluation
    • Can reply directly on Product Hunt (public, non-intrusive)
    • Or enrich and reach out privately
  4. Cross-reference with other signals:

    • If a company appears in competitor case studies AND in job signals (hiring for the role) -> they're invested but possibly scaling beyond the competitor
    • If a person appears in competitor PH comments AND in community signals -> they're deeply researching the space

Step 12: Ask for Go-Ahead

"Would you like me to:

  1. Enrich the switching signal leads immediately (highest priority)
  2. Enrich the case study companies and find decision-makers
  3. Cross-reference with data from other signal skills
  4. Scrape additional competitor pages for more signals
  5. Export for manual review first"

Signal Scoring

Signal Type Score Priority
Switching From/To Competitor 9 IMMEDIATE — active evaluation
Competitor Case Study Company 9 HIGH — proven buyer
Competitor Testimonial Author 8 HIGH — current/past user
PH Launch Commenter 8 HIGH — actively evaluating
HN Post Commenter 7 MEDIUM — interested in space
HN Post Author 6 MEDIUM — sharing competitor news
PH Launch Upvoter 6 MEDIUM — interested but passive
Tech Press Mention 6 MEDIUM — following the space
PH Product Maker 5 LOW — competitor team member
Changelog Engager 5 LOW — power user or evaluator

Output Schema (Single Sheet)

Column Description
person_name Name or username of the person
company Company/headline from their profile
signal_type Internal signal type code
signal_label Human-readable label
competitor Which competitor this signal is about
context Comment text, case study excerpt, or description
url Link to the source (PH comment, HN post, case study page)
profile_url Link to the person's profile (PH, HN)
date Date of the signal
signal_score Weighted score
source Product Hunt API, Hacker News, Manual
engagement Upvotes/points on the post or comment

Cost Estimates

Source Cost Notes
Product Hunt API Free Developer token (may have name redaction)
Product Hunt Apify ~$5-10/run Fallback if API names redacted
Hacker News Free Algolia API
Manual scraping Free Agent scrapes competitor websites
Typical run $0-10 Free if PH API works; $5-10 if using Apify

Lookback Period

Default: 90 days. Competitor launches and case studies have a longer shelf life than Reddit posts. Someone who commented on a competitor's PH launch 60 days ago is still a viable lead.

1---
2name: competitor-signals
3description: Extract leads from competitor product activity — Product Hunt commenters/upvoters, HN posts about competitors, case studies, testimonials, tech press, and switching signals. Detects people actively switching from competitors as highest-priority leads.
4user-invocable: true
5allowed-tools: Bash, Read, Write, Edit, Grep, Glob, WebFetch, WebSearch
6argument-hint: [config-json-path]
7---
8 
9# Competitor Signals
10 
11Find leads by monitoring competitor product activity. Instead of looking for your prospects directly, watch your competitors' audience — every person engaging with a competitor launch is self-identifying as in-market for your category.
12 
13## When to Use
14 
15- User wants to find people engaging with competitor products
16- User mentions Product Hunt launches, competitor press coverage, or competitor case studies
17- User wants to find people switching from or evaluating competitor products
18- User asks "who is using [competitor]" or "who is looking at alternatives to [competitor]"
19- User wants to monitor competitor activity for lead generation
20- User has a clear list of competitors and wants to mine their audience
21 
22## Prerequisites
23 
24- Python 3.9+ with `requests` and optionally `python-dotenv`
25- Product Hunt developer token (free, optional — get at `api.producthunt.com/v2/oauth/applications`)
26- Apify API token in `.env` (fallback for PH if API names are redacted, optional)
27- Working directory: the project root containing this skill
28 
29## Phase 1: Collect Context
30 
31### Step 1: Gather Competitor Information
32 
33Ask the user:
34 
35> "To find leads from competitor activity, I need:
36> 1. **Who are your competitors?** (product names and company names)
37> 2. **Do you know their Product Hunt slugs?** (the URL path on producthunt.com/posts/SLUG)
38> 3. **Any specific competitor launches or announcements you've seen recently?**
39> 4. **Are there competitors or signals you specifically want to track?** (e.g., a competitor just raised funding, launched a new feature, or got press coverage)"
40 
41### Step 2: Discover Competitors (if user needs help)
42 
43If the user doesn't have a complete competitor list, help them discover competitors:
44 
45**2a. Product Hunt search:**
46- Search producthunt.com for the user's product category
47- Note: PH doesn't have a great search API — use web search: "site:producthunt.com [product category]"
48 
49**2b. G2/Capterra category pages:**
50- Search: "[product category] G2" or "[product category] Capterra"
51- These pages list all competitors in a category with rankings
52 
53**2c. "Alternatives to" sites:**
54- Search: "[known competitor] alternatives"
55- Sites like alternativeto.net, slant.co, stackshare.io list competitors
56 
57**2d. Ask the user:**
58> "Based on my research, here are competitors I've found in your space: [list]. Are there any I'm missing? Any you'd like to exclude (e.g., not really competitors, too different in market segment)?"
59 
60### Step 3: Find Product Hunt Slugs
61 
62For each competitor, find their PH launches:
63- Search: "site:producthunt.com [competitor name]"
64- Or browse: `producthunt.com/products/[competitor-name]`
65- Note the slug from the URL: `producthunt.com/posts/SLUG`
66- A competitor may have multiple launches (initial launch + feature launches)
67 
68### Step 4: Identify Competitor Web Pages to Scrape
69 
70For each competitor, identify pages the agent should scrape:
71 
72**Case studies page:** `[competitor].com/customers` or `[competitor].com/case-studies`
73- Extract: company names, logos, quotes, person names, titles
74- These are PROVEN BUYERS in the category
75 
76**Testimonials page:** Often on the homepage or a dedicated page
77- Extract: person name, title, company, quote
78- These are current users who publicly endorsed the competitor
79 
80**Blog:** `[competitor].com/blog`
81- Guest posts by customers are case studies in disguise
82- "How [Company X] uses [Competitor]" = case study
83 
84Present all discovered pages to the user for review.
85 
86## Phase 2: Agent-Driven Scraping
87 
88### Step 5: Scrape Competitor Websites
89 
90Before running the tool, the agent should manually scrape competitor case studies and testimonials. This is agent-driven because every competitor website has a different format.
91 
92**For each competitor's case study page:**
931. Navigate to the page using web fetch or Chrome DevTools
942. Extract all customer company names and any associated person names/quotes
953. Note the case study URL for reference
96 
97**For each competitor's testimonials page:**
981. Extract: person name, title, company, quote text
992. These are high-value signals — these people actively chose to endorse the competitor
100 
101**Save all scraped data** to `${CLAUDE_SKILL_DIR}/../.tmp/competitor_manual_signals.json`:
102```json
103[
104 {
105 "person_name": "Sarah Chen",
106 "company": "TechCorp",
107 "signal_type": "case_study_company",
108 "signal_label": "Competitor Case Study",
109 "competitor": "Twilio",
110 "context": "How TechCorp scaled video calls to 100K users with Twilio",
111 "url": "https://twilio.com/case-studies/techcorp",
112 "profile_url": "",
113 "date": "",
114 "source": "Manual",
115 "engagement": 0
116 }
117]
118```
119 
120### Step 6: Check Tech Press
121 
122Search for recent articles about competitors:
123- "[competitor] TechCrunch"
124- "[competitor] The New Stack"
125- "[competitor] InfoQ"
126- "[competitor] DevOps.com"
127- "[competitor] launch announcement"
128- "[competitor] raises funding"
129 
130For articles found:
131- Note the article URL and key companies/people mentioned
132- If the article has comments, check for people expressing opinions
133- Add notable findings to the manual signals JSON
134 
135## Phase 3: Execute Tool
136 
137### Step 7: Save Config
138 
139```bash
140cat > ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals_config.json << 'CONFIGEOF'
141{
142 "competitors": ["Twilio", "Agora", "Vonage", "Daily.co"],
143 "product_hunt_slugs": ["twilio-video", "agora-2", "daily-co"],
144 "days": 90,
145 "manual_signals_file": "${CLAUDE_SKILL_DIR}/../.tmp/competitor_manual_signals.json",
146 "skip": []
147}
148CONFIGEOF
149```
150 
151### Step 8: Run the Tool
152 
153```bash
154python3 ${CLAUDE_SKILL_DIR}/scripts/competitor_signals.py \
155 --config ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals_config.json \
156 --output ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals.csv
157```
158 
159The tool will:
1601. Try Product Hunt API first (if `PRODUCTHUNT_TOKEN` is set)
1612. Fall back to Apify PH scraper if API names are redacted
1623. Search HN for all competitor names (stories + comments, last 90 days)
1634. Load manual signals (case studies, testimonials, press)
1645. Detect "switching signals" (highest priority — people saying they're moving to/from a competitor)
1656. Deduplicate and score
1667. Export CSV with switching signals highlighted
167 
168## Phase 4: Analyze & Recommend
169 
170### Step 10: Analyze Results
171 
172**10a. Switching Signals (HIGHEST PRIORITY)**
173- These are people who publicly said they're switching from or evaluating alternatives to a competitor
174- List every switching signal with full context
175- These leads should be contacted IMMEDIATELY — they're in active evaluation
176- Outreach angle: "I noticed you mentioned looking for alternatives to [competitor] — here's how we compare"
177 
178**10b. Case Study Companies**
179- These are PROVEN BUYERS in the category
180- They've already committed budget to the problem space
181- The decision-maker already said yes once — they'll consider alternatives if you offer something better
182- Recommend enriching these companies via SixtyFour to find the current decision-maker
183 
184**10c. Testimonial Authors**
185- Current users of the competitor who are vocal about it
186- They may be satisfied (hard sell) OR they may have moved on since the testimonial
187- Good for understanding what the competitor does well (competitive intel)
188- If the testimonial mentions specific pain points or limitations, that's an opening
189 
190**10d. Product Hunt Activity**
191- Commenters asking questions = evaluating the category
192- Commenters with negative feedback = potentially dissatisfied
193- Upvoters = interested in the space (weaker signal, higher volume)
194 
195**10e. HN Discussion**
196- Commenters engaging with competitor stories = following the space
197- People sharing experiences (positive or negative) = active users or evaluators
198 
199**10f. Competitor-Level Analysis**
200- Which competitor generates the most signals? (largest audience = most opportunity)
201- Which competitor has the most negative signals? (weakest competitor = easiest to displace)
202- Are there any surprises? (unknown competitor getting a lot of attention?)
203 
204### Step 11: Recommend Next Steps
205 
2061. **Switching signals (immediate outreach):**
207 - Enrich these people via SixtyFour NOW
208 - They're in active evaluation — speed matters
209 - Personalize based on what they said ("You mentioned [specific pain]...")
210 
2112. **Case study companies (account-based approach):**
212 - These companies have budget for this category
213 - Use SixtyFour `/enrich-company` to understand them
214 - Find the decision-maker (not the person in the case study, who may have left)
215 - Outreach angle: "Companies like yours in [industry] are switching to us because..."
216 
2173. **PH commenters asking questions:**
218 - They're early in evaluation
219 - Can reply directly on Product Hunt (public, non-intrusive)
220 - Or enrich and reach out privately
221 
2224. **Cross-reference with other signals:**
223 - If a company appears in competitor case studies AND in job signals (hiring for the role) -> they're invested but possibly scaling beyond the competitor
224 - If a person appears in competitor PH comments AND in community signals -> they're deeply researching the space
225 
226### Step 12: Ask for Go-Ahead
227 
228> "Would you like me to:
229> 1. Enrich the switching signal leads immediately (highest priority)
230> 2. Enrich the case study companies and find decision-makers
231> 3. Cross-reference with data from other signal skills
232> 4. Scrape additional competitor pages for more signals
233> 5. Export for manual review first"
234 
235## Signal Scoring
236 
237| Signal Type | Score | Priority |
238|---|---|---|
239| Switching From/To Competitor | 9 | IMMEDIATE — active evaluation |
240| Competitor Case Study Company | 9 | HIGH — proven buyer |
241| Competitor Testimonial Author | 8 | HIGH — current/past user |
242| PH Launch Commenter | 8 | HIGH — actively evaluating |
243| HN Post Commenter | 7 | MEDIUM — interested in space |
244| HN Post Author | 6 | MEDIUM — sharing competitor news |
245| PH Launch Upvoter | 6 | MEDIUM — interested but passive |
246| Tech Press Mention | 6 | MEDIUM — following the space |
247| PH Product Maker | 5 | LOW — competitor team member |
248| Changelog Engager | 5 | LOW — power user or evaluator |
249 
250## Output Schema (Single Sheet)
251 
252| Column | Description |
253|--------|-------------|
254| person_name | Name or username of the person |
255| company | Company/headline from their profile |
256| signal_type | Internal signal type code |
257| signal_label | Human-readable label |
258| competitor | Which competitor this signal is about |
259| context | Comment text, case study excerpt, or description |
260| url | Link to the source (PH comment, HN post, case study page) |
261| profile_url | Link to the person's profile (PH, HN) |
262| date | Date of the signal |
263| signal_score | Weighted score |
264| source | Product Hunt API, Hacker News, Manual |
265| engagement | Upvotes/points on the post or comment |
266 
267## Cost Estimates
268 
269| Source | Cost | Notes |
270|--------|------|-------|
271| Product Hunt API | Free | Developer token (may have name redaction) |
272| Product Hunt Apify | ~$5-10/run | Fallback if API names redacted |
273| Hacker News | Free | Algolia API |
274| Manual scraping | Free | Agent scrapes competitor websites |
275| **Typical run** | **$0-10** | Free if PH API works; $5-10 if using Apify |
276 
277## Lookback Period
278 
279Default: **90 days.** Competitor launches and case studies have a longer shelf life than Reddit posts. Someone who commented on a competitor's PH launch 60 days ago is still a viable lead.
280 

Discussion

Alternatives

Also in Competitor research
Competitor Comparison & Alternatives PagesTell us your product and a rival you keep losing deals to, and get back a ready-to-publish page that shows why customers should pick you.Business & ops · MITAd angle minerMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.Business & ops · MITX audience insightsRead your X (Twitter) audience and niche from real data. Pull a handle's recent tweets (yours or a competitor's) with likes, replies, and views, see which formats and hooks are working, read the repliers on a tweet (X gates likers, so repliers are the signal), and scan a niche query for top tweets. Powered by Apify, no login. Triggers on "analyze my tweets", "what is working on X", "read the replies", "competitor tweets", "who is engaging". Not for writing a tweet (use x-post-writer).Marketing · MITFacebook Audience InsightsRead a Facebook Page and its audience from real data. Pull any Page's public stats (yours or a competitor's): followers, likes, categories, intro, websites. And pull the commenters on a public Page post, since Facebook hides the reactor and liker roster and shows counts only, so commenters are the signal. Powered by Apify, no login. Triggers on "analyze my Page", "competitor Page stats", "who is commenting", "read the comments", "audience insights". Not for writing Page posts (use fb-post-writer).Marketing · MIT