rsstock は、登録した RSS / Atom フィードを取得してローカルの SQLite データベースに
保存するコマンドラインツールです。保存した記事はプレーンテキストで標準出力に表示する
ため、パイプで他のツールに渡せます。
# 1. 設定ファイルとデータベースを用意する
rsstock init
# 2. ~/.config/rsstock/ のフィードファイルにフィードを追記する(下記参照)
# 3. フィードを取得して記事を保存する
rsstock update
# 4. 記事を一覧表示する
rsstock list
# 5. 記事 ID を指定して本文を読む
rsstock show 1| コマンド | 説明 |
|---|---|
rsstock init |
設定ディレクトリ(config.toml+feed.toml 雛形)・データベースを作成する |
rsstock update |
フィードを取得し新着記事を保存する |
rsstock list |
保存済み記事をプレーンテキストで一覧表示する |
rsstock show <ID> |
指定 ID の記事本文を表示する |
rsstock feeds |
設定済みフィードと取得状況を表示する |
rsstock skill install |
スキルを ~/.agents/skills/rsstock/SKILL.md に書き出す |
rsstock skill uninstall |
上記スキルファイルを削除する |
各コマンドのオプションは rsstock <コマンド> --help で確認できます。
設定は ~/.config/rsstock/ ディレクトリを手で編集します(rsstock は読み取りのみ)。
設定 [settings] は config.toml、フィードは任意の *.toml(フィードファイル)に書きます。
ファイル名が --feed で指定する名前になります(例: blog.toml → --feed blog)。
# config.toml — 動作設定
[settings]
concurrency = 8 # 全体の同時リクエスト数の上限(既定 8)
per_host_concurrency = 2 # 同一ホストへの同時リクエスト上限(既定/下限 2)
per_host_interval_ms = 1000 # 同一ホストへの最小リクエスト間隔ms(既定 1000、下限 250)
timeout_secs = 30 # 1 リクエストのタイムアウト秒(既定 30)
max_items = 20 # 1 feed あたり処理する記事数の上限(既定 20、0 で無制限)
# user_contact = "you@example.com" # 任意。UA の連絡先欄に入る(UA の他は固定)per_host_concurrency / per_host_interval_ms / max_items は配信サイトへの負荷を抑える
礼儀設定です。各設定の詳細は docs/specs/configuration.md を参照してください。
# blog.toml — フィードファイル(--feed blog で対象になる)
[[feeds]]
name = "My Feed"
url = "https://example.com/feed.xml"
[[feeds]]
name = "Another Feed"
url = "https://example.org/atom.xml"
enabled = true # 任意。false でこのフィードをスキップname は全フィードファイルで一意、url は http / https のみ。
- 設定:
~/.config/rsstock/($XDG_CONFIG_HOMEを尊重) - データベース:
~/.local/share/rsstock/rsstock.db($XDG_DATA_HOMEを尊重)
保存・表示される記事のテキスト(タイトル・本文・要約・URL)は、第三者が管理する フィード由来の未検証データです。テキスト出力では端末表示を改ざんしうる制御文字を 除去しますが、内容そのものは信頼できません。出力を AI エージェント等に渡す場合は、 本文に紛れ込んだ指示(プロンプトインジェクション)に従わせないよう、信頼境界を 意識してください。
なお rsstock は robots.txt を参照しません(ユーザーが明示的に登録した feed のみを
取得する前提のため)。
開発ツール(Semgrep / pre-commit)は mise で管理しています。
mise install # mise.toml のツールを導入
pre-commit install # コミット時の静的解析フックを設置
cargo test # テスト
cargo clippy --all-targets # lint(警告ゼロを維持)
cargo fmt --check # フォーマット検査(差分ゼロを維持)