Research events from Instagram, web aggregators, and Facebook event URLs. Use when scraping event sources, downloading flyer images, or extracting event details.
/plugin marketplace add aniketpanjwani/local_media_tools/plugin install newsletter-events@local-media-toolsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/event-detection.mdreferences/facebook-scraper-api.mdreferences/firecrawl-api.mdreferences/scrapecreators-api.mdworkflows/research-all.mdworkflows/research-facebook.mdworkflows/research-instagram.mdworkflows/research-web-aggregator.mdworkflows/research-web-extract.mdworkflows/research-web-scrape.md<essential_principles>
This skill gathers raw event data from configured sources. It does NOT write newsletter content - use newsletter-events-write for that.
https://facebook.com/events/123456)Research produces structured data saved to ~/.config/local-media-tools/data/:
data/raw/instagram_<handle>.json - Raw API responsesdata/images/instagram/<handle>/ - Downloaded flyer imagesdata/events.db - SQLite database with profiles, posts, events, venuesImages are critical. Many venues post event details only in flyer images, not captions. Always analyze downloaded images with Claude's vision.
Image Download Requirement: Instagram CDN URLs return 403 when accessed via WebFetch. Images MUST be downloaded using Python's requests library with proper User-Agent headers, then analyzed locally using the Read tool.
</essential_principles>
NEVER use curl or raw API calls. Always use the CLI tools provided:
Instagram:
# Scrape all configured accounts
uv run python scripts/cli_instagram.py scrape --all
# Scrape specific account
uv run python scripts/cli_instagram.py scrape --handle wayside_cider
# List posts from database
uv run python scripts/cli_instagram.py list-posts --handle wayside_cider
# Show database statistics
uv run python scripts/cli_instagram.py show-stats
# Classify posts (single or batch)
uv run python scripts/cli_instagram.py classify --post-id 123 --classification event --reason "Has future date"
uv run python scripts/cli_instagram.py classify --batch-json '[{"post_id": "123", "classification": "event", "reason": "..."}]'
The CLI tools ensure:
handle, not username)~/.config/local-media-tools/data/raw/Do NOT:
curl to call ScrapeCreators API directlyYou can also paste Facebook event URLs directly:
https://facebook.com/events/123456https://facebook.com/events/789012Wait for response before proceeding. </intake>
<routing> | Response | Workflow | |----------|----------| | 1, "instagram", "ig" | `workflows/research-instagram.md` | | 2, "web", "aggregator", "websites" | `workflows/research-web-aggregator.md` | | 3, "all", "both", "full" | `workflows/research-all.md` | | 4, "facebook", contains `facebook.com/events/` | `workflows/research-facebook.md` | </routing><reference_index>
All domain knowledge in references/:
APIs: scrapecreators-api.md, facebook-scraper-api.md, firecrawl-api.md Detection: event-detection.md </reference_index>
<workflows_index>
| Workflow | Purpose |
|---|---|
| research-instagram.md | Scrape Instagram, download images, extract events |
| research-facebook.md | Scrape individual Facebook event URLs |
| research-web-aggregator.md | Dispatcher for web scraping (calls scrape + extract) |
| research-web-scrape.md | Phase 1: Scrape pages, return JSON |
| research-web-extract.md | Phase 2: Extract events from JSON, save via CLI |
| research-all.md | Run all research workflows |
| </workflows_index> |
<success_criteria> Research is complete when:
~/.config/local-media-tools/data/raw/newsletter-events-write skill
</success_criteria>