uv sync --group dev
pre-commit installRun make help to see all available targets with descriptions.
Run all request-based feeds:
uv run feed_generators/run_all_feeds.py --skip-seleniumRun a single feed by name (from feeds.yaml registry):
uv run feed_generators/run_all_feeds.py --feed=ollama
uv run feed_generators/run_all_feeds.py --feed=dagster --full # full resetOr run the script directly:
uv run feed_generators/ollama_blog.py
uv run feed_generators/dagster_blog.py --fullThis project uses Ruff for linting and formatting, enforced via pre-commit hooks and a CI workflow.
Check only:
make dev_lintAuto-fix + format:
make dev_lint_fixSee AGENTS.md for the complete guide on creating feed generators.
Recommended workflow: Use Claude Code with the Playwright MCP to inspect the target site, understand its structure, and generate the scraper.
When to write a custom scraper: Only if the site has no official RSS feed, or if a custom parser adds significant value over the official feed (e.g., full content extraction, structured metadata). Simple filtering (e.g., category-only views) does not justify a custom scraper. Check the README for sites that already have official feeds.
This repo includes two Claude Code skills to streamline feed development:
/cmd-rss-feed-generator— Generate a new feed scraper from a blog URL or HTML sample. Analyzes the site, picks the right pattern, and scaffolds the generator + Makefile target./rss-feed-review— Review feed generators and their XML output for broken selectors, missing error handling, stale feeds, and convention violations.
- Branch from
main - Follow the existing generator patterns in
feed_generators/ - Test your feed locally before submitting
- Reference any related issues in the PR description