一键导入
newsletter-events-list-sources
List all configured event sources (Instagram, web aggregators)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
List all configured event sources (Instagram, web aggregators)
用 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.
Add Instagram accounts or web aggregators to sources.yaml configuration
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
Remove Instagram accounts or web aggregators from sources.yaml configuration
| name | newsletter-events-list-sources |
| description | List all configured event sources (Instagram, web aggregators) |
<essential_principles>
All sources are stored in ~/.config/local-media-tools/sources.yaml.
| Type | Filter Keyword | Description |
|---|---|---|
instagram, ig | @handle accounts | |
| Web | web | Event aggregator websites |
Note: Facebook events are not configured sources. Pass event URLs directly to /research.
Sources are displayed in grouped tables with relevant metadata for each type. </essential_principles>
What sources do you want to list?Options:
all or blank - Show all configured sourcesinstagram - Only Instagram accountsweb - Only web aggregatorsProvide filter (or press Enter for all):
## Step 1: Parse FilterCheck if user provided a filter keyword:
filter_input = user_input.strip().lower()
# Normalize filter aliases
filter_map = {
"": "all",
"all": "all",
"instagram": "instagram",
"ig": "instagram",
"web": "web",
}
selected_filter = filter_map.get(filter_input, "all")
from pathlib import Path
import yaml
config_path = Path.home() / ".config" / "local-media-tools" / "sources.yaml"
if not config_path.exists():
print("ERROR: sources.yaml not found. Run /newsletter-events:setup first.")
# STOP HERE
with open(config_path) as f:
config = yaml.safe_load(f)
sources = config.get("sources", {})
instagram_accounts = sources.get("instagram", {}).get("accounts", [])
web_sources = sources.get("web_aggregators", {}).get("sources", [])
total_sources = len(instagram_accounts) + len(web_sources)
if total_sources == 0:
print("No sources configured.")
print("")
print("To add sources: /newsletter-events:add-source @handle")
# STOP HERE
Display each category with appropriate columns:
Instagram Accounts:
| Handle | Name | Type | Location |
|---|---|---|---|
| @localvenue | Local Venue | music_venue | Kingston, NY |
| @themusicbar | The Music Bar | bar | - |
Web Aggregators:
| URL | Name | Type | Max Pages |
|---|---|---|---|
| https://hvmag.com/events | HV Magazine | listing | 50 |
Total: N sources configured
- Instagram: X accounts
- Web: Y aggregators
To add sources: /newsletter-events:add-source @handle
To remove sources: /newsletter-events:remove-source @handle
Note: For Facebook events, pass URLs directly to /research
If a filter was applied but that category is empty:
No instagram sources found.
You have:
- 1 web aggregator
To add Instagram accounts: /newsletter-events:add-source @handle
<success_criteria>