원클릭으로
newsletter-events-add-source
Add Instagram accounts or web aggregators to sources.yaml configuration
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Add Instagram accounts or web aggregators to sources.yaml configuration
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Research events from Instagram, web aggregators, and Facebook event URLs. Use when scraping event sources, downloading flyer images, or extracting event details.
Generate markdown newsletters from stored events. Use when the user wants to create, write, or generate a newsletter from scraped events.
Set up environment for local newsletter events plugin. Use when first installing, updating dependencies, or verifying configuration.
Manually refresh specific event pages to update event data
List all configured event sources (Instagram, web aggregators)
Remove Instagram accounts or web aggregators from sources.yaml configuration
| name | newsletter-events-add-source |
| description | Add Instagram accounts or web aggregators to sources.yaml configuration |
<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):
## 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.
<success_criteria>
workflows/add-instagram.mdworkflows/add-web-aggregator.md (with profiling)