How to use it
- Hit Copy the whole skill.
- 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. - Describe your job in plain words. The AI follows the skill from there.
npx degit gooseworks-ai/goose-skills/skills/competitive-intel/composites/industry-scanner#main ~/.claude/skills/industry-scannerFor one project only, change the path to .claude/skills/industry-scanner.
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.
Paste into Claude, ChatGPT or Cursor.
Show the full text369 lines
Industry Scanner
Daily deep-research agent that scans the internet for everything relevant to a client's industry, then generates strategic GTM opportunities based on what it finds.
Quick Start
Run an industry scan for <client>. Use the config at clients/<client>/config/industry-scanner.json.
Or for a weekly deeper scan:
Run a weekly industry scan for <client> with --lookback 7.
Inputs
- Client name — determines which config and context files to load
- Lookback period (optional) —
1for daily (default),7for weekly deep scan - Focus area (optional) — limit scan to specific categories (e.g., "competitors only", "events only")
Step-by-Step Process
Phase 1: Load Configuration
- Read
clients/<client>/config/industry-scanner.json— this contains all the keywords, sources, competitors, and URLs to scan - Read
clients/<client>/context.md— need the ICP, value props, and positioning to generate relevant strategies - Set the lookback period: use
1day for daily scans,7for weekly, or whatever the user specifies - Note today's date for the output filename
If no client config exists, ask the user for the key inputs and offer to create one from the example at skills/industry-scanner/config/example-config.json.
Phase 2: Data Collection
Run these data sources in parallel where possible. Skip any source that isn't configured. For each source, use the existing skill's CLI or tool as documented.
IMPORTANT: Run as many of these bash commands in parallel as possible to minimize total scan time. Sources are independent of each other.
2A. Web Search (built-in WebSearch tool)
Run 5-8 web searches combining the configured web_search_queries with time-sensitive modifiers. Examples:
"<industry keyword> news this week""<competitor name> shutdown OR closing OR acquired 2026""<industry> conference 2026 speaker applications""<industry keyword> new regulation OR policy change""<competitor name> layoffs OR pivot OR rebrand"
Also search for each competitor name directly to catch any recent news.
2B. Industry Blogs & Publications
python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \
--urls "<comma-separated blog_urls from config>" \
--days <lookback> --output json
Read skills/blog-feed-monitor/SKILL.md for full CLI reference.
2C. Reddit
For each configured subreddit, run:
python3 skills/reddit-post-finder/scripts/search_reddit.py \
--subreddit "<comma-separated subreddits from config>" \
--keywords "<comma-separated reddit_keywords from config>" \
--days <lookback> --sort hot --output json
Also run a separate search with --sort top --time week to catch high-engagement posts.
Read skills/reddit-post-finder/SKILL.md for full CLI reference.
2D. Twitter/X
For each configured Twitter query:
python3 skills/twitter-mention-tracker/scripts/search_twitter.py \
--query "<twitter_query>" \
--since <yesterday-YYYY-MM-DD> --until <today-YYYY-MM-DD> \
--max-tweets 30 --output json
Read skills/twitter-mention-tracker/SKILL.md for full CLI reference.
2E. LinkedIn
Search each configured LinkedIn keyword via the linkedin-post-research skill.
Delegate to the linkedin-post-research skill (uses the apimaestro~linkedin-posts-search-scraper-no-cookies Apify actor). Search each keyword with date_posted: "past-day" (or "past-week" for weekly scans).
Read skills/linkedin-post-research/SKILL.md for the full Apify workflow.
2F. Hacker News
python3 skills/hacker-news-scraper/scripts/search_hn.py \
--query "<hn_query>" --days <lookback> --output json
Run once per configured hn_queries entry. Read skills/hacker-news-scraper/SKILL.md for full CLI reference.
2G. RSS News Feeds
If the client has an accounting-news-monitor (or similar) configured:
python3 skills/accounting-news-monitor/scripts/monitor_news.py \
--new-only --days <lookback> --output json
Read skills/accounting-news-monitor/SKILL.md for full CLI reference.
2H. Newsletter Inbox
If the client has newsletter monitoring configured:
python3 skills/newsletter-monitor/scripts/scan_newsletters.py \
--days <lookback> --output json
Read skills/newsletter-monitor/SKILL.md for full CLI reference.
2I. Review Sites
For each configured review URL:
python3 skills/review-site-scraper/scripts/scrape_reviews.py \
--platform <platform> --url "<review_url>" \
--days <lookback> --max-reviews 20 --output json
Read skills/review-site-scraper/SKILL.md for full CLI reference.
Phase 3: Consolidate & Categorize
After all data collection completes, consolidate the results:
Deduplicate — items appearing across multiple sources (e.g., a news story on both a blog and Reddit). Keep the richest version but note multi-source appearance (higher signal).
Categorize each item into one of these types:
| Category | What to Look For |
|---|---|
| Competitor News | Shutdowns, launches, funding, pivots, negative reviews, leadership changes, pricing changes |
| Industry Events | Upcoming conferences, webinars, meetups, speaker slots, CFPs, award nominations |
| Market Trends | Viral discussions, hot topics, emerging themes, sentiment shifts, adoption data |
| Regulatory / Policy | New regulations, compliance changes, government actions, standards updates |
| People Moves | Key hires, departures, promotions at competitors or target companies |
| Technology | New product launches, integrations, platform changes, deprecations |
| Funding / M&A | Acquisitions, mergers, funding rounds, PE investments, IPO signals |
| Pain Points | People publicly complaining about problems the client solves |
| Content Opportunities | Trending content, viral posts, gaps in existing coverage, unanswered questions |
Rate relevance — High / Medium / Low based on how directly it relates to the client's ICP and value props.
Filter out noise — Drop items rated Low relevance unless they're genuinely noteworthy. The goal is signal, not volume.
Phase 4: Generate Strategic Opportunities
Review the consolidated intelligence and identify items (or clusters of related items) that present genuine GTM opportunities.
CRITICAL: Do NOT force-fit a strategy for every item. Many items are just "good to know" — that's fine, they go in the intelligence briefing. Only generate strategy ideas where there is a real, actionable opportunity that could meaningfully impact growth.
For each genuine opportunity, produce:
| Field | Description |
|---|---|
| Trigger | What happened — the intelligence item(s) that sparked this idea |
| Strategy | What to do about it — specific and actionable, not vague |
| Tactics | 2-4 concrete next steps with skill references where applicable |
| Urgency | Immediate (do this today/this week), Soon (next 2 weeks), or Evergreen |
| Effort | Low (1-2 hours), Medium (half day), High (multi-day project) |
| Expected Impact | Why this could matter — who it reaches, what it could generate |
Strategy Patterns to Draw From
Use these as inspiration, not as a checklist. Match the pattern to the trigger:
Competitor in trouble (shutdown, bad reviews, layoffs, pivot):
- Publish a migration/comparison guide targeting their customers
- Find their customers via review sites, LinkedIn posts mentioning them → outreach
- Engage on social posts where people discuss the shutdown/issues
- Create "alternative to X" content for SEO capture
- Skills:
web-archive-scraper(recover their customer list),review-site-scraper(find reviewers),linkedin-post-research(find posts about them),cold-email-outreach
Industry event coming up:
- Apply to speak (if speaker slots are open)
- Plan pre-event outreach to attendees (skill:
luma-event-attendeesorconference-speaker-scraper) - Create event-specific content (e.g., "What We're Watching at [Event]")
- Plan on-site presence and follow-up campaign
Viral post or trending discussion:
- Engage thoughtfully on the thread (LinkedIn comment, Reddit reply, tweet)
- Create response content (blog post, LinkedIn post) with the client's expert take
- If the poster is ICP, follow up directly
- Skills:
linkedin-post-research,company-contact-finder
Acquisition or merger announced:
- Reach out to the acquired company's clients (they're in transition, open to alternatives)
- Create content about what the acquisition means for the industry
- Skills:
web-archive-scraper(find client lists),company-contact-finder
New regulation or policy change:
- Create educational content positioning the client as an expert
- Direct outreach to companies affected by the change
- Host a webinar or publish a guide about compliance
Pain point surfaced (Reddit complaint, negative review, LinkedIn vent):
- Engage helpfully on the post (don't pitch — add value first)
- If the poster is ICP, follow up with a direct message/email
- Create content addressing the specific pain point
- Skills:
company-contact-finder
Trending topic or content gap:
- Publish thought leadership content while the topic is hot
- CEO/founder LinkedIn post with a unique take
- Podcast or webinar on the trending topic
Funding round announced at target company:
- Outreach to the company (post-raise = budget for new tools)
- Skills:
company-contact-finder,cold-email-outreach
Phase 5: Generate Output
Save the report to the current working directory as industry-scan-<YYYY-MM-DD>.md (or user-specified path) using this structure:
# Industry Intelligence Briefing — <Client Name>
**Date:** <YYYY-MM-DD>
**Scan type:** Daily / Weekly
**Sources scanned:** <list of sources that returned results>
---
## Executive Summary
<2-3 sentence overview of the most important findings. What should the client pay attention to today?>
---
## Intelligence Briefing
### Competitor News
| Item | Source | Link | Relevance |
|------|--------|------|-----------|
| ... | ... | ... | High/Med |
### Industry Events
| Item | Source | Link | Date | Relevance |
|------|--------|------|------|-----------|
### Market Trends
| Item | Source | Link | Engagement | Relevance |
|------|--------|------|------------|-----------|
### Funding / M&A
| Item | Source | Link | Relevance |
|------|--------|------|-----------|
### Regulatory / Policy
| Item | Source | Link | Relevance |
|------|--------|------|-----------|
### Technology
| Item | Source | Link | Relevance |
|------|--------|------|-----------|
### People Moves
| Item | Source | Link | Relevance |
|------|--------|------|-----------|
### Pain Points & Complaints
| Item | Source | Link | Engagement | Relevance |
|------|--------|------|------------|-----------|
### Content Opportunities
| Item | Source | Link | Why | Relevance |
|------|--------|------|-----|-----------|
*(Only include sections that have items. Skip empty categories.)*
---
## Strategic Growth Opportunities
*(Only include opportunities where there's a genuine, actionable strategy with meaningful potential impact. It is completely fine to have zero opportunities on a quiet day.)*
### Opportunity 1: <Short title>
**Trigger:** <What happened>
**Strategy:** <What to do about it>
**Tactics:**
1. <Specific action> *(skill: <skill-name> if applicable)*
2. <Specific action>
3. <Specific action>
**Urgency:** Immediate / Soon / Evergreen
**Effort:** Low / Medium / High
**Expected Impact:** <Why this matters>
---
### Opportunity 2: ...
---
## Scan Statistics
- **Total items found:** X
- **By category:** Competitor News (X), Events (X), Trends (X), ...
- **Opportunities identified:** X
- **Sources that returned results:** X of Y configured
Configuration
Each client needs a config file at clients/<client>/config/industry-scanner.json. See skills/industry-scanner/config/example-config.json for the full schema.
Key fields:
web_search_queries— broad industry search termscompetitors— competitor names to monitorsubreddits+reddit_keywords— Reddit monitoring configtwitter_queries— Twitter/X search termslinkedin_keywords— LinkedIn post search termsblog_urls— industry publication URLs (for RSS scraping)hn_queries— Hacker News search termsreview_urls— competitor review page URLs (G2, Capterra, Trustpilot)event_keywords— conference and event search terms
Tips
- Daily vs Weekly: Daily scans (
--lookback 1) are fast but may miss slower-developing stories. Run a weekly deep scan (--lookback 7) every Monday for comprehensive coverage. - Noisy sources: If a source consistently returns irrelevant results, tune the keywords in the config rather than dropping the source entirely.
- Multi-source signals: Items that appear across multiple sources (e.g., on both Reddit and Twitter) are higher-signal. Flag these in the briefing.
- Strategy quality > quantity: A day with zero strategic opportunities is better than a day with five forced ones. The intelligence briefing has standalone value even without opportunities.
- Follow up: When an opportunity references a downstream skill (e.g.,
company-contact-finder), the user can chain directly into that skill to take action.
Dependencies
No additional dependencies beyond what the sub-skills require:
requests(Python) — for blog-feed-monitor, reddit-post-finder, twitter-mention-tracker, hn-scraper, review-site-scraper, news-monitorAPIFY_API_TOKENenv var — for Reddit, Twitter, and review scrapingagentmail+python-dotenv— for newsletter-monitor (if configured)APIFY_API_TOKEN— LinkedIn post search goes through thelinkedin-post-researchskill (Apify-based)
| 1 | |
| 2 | name industry-scanner |
| 3 | description > |
| 4 | Daily industry intelligence scanner. Scans web, social media, news, blogs, |
| 5 | and communities for industry-relevant events, trends, and signals. Produces |
| 6 | a comprehensive intelligence briefing plus strategic GTM opportunity ideas. |
| 7 | Orchestrates existing scraping skills — does not reimplement data collection. |
| 8 | |
| 9 | |
| 10 | # Industry Scanner |
| 11 | |
| 12 | Daily deep-research agent that scans the internet for everything relevant to a client's industry, then generates strategic GTM opportunities based on what it finds. |
| 13 | |
| 14 | ## Quick Start |
| 15 | |
| 16 | |
| 17 | Run an industry scan for <client>. Use the config at clients/<client>/config/industry-scanner.json. |
| 18 | |
| 19 | |
| 20 | Or for a weekly deeper scan: |
| 21 | |
| 22 | |
| 23 | Run a weekly industry scan for <client> with --lookback 7. |
| 24 | |
| 25 | |
| 26 | ## Inputs |
| 27 | |
| 28 | **Client name** — determines which config and context files to load |
| 29 | **Lookback period** (optional) — `1` for daily (default), `7` for weekly deep scan |
| 30 | **Focus area** (optional) — limit scan to specific categories (e.g., "competitors only", "events only") |
| 31 | |
| 32 | |
| 33 | |
| 34 | ## Step-by-Step Process |
| 35 | |
| 36 | ### Phase 1: Load Configuration |
| 37 | |
| 38 | Read `clients/<client>/config/industry-scanner.json` — this contains all the keywords, sources, competitors, and URLs to scan |
| 39 | Read `clients/<client>/context.md` — need the ICP, value props, and positioning to generate relevant strategies |
| 40 | Set the lookback period: use `1` day for daily scans, `7` for weekly, or whatever the user specifies |
| 41 | Note today's date for the output filename |
| 42 | |
| 43 | If no client config exists, ask the user for the key inputs and offer to create one from the example at `skills/industry-scanner/config/example-config.json`. |
| 44 | |
| 45 | ### Phase 2: Data Collection |
| 46 | |
| 47 | Run these data sources in parallel where possible. Skip any source that isn't configured. For each source, use the existing skill's CLI or tool as documented. |
| 48 | |
| 49 | **IMPORTANT:** Run as many of these bash commands in parallel as possible to minimize total scan time. Sources are independent of each other. |
| 50 | |
| 51 | #### 2A. Web Search (built-in WebSearch tool) |
| 52 | |
| 53 | Run 5-8 web searches combining the configured `web_search_queries` with time-sensitive modifiers. Examples: |
| 54 | |
| 55 | `"<industry keyword> news this week"` |
| 56 | `"<competitor name> shutdown OR closing OR acquired 2026"` |
| 57 | `"<industry> conference 2026 speaker applications"` |
| 58 | `"<industry keyword> new regulation OR policy change"` |
| 59 | `"<competitor name> layoffs OR pivot OR rebrand"` |
| 60 | |
| 61 | Also search for each competitor name directly to catch any recent news. |
| 62 | |
| 63 | #### 2B. Industry Blogs & Publications |
| 64 | |
| 65 | |
| 66 | python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \ |
| 67 | --urls "<comma-separated blog_urls from config>" \ |
| 68 | --days <lookback> --output json |
| 69 | |
| 70 | |
| 71 | Read `skills/blog-feed-monitor/SKILL.md` for full CLI reference. |
| 72 | |
| 73 | #### 2C. Reddit |
| 74 | |
| 75 | For each configured subreddit, run: |
| 76 | |
| 77 | |
| 78 | python3 skills/reddit-post-finder/scripts/search_reddit.py \ |
| 79 | --subreddit "<comma-separated subreddits from config>" \ |
| 80 | --keywords "<comma-separated reddit_keywords from config>" \ |
| 81 | --days <lookback> --sort hot --output json |
| 82 | |
| 83 | |
| 84 | Also run a separate search with `--sort top --time week` to catch high-engagement posts. |
| 85 | |
| 86 | Read `skills/reddit-post-finder/SKILL.md` for full CLI reference. |
| 87 | |
| 88 | #### 2D. Twitter/X |
| 89 | |
| 90 | For each configured Twitter query: |
| 91 | |
| 92 | |
| 93 | python3 skills/twitter-mention-tracker/scripts/search_twitter.py \ |
| 94 | --query "<twitter_query>" \ |
| 95 | --since <yesterday-YYYY-MM-DD> --until <today-YYYY-MM-DD> \ |
| 96 | --max-tweets 30 --output json |
| 97 | |
| 98 | |
| 99 | Read `skills/twitter-mention-tracker/SKILL.md` for full CLI reference. |
| 100 | |
| 101 | #### 2E. LinkedIn |
| 102 | |
| 103 | Search each configured LinkedIn keyword via the linkedin-post-research skill. |
| 104 | |
| 105 | Delegate to the `linkedin-post-research` skill (uses the `apimaestro~linkedin-posts-search-scraper-no-cookies` Apify actor). Search each keyword with `date_posted: "past-day"` (or `"past-week"` for weekly scans). |
| 106 | |
| 107 | Read `skills/linkedin-post-research/SKILL.md` for the full Apify workflow. |
| 108 | |
| 109 | #### 2F. Hacker News |
| 110 | |
| 111 | |
| 112 | python3 skills/hacker-news-scraper/scripts/search_hn.py \ |
| 113 | --query "<hn_query>" --days <lookback> --output json |
| 114 | |
| 115 | |
| 116 | Run once per configured `hn_queries` entry. Read `skills/hacker-news-scraper/SKILL.md` for full CLI reference. |
| 117 | |
| 118 | #### 2G. RSS News Feeds |
| 119 | |
| 120 | If the client has an accounting-news-monitor (or similar) configured: |
| 121 | |
| 122 | |
| 123 | python3 skills/accounting-news-monitor/scripts/monitor_news.py \ |
| 124 | --new-only --days <lookback> --output json |
| 125 | |
| 126 | |
| 127 | Read `skills/accounting-news-monitor/SKILL.md` for full CLI reference. |
| 128 | |
| 129 | #### 2H. Newsletter Inbox |
| 130 | |
| 131 | If the client has newsletter monitoring configured: |
| 132 | |
| 133 | |
| 134 | python3 skills/newsletter-monitor/scripts/scan_newsletters.py \ |
| 135 | --days <lookback> --output json |
| 136 | |
| 137 | |
| 138 | Read `skills/newsletter-monitor/SKILL.md` for full CLI reference. |
| 139 | |
| 140 | #### 2I. Review Sites |
| 141 | |
| 142 | For each configured review URL: |
| 143 | |
| 144 | |
| 145 | python3 skills/review-site-scraper/scripts/scrape_reviews.py \ |
| 146 | --platform <platform> --url "<review_url>" \ |
| 147 | --days <lookback> --max-reviews 20 --output json |
| 148 | |
| 149 | |
| 150 | Read `skills/review-site-scraper/SKILL.md` for full CLI reference. |
| 151 | |
| 152 | ### Phase 3: Consolidate & Categorize |
| 153 | |
| 154 | After all data collection completes, consolidate the results: |
| 155 | |
| 156 | **Deduplicate** — items appearing across multiple sources (e.g., a news story on both a blog and Reddit). Keep the richest version but note multi-source appearance (higher signal). |
| 157 | |
| 158 | **Categorize** each item into one of these types: |
| 159 | |
| 160 | | Category | What to Look For | |
| 161 | |----------|-----------------| |
| 162 | | **Competitor News** | Shutdowns, launches, funding, pivots, negative reviews, leadership changes, pricing changes | |
| 163 | | **Industry Events** | Upcoming conferences, webinars, meetups, speaker slots, CFPs, award nominations | |
| 164 | | **Market Trends** | Viral discussions, hot topics, emerging themes, sentiment shifts, adoption data | |
| 165 | | **Regulatory / Policy** | New regulations, compliance changes, government actions, standards updates | |
| 166 | | **People Moves** | Key hires, departures, promotions at competitors or target companies | |
| 167 | | **Technology** | New product launches, integrations, platform changes, deprecations | |
| 168 | | **Funding / M&A** | Acquisitions, mergers, funding rounds, PE investments, IPO signals | |
| 169 | | **Pain Points** | People publicly complaining about problems the client solves | |
| 170 | | **Content Opportunities** | Trending content, viral posts, gaps in existing coverage, unanswered questions | |
| 171 | |
| 172 | **Rate relevance** — High / Medium / Low based on how directly it relates to the client's ICP and value props. |
| 173 | |
| 174 | **Filter out noise** — Drop items rated Low relevance unless they're genuinely noteworthy. The goal is signal, not volume. |
| 175 | |
| 176 | ### Phase 4: Generate Strategic Opportunities |
| 177 | |
| 178 | Review the consolidated intelligence and identify items (or clusters of related items) that present genuine GTM opportunities. |
| 179 | |
| 180 | **CRITICAL: Do NOT force-fit a strategy for every item.** Many items are just "good to know" — that's fine, they go in the intelligence briefing. Only generate strategy ideas where there is a real, actionable opportunity that could meaningfully impact growth. |
| 181 | |
| 182 | For each genuine opportunity, produce: |
| 183 | |
| 184 | | Field | Description | |
| 185 | |-------|-------------| |
| 186 | | **Trigger** | What happened — the intelligence item(s) that sparked this idea | |
| 187 | | **Strategy** | What to do about it — specific and actionable, not vague | |
| 188 | | **Tactics** | 2-4 concrete next steps with skill references where applicable | |
| 189 | | **Urgency** | `Immediate` (do this today/this week), `Soon` (next 2 weeks), or `Evergreen` | |
| 190 | | **Effort** | `Low` (1-2 hours), `Medium` (half day), `High` (multi-day project) | |
| 191 | | **Expected Impact** | Why this could matter — who it reaches, what it could generate | |
| 192 | |
| 193 | #### Strategy Patterns to Draw From |
| 194 | |
| 195 | Use these as inspiration, not as a checklist. Match the pattern to the trigger: |
| 196 | |
| 197 | **Competitor in trouble (shutdown, bad reviews, layoffs, pivot):** |
| 198 | Publish a migration/comparison guide targeting their customers |
| 199 | Find their customers via review sites, LinkedIn posts mentioning them → outreach |
| 200 | Engage on social posts where people discuss the shutdown/issues |
| 201 | Create "alternative to X" content for SEO capture |
| 202 | Skills: `web-archive-scraper` (recover their customer list), `review-site-scraper` (find reviewers), `linkedin-post-research` (find posts about them), `cold-email-outreach` |
| 203 | |
| 204 | **Industry event coming up:** |
| 205 | Apply to speak (if speaker slots are open) |
| 206 | Plan pre-event outreach to attendees (skill: `luma-event-attendees` or `conference-speaker-scraper`) |
| 207 | Create event-specific content (e.g., "What We're Watching at [Event]") |
| 208 | Plan on-site presence and follow-up campaign |
| 209 | |
| 210 | **Viral post or trending discussion:** |
| 211 | Engage thoughtfully on the thread (LinkedIn comment, Reddit reply, tweet) |
| 212 | Create response content (blog post, LinkedIn post) with the client's expert take |
| 213 | If the poster is ICP, follow up directly |
| 214 | Skills: `linkedin-post-research`, `company-contact-finder` |
| 215 | |
| 216 | **Acquisition or merger announced:** |
| 217 | Reach out to the acquired company's clients (they're in transition, open to alternatives) |
| 218 | Create content about what the acquisition means for the industry |
| 219 | Skills: `web-archive-scraper` (find client lists), `company-contact-finder` |
| 220 | |
| 221 | **New regulation or policy change:** |
| 222 | Create educational content positioning the client as an expert |
| 223 | Direct outreach to companies affected by the change |
| 224 | Host a webinar or publish a guide about compliance |
| 225 | |
| 226 | **Pain point surfaced (Reddit complaint, negative review, LinkedIn vent):** |
| 227 | Engage helpfully on the post (don't pitch — add value first) |
| 228 | If the poster is ICP, follow up with a direct message/email |
| 229 | Create content addressing the specific pain point |
| 230 | Skills: `company-contact-finder` |
| 231 | |
| 232 | **Trending topic or content gap:** |
| 233 | Publish thought leadership content while the topic is hot |
| 234 | CEO/founder LinkedIn post with a unique take |
| 235 | Podcast or webinar on the trending topic |
| 236 | |
| 237 | **Funding round announced at target company:** |
| 238 | Outreach to the company (post-raise = budget for new tools) |
| 239 | Skills: `company-contact-finder`, `cold-email-outreach` |
| 240 | |
| 241 | ### Phase 5: Generate Output |
| 242 | |
| 243 | Save the report to the current working directory as `industry-scan-<YYYY-MM-DD>.md` (or user-specified path) using this structure: |
| 244 | |
| 245 | |
| 246 | |
| 247 | |
| 248 | # Industry Intelligence Briefing — <Client Name> |
| 249 | **Date:** <YYYY-MM-DD> |
| 250 | **Scan type:** Daily / Weekly |
| 251 | **Sources scanned:** <list of sources that returned results> |
| 252 | |
| 253 | |
| 254 | |
| 255 | ## Executive Summary |
| 256 | |
| 257 | <2-3 sentence overview of the most important findings. What should the client pay attention to today?> |
| 258 | |
| 259 | |
| 260 | |
| 261 | ## Intelligence Briefing |
| 262 | |
| 263 | ### Competitor News |
| 264 | | Item | Source | Link | Relevance | |
| 265 | |------|--------|------|-----------| |
| 266 | | ... | ... | ... | High/Med | |
| 267 | |
| 268 | ### Industry Events |
| 269 | | Item | Source | Link | Date | Relevance | |
| 270 | |------|--------|------|------|-----------| |
| 271 | |
| 272 | ### Market Trends |
| 273 | | Item | Source | Link | Engagement | Relevance | |
| 274 | |------|--------|------|------------|-----------| |
| 275 | |
| 276 | ### Funding / M&A |
| 277 | | Item | Source | Link | Relevance | |
| 278 | |------|--------|------|-----------| |
| 279 | |
| 280 | ### Regulatory / Policy |
| 281 | | Item | Source | Link | Relevance | |
| 282 | |------|--------|------|-----------| |
| 283 | |
| 284 | ### Technology |
| 285 | | Item | Source | Link | Relevance | |
| 286 | |------|--------|------|-----------| |
| 287 | |
| 288 | ### People Moves |
| 289 | | Item | Source | Link | Relevance | |
| 290 | |------|--------|------|-----------| |
| 291 | |
| 292 | ### Pain Points & Complaints |
| 293 | | Item | Source | Link | Engagement | Relevance | |
| 294 | |------|--------|------|------------|-----------| |
| 295 | |
| 296 | ### Content Opportunities |
| 297 | | Item | Source | Link | Why | Relevance | |
| 298 | |------|--------|------|-----|-----------| |
| 299 | |
| 300 | *(Only include sections that have items. Skip empty categories.)* |
| 301 | |
| 302 | |
| 303 | |
| 304 | ## Strategic Growth Opportunities |
| 305 | |
| 306 | *(Only include opportunities where there's a genuine, actionable strategy with meaningful potential impact. It is completely fine to have zero opportunities on a quiet day.)* |
| 307 | |
| 308 | ### Opportunity 1: <Short title> |
| 309 | |
| 310 | **Trigger:** <What happened> |
| 311 | |
| 312 | **Strategy:** <What to do about it> |
| 313 | |
| 314 | **Tactics:** |
| 315 | 1. <Specific action> *(skill: <skill-name> if applicable)* |
| 316 | 2. <Specific action> |
| 317 | 3. <Specific action> |
| 318 | |
| 319 | **Urgency:** Immediate / Soon / Evergreen |
| 320 | **Effort:** Low / Medium / High |
| 321 | **Expected Impact:** <Why this matters> |
| 322 | |
| 323 | |
| 324 | |
| 325 | ### Opportunity 2: ... |
| 326 | |
| 327 | |
| 328 | |
| 329 | ## Scan Statistics |
| 330 | |
| 331 | - **Total items found:** X |
| 332 | - **By category:** Competitor News (X), Events (X), Trends (X), ... |
| 333 | - **Opportunities identified:** X |
| 334 | - **Sources that returned results:** X of Y configured |
| 335 | |
| 336 | |
| 337 | |
| 338 | |
| 339 | ## Configuration |
| 340 | |
| 341 | Each client needs a config file at `clients/<client>/config/industry-scanner.json`. See `skills/industry-scanner/config/example-config.json` for the full schema. |
| 342 | |
| 343 | Key fields: |
| 344 | `web_search_queries` — broad industry search terms |
| 345 | `competitors` — competitor names to monitor |
| 346 | `subreddits` + `reddit_keywords` — Reddit monitoring config |
| 347 | `twitter_queries` — Twitter/X search terms |
| 348 | `linkedin_keywords` — LinkedIn post search terms |
| 349 | `blog_urls` — industry publication URLs (for RSS scraping) |
| 350 | `hn_queries` — Hacker News search terms |
| 351 | `review_urls` — competitor review page URLs (G2, Capterra, Trustpilot) |
| 352 | `event_keywords` — conference and event search terms |
| 353 | |
| 354 | ## Tips |
| 355 | |
| 356 | **Daily vs Weekly:** Daily scans (`--lookback 1`) are fast but may miss slower-developing stories. Run a weekly deep scan (`--lookback 7`) every Monday for comprehensive coverage. |
| 357 | **Noisy sources:** If a source consistently returns irrelevant results, tune the keywords in the config rather than dropping the source entirely. |
| 358 | **Multi-source signals:** Items that appear across multiple sources (e.g., on both Reddit and Twitter) are higher-signal. Flag these in the briefing. |
| 359 | **Strategy quality > quantity:** A day with zero strategic opportunities is better than a day with five forced ones. The intelligence briefing has standalone value even without opportunities. |
| 360 | **Follow up:** When an opportunity references a downstream skill (e.g., `company-contact-finder`), the user can chain directly into that skill to take action. |
| 361 | |
| 362 | ## Dependencies |
| 363 | |
| 364 | No additional dependencies beyond what the sub-skills require: |
| 365 | `requests` (Python) — for blog-feed-monitor, reddit-post-finder, twitter-mention-tracker, hn-scraper, review-site-scraper, news-monitor |
| 366 | `APIFY_API_TOKEN` env var — for Reddit, Twitter, and review scraping |
| 367 | `agentmail` + `python-dotenv` — for newsletter-monitor (if configured) |
| 368 | `APIFY_API_TOKEN` — LinkedIn post search goes through the `linkedin-post-research` skill (Apify-based) |
| 369 |