create-image-fal
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
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
$ npx -y skills add gooseworks-ai/goose-skills --skill newsletter-signal-scanner --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/newsletter-signal-scannerContext preview
The summary Claude sees to decide when to auto-load this skill.
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
name: newsletter-signal-scanner description: > 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. tags: [monitoring]
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.
1. Which newsletters should be subscribed to and monitored? (List names or URLs)
2. Which AgentMail inbox should receive them? (Or should we create a new one?)
3. Competitor names to track (e.g., "Clay", "Apollo", "Outreach") 4. ICP pain-language terms to track (e.g., "outbound struggling", "pipeline dried up", "SDR ramp") 5. Market shift terms (e.g., "AI SDR", "agent-led growth", "GTM engineer") 6. Your brand name (to catch mentions)
7. Digest delivery: Slack channel, email, or markdown file? (default: markdown file) 8. Frequency: daily or weekly? (default: weekly)
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 = matchesOnly 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:
1. Get the AgentMail inbox address (via AgentMail API at agentmail.dev) 2. For each newsletter, visit subscription page and submit the AgentMail address 3. Confirm subscriptions (check inbox for confirmation emails) 4. Allow 1-2 weeks of accumulation before first full digest
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 co
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Repo: gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.