skills/composites/newsletter-signal-scanner/SKILL.md
Subscribe to and scan industry newsletters for buying signals, competitor mentions, ICP pain-point language, and market shifts. Parses incoming newsletter emails via AgentMail, matches against keyword campaigns, and delivers a weekly digest of actionable signals. Use when a marketing team wants to turn newsletter subscriptions into an ongoing intelligence feed without manual reading.
npx skillsauth add gooseworks-ai/goose-skills newsletter-signal-scannerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Turn your newsletter subscriptions into a structured intelligence feed. Monitors an AgentMail inbox for incoming newsletters, extracts signal-relevant content by keyword campaign, and delivers a weekly digest of what matters — competitor mentions, ICP pain language, market shifts, and emerging topics.
sponsored-newsletter-finder to discover others.Save campaign config to the current working directory as newsletter-signals.json (or user-specified path).
{
"inbox_id": "<agentmail_inbox_id>",
"keyword_campaigns": {
"competitors": ["Clay", "Apollo", "Outreach", "Salesloft"],
"pain_language": ["pipeline is down", "outbound isn't working", "SDR ramp"],
"market_shifts": ["AI SDR", "GTM engineer", "agent-led"],
"brand_mentions": ["YourCompany", "yourcompany.com"]
},
"newsletters": [
{"name": "Exit Five", "from_domain": "exitfive.com"},
{"name": "The GTM Newsletter", "from_domain": "gtmnewsletter.com"}
],
"output": {
"format": "markdown",
"path": "newsletter-signals-[DATE].md"
}
}
Use the AgentMail API (agentmail.dev) to fetch new emails from the monitored inbox:
Fetch emails from inbox <inbox_id> since <last_scan_date>
Filter to: known newsletter senders (match against newsletters config)
For each email:
For each newsletter email, scan for keyword matches:
for email in emails:
matches = {}
for campaign, keywords in keyword_campaigns.items():
found = []
for keyword in keywords:
if keyword.lower() in email.body.lower():
# Extract context: 50 chars before + keyword + 50 chars after
context = extract_context(email.body, keyword)
found.append({"keyword": keyword, "context": context})
if found:
matches[campaign] = found
email.signal_matches = matches
Only include emails with at least one keyword match in the digest.
For each matched email, extract clean signal snippets:
Competitor mention example:
Newsletter: The GTM Newsletter | Date: 2026-03-05 Campaign: competitors Keyword: "Clay" Context: "...teams that use Clay for enrichment are seeing 3x better personalization rates compared to..."
Pain language example:
Newsletter: Exit Five | Date: 2026-03-04 Campaign: pain_language Keyword: "outbound isn't working" Context: "...a lot of founders telling me outbound isn't working the way it used to. The reply rates I'm seeing..."
# Newsletter Signal Digest — Week of [DATE]
## Summary
- Newsletters scanned: [N]
- Emails with signals: [N]
- Top trending topic: [topic]
---
## Competitor Mentions
### Clay
- **[Newsletter Name]** — [Date]
> "[Context snippet]"
Source: [email subject] | [URL if available]
### [Other Competitor]
...
---
## ICP Pain Language
Signals suggesting your ICP is feeling pain your product solves:
- **[Newsletter Name]** — [Date]
> "[Context snippet]"
— Relevance: [why this matters]
---
## Market Shift Signals
Emerging topics gaining newsletter coverage:
- **"[Topic]"** — mentioned in [N] newsletters this week
> "[Context snippet]"
---
## Your Brand Mentions
[Any mentions of your company or product]
---
## Recommended Actions
1. [Specific action based on signals — e.g., "Exit Five is covering AI SDR fatigue — good moment to publish our take"]
2. [Competitive response if needed]
Save to the current working directory as newsletter-signals-[YYYY-MM-DD].md (or user-specified path).
For first-time setup, subscribe the AgentMail address to target newsletters:
Run weekly (Monday morning recommended):
# Every Monday at 7am — before the team's standup
0 7 * * 1 python3 run_skill.py newsletter-signal-scanner --client <client-name>
| Component | Cost | |-----------|------| | AgentMail inbox | Depends on AgentMail pricing | | Email parsing + keyword matching | Free (local logic) | | Total | Near-zero ongoing cost |
AGENTMAIL_API_KEY environment variable and the agentmail pip package (pip3 install agentmail).development
End-to-end skill that turns a single reference image into a fully-installed, example-rendered style preset for the goose-graphics composite. Analyzes the image, writes the slim style spec, registers it in styles/index.json, generates all 7 format examples using the standard brief, renders PNGs via Playwright, and updates examples/manifest.json. Invoke with /goose-graphics-create-style.
development
Evaluate YC batch companies for investment — scrapes the YC directory, researches each company and its founders (work history, LinkedIn, website), assesses founder-company fit, and exports to Google Sheets with priority rankings. Use when asked to evaluate YC companies, research a YC batch, screen startups, or do due diligence on YC companies.
tools
Take screenshots of any website using Notte browser automation. Use when asked to screenshot, capture, or snap a webpage.
development
Search the web, platforms, and datasets. Use when asked to search, find, look up, research, or discover information from the web, YouTube, Amazon, eBay, news, academic sources, or any online platform.