Skip to content

babarot/rss-fetcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rss-fetcher

CLI to fetch RSS feeds and write full-text Markdown articles via r.jina.ai.

Install

go install github.com/babarot/rss-fetcher@latest

Usage

rss-fetcher --config ~/.config/rss-fetcher/feeds.toml --output ~/path/to/output/

Options

Flag Default Description
--config Path to feeds.toml (required)
--output Output directory for article files (required)
--log-level error Log verbosity: error, info, debug

Log levels

Level What is shown
error Fatal errors only (default — stderr is silent on success)
info Saved and skipped articles
debug Feed fetch details, per-article processing, full-text fetch, already-exists skips
# Show saved/skipped messages
rss-fetcher --config feeds.toml --output ~/path/to/output/ --log-level info
# [INFO]  [cloudflare-blog] Saved: 2026-02-26-article-title.md
# [INFO]  [cloudflare-blog] Skipped "Some Article": fetch full text: jina.ai returned 429

# Show full fetch trace
rss-fetcher --config feeds.toml --output ~/path/to/output/ --log-level debug
# [DEBUG] [cloudflare-blog] Fetched feed: 20 items
# [DEBUG] [cloudflare-blog] Processing: "Article Title"
# [DEBUG] [cloudflare-blog] Fetching full text: https://blog.cloudflare.com/...
# [INFO]  [cloudflare-blog] Saved: 2026-02-26-article-title.md
# [DEBUG] [cloudflare-blog] Already exists, skipping: 2026-01-15-old-article.md

Setup

mkdir -p ~/.config/rss-fetcher
cp feeds.toml.example ~/.config/rss-fetcher/feeds.toml
# Edit feeds.toml to add your subscriptions

feeds.toml

[[feed]]
name = "cloudflare-blog"
url  = "https://blog.cloudflare.com/rss"

[[feed]]
name = "my-blog"
url  = "https://example.com/rss"

Output

For each new article, a Markdown file is written to {output}/{feed-name}/{date}-{slug}.md:

---
title: "Article Title"
url: https://example.com/article
feed: my-blog
published_at: 2026-02-26
fetched_at: 2026-02-26T10:00:00+09:00
---

(full text retrieved via r.jina.ai)

Already-existing files are skipped (idempotent).

Processed article metadata is printed to stdout as JSON:

[
  {
    "feed_name": "cloudflare-blog",
    "title": "Article Title",
    "url": "https://example.com/article",
    "published_at": "2026-02-26",
    "file_path": "/path/to/output/cloudflare-blog/2026-02-26-article-title.md"
  }
]

About

CLI to fetch RSS feeds and write full-text Markdown articles via r.jina.ai

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages