smithery.ai

newsletter-events-list-sources

List all configured event sources (Instagram, web aggregators)

First seen Apr 17, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,253 B
  • docs SUMMARY.md 100 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

<essential_principles>

Configuration Location

All sources are stored in ~/.config/local-media-tools/sources.yaml.

Source Types

Type Filter Keyword Description
Instagram instagram, ig @handle accounts
Web web Event aggregator websites

Note: Facebook events are not configured sources. Pass event URLs directly to /research.

Output Format

Sources are displayed in grouped tables with relevant metadata for each type. </essential_principles>

<intake> What sources do you want to list?

Options:

  • all or blank - Show all configured sources
  • instagram - Only Instagram accounts
  • web - Only web aggregators

Provide filter (or press Enter for all): </intake>

<process>

Step 1: Parse Filter

Check 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")

Step 2: Load Config

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)

Step 3: Extract Sources

sources = config.get("sources", {})

instagram_accounts = sources.get("instagram", {}).get("accounts", [])
web_sources = sources.get("web_aggregators", {}).get("sources", [])

Step 4: Check for Empty State

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

Step 5: Format and Display Tables

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

Step 6: Show Summary

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

Handling Filtered Views

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

</process>

<success_criteria>

  • Config loaded successfully
  • Filter applied correctly (if provided)
  • Output formatted as readable tables
  • Empty states handled with helpful messages
  • Summary shows totals
  • Next actions suggested

</success_criteria>