Add Instagram accounts or web aggregators to sources.yaml configuration
Adds Instagram accounts and web aggregators to your sources.yaml configuration. Automatically routes Instagram handles and URLs to their respective workflows, with web URLs requiring profiling to determine optimal scraping strategy.
/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.
workflows/add-instagram.mdworkflows/add-web-aggregator.md<required_reading> STOP. Before doing ANYTHING else, you MUST read this entire file.
This skill uses a dispatcher pattern with separate workflows:
workflows/add-web-aggregator.md (HAS MANDATORY PROFILING)workflows/add-instagram.mdDO NOT just edit sources.yaml directly. Follow the workflows. </required_reading>
<essential_principles>
All sources are stored in ~/.config/local-media-tools/sources.yaml.
| Type | Detection | Workflow |
|---|---|---|
@handle or alphanumeric handle | workflows/add-instagram.md | |
| Web Aggregator | http:// or https:// URL | workflows/add-web-aggregator.md |
facebook.com/events/* | Not stored - use /research directly |
Examples:
@localvenue @musicbar - Add Instagram accountshttps://hudsonvalleyevents.com - Add web aggregator (will be profiled)@venue1 and https://events.com - Mix of sourcesNote: For Facebook events, use /research https://facebook.com/events/123456 instead.
Provide the source(s): </intake>
<process> ## Step 1: Parse and Classify InputAnalyze user input and classify each source:
import re
sources = {"instagram": [], "web": [], "facebook": []}
for token in user_input.replace(",", " ").replace(" and ", " ").split():
token = token.strip()
if not token:
continue
if "facebook.com/events/" in token:
sources["facebook"].append(token)
elif token.startswith("@") or re.match(r"^[a-zA-Z][a-zA-Z0-9_.]+$", token):
sources["instagram"].append(token.lstrip("@").lower())
elif token.startswith("http://") or token.startswith("https://"):
sources["web"].append(token)
If any Facebook URLs detected, inform user:
Facebook events are not stored in configuration.
Pass URLs directly to /research instead:
/research https://facebook.com/events/123456
Continue processing other sources.
If sources["instagram"] is not empty:
workflows/add-instagram.mdIf sources["web"] is not empty:
workflows/add-web-aggregator.mdIMPORTANT: Process web sources one at a time since each requires interactive profiling.
After both workflows complete, display combined summary:
| Type | Source | Name | Status |
|---|---|---|---|
| @localvenue | Local Venue | Added | |
| @musicbar | Music Bar | Already exists | |
| Web | greatnortherncatskills.com | Great Northern Catskills | Added (profiled) |
Config saved to ~/.config/local-media-tools/sources.yaml
Run /newsletter-events:research to scrape these sources.
</process>
<success_criteria>
workflows/add-instagram.mdworkflows/add-web-aggregator.md (with profiling)