Add a Feed or Source¶
Quick path: Use the
/add-sourceClaude Code skill for guided, automated source addition. It handles RSS discovery, selector inspection, YAML generation, and safe sync. See.claude/skills/add-source/SKILL.md.
Sources are defined in config/sources.yaml, seeded into PostgreSQL, and used by the scheduler and collectors. Runtime always reads from the database; YAML is only used for seeding and manual syncs.
Precedence rules¶
- Database values win at runtime.
- On startup, YAML seeding only runs if fewer than 5 sources exist (see Source Configuration).
- Manual sync:
./run_cli.sh sync-sourcesoverwrites database entries with YAML values unless--no-removeis set.
Steps to add a source¶
-
Edit
config/sources.yamland add an entry with a uniqueid.YAMLKeep- id: "vmray_blog" name: "VMRay Blog" url: "https://www.vmray.com/blog/" rss_url: "https://www.vmray.com/blog/feed/" check_frequency: 1800 active: true config: allow: ["vmray.com"] title_filter_keywords: ["webinar", "training", "careers"] rss_only: falseallow,post_url_regex, andtitle_filter_keywordsconsistent with existing entries to avoid scraping noise. -
Sync YAML to the database. Use
Without--new-onlyto insert new sources without overwriting existing DB configs (e.g. lookback_days, check_frequency):--new-only, sync will overwrite existing sources with YAML values. Use plain--no-removeonly when you intentionally want to reset existing configs to YAML defaults. -
Verify the source is active:
The Sources page in the UI also reflects the new entry and its enablement state.
Notes¶
- To reset the database to YAML defaults, rerun sync without
--no-remove(overwrites DB rows not present in YAML). - Set
active: falseto keep a source defined but disabled; collectors skip inactive sources at runtime. - The Celery Beat periodic task
check-all-sources-every-30min(fixed insrc/worker/celery_app.py, notdocker-compose.yml) sweeps all active sources every 30 minutes; it does not currently gate on each source'scheck_frequency.check_frequency(seconds, default 14400 / 4 hours) is still stored per source, exposed via the API/UI, and used by source scheduling helpers. - If a new source starts failing repeatedly, check the Sources page in the UI for error details and manually update the source config as needed.
Last updated: 2026-07-05 Last reviewed: 2026-09-01