Resources
38Install
npx skillscat add zirnhelt/super-rss-feed Install via the SkillsCat registry.
SKILL.md
Cariboo Signals — Technical Reference
Repos & URLs
| System | Repo | Live site |
|---|---|---|
| RSS | github.com/zirnhelt/super-rss-feed | zirnhelt.github.io/super-rss-feed/ |
| Podcast | github.com/zirnhelt/curated-podcast-generator | zirnhelt.github.io/curated-podcast-generator/ |
Local paths: ~/super-rss-feed, ~/curated-podcast-generator
RSS Feed System — key files
super_rss_curator_json.py— main script (only curator that runs)fetch_images.py— OpenGraph scraping + favicon fallbackconfig_loader.py— loads config/ directoryconfig/— categories.json, category_rules.json, filters.json, limits.json, system.json, feeds.json, scoring_interests.txtfeeds.opml— 50+ source feeds.github/workflows/generate-feed.yml— runs 3x daily (6 AM / 2 PM / 10 PM Pacific)index.html— feed websitescored_articles_cache.json,shown_articles_cache.json,wlt_cache.json— runtime caches, committed by workflowROADMAP.md— planned features and improvements
Podcast Generator — key files
podcast_generator.py— main script (only generator that runs)dedup_articles.py— cross-episode dedup (checks last 7 days of citations)config_loader.py— loads config/ directoryconfig/— podcast.json, hosts.json, themes.json, credits.json, interests.txt.github/workflows/daily-podcast.yml— runs daily at 4 AM Pacificgenerate_html.py— builds index.html from configfix_rss.py— standalone RSS repair utility (manual)episode_memory.json,host_personality_memory.json— runtime stateROADMAP.md— planned features and improvements
Dead files — do not touch
RSS repo: super_rss_curator.py, super_rss_curator_cached.py, all *.backup*, all fix_*.py, super_rss_curator_json_old.py
Podcast repo: podcast_generator_backup*.py, podcast_generator_old.py, podcast_generator_with_music.py, index_old.html
Active gotchas
- WLT cache corruption — entries can become bare strings instead of dicts. Always guard with
isinstance(v, dict)before accessing. - Cache merge conflicts — GitHub Actions commits caches; local pulls can conflict. Resolve by keeping remote version.
- RSS feed blocking — some tech sites reject default User-Agent. Both
fetch_images.pyandfetch_feed_articles()send custom UA headers. - shown_articles_cache bloat — cleanup logic in
load_shown_cache()if it grows past ~300K. - Podcast RSS XML escaping — bare
&breaks DOMParser. All RSS output must usesaxutils.escape(). - Mint venv required — local Python:
python -m venv venv && source venv/bin/activate
Session workflow
- User runs
git pullin relevant repo - User states what's broken or wanted + which file
- Claude fetches/views only that file
- Claude proposes change (small, reviewable)
- User approves
- Claude executes str_replace + syntax check
- User decides commit/push
Rules: Never build automatically. Prompt first. All instructions must be copy-pastable bash. Separate steps if review needed between them.
Project snapshot
Run ~/Downloads/project_snapshot_script.sh to generate fresh snapshot of both projects for uploading to Project Knowledge. Script pulls latest from GitHub, captures core files (not backups/caches), and includes last 50 commits.
Environment
- GitHub ID: zirnhelt
- Hosting: GitHub Pages (static files)
- Home system: Linux Mint
- Editor: gedit (exploring VS Code for Python)
- Browser: Chrome
- RSS reader: Inoreader free edition