ワンクリックで
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 ページを確認してインストールできます。
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
SOC 職業分類に基づく
| 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)