FeedKit について
FeedKitは、RSS/Atomフィードを収集・検索するPythonパッケージです。厳選カタログに加え、CLI、Python API、SQLite保存、MCPツールを備えています。
主な機能
- 01厳選フィードカタログ
- 02フィードの購読
- 03非同期のフィード収集
- 04SQLiteによる記事保存
- 05記事の全文検索
- 06CLIとPython API
活用シーン
- 01トピックや言語でフィードを検索
- 02購読フィードから記事を収集
- 03収集済み記事を検索
- 04MCPクライアントからフィードのワークフローを利用
MCP 対応
stdioのMCPサーバーが、フィード取得、カタログや記事の検索、購読管理、収集、最新記事取得のツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
FeedKit
厳選・検証済みフィード444件を収録したRSS/Atomフィードコレクションです。CLI + Python API + MCP サーバー。
クイックスタート
pip install feedkit
feedkit search cloudflare # search the built-in catalog
feedkit subscribe-catalog -c technology # subscribe to all 68 tech feeds
feedkit collect # fetch all subscriptions (async parallel)
feedkit find "kubernetes" # full-text search collected articles
インストール
pip install feedkit # core (CLI + Python API)
pip install "feedkit[mcp]" # + MCP server
pip install "feedkit[all]" # + MCP + OPML import/export
要件: Python 3.11+
仕組み
flowchart LR
A["📋 Catalog\n444 curated feeds"] --> B["Subscribe\nselect feeds"]
B --> C["🔄 Collect\nfetch new entries"]
C --> D["📦 Store\nSQLite database"]
D --> E["🔍 Query\nfilter & retrieve"]
CLI リファレンス
カタログコマンド
feedkit search [QUERY]
厳選フィード444件を収録した組み込みカタログを検索します。
feedkit search aws # search by title or domain
feedkit search --category science # filter by category
feedkit search --language ko # filter by language
feedkit search -c finance -l en -n 50 # combine filters
feedkit search -j # JSON output (for piping)
| オプション | 短縮形 | デフォルト | 説明 |
|---|---|---|---|
--category | -c | カテゴリで絞り込み | |
--language | -l | 言語コードで絞り込み(en、ko、ja、zh) | |
--limit | -n | 20 | 最大結果数 |
--json-output | -j | JSON 形式で出力 |
feedkit categories
利用可能なカタログカテゴリをすべて一覧表示します。
$ feedkit categories
academia
finance
pets
science
society
technology
feedkit stats
カタログとローカルの購読状況の統計を表示します。
$ feedkit stats
Catalog: 444 feeds
academia: 13
finance: 89
pets: 27
science: 128
society: 119
technology: 68
Local: 68 subscriptions, 1,247 articles
購読コマンド
feedkit subscribe <URL>
単一のフィードを購読します。
feedkit subscribe https://blog.cloudflare.com/rss/
feedkit subscribe https://example.com/rss -c tech -t "My Feed"
| オプション | 短縮形 | 説明 |
|---|---|---|
--category | -c | カテゴリラベル |
--title | -t | 表示タイトルの上書き |
feedkit subscribe-catalog -c <CATEGORY>
カタログカテゴリ内のすべてのフィードを一度に購読します。
feedkit subscribe-catalog -c technology # subscribe to all 68 tech feeds
feedkit subscribe-catalog -c science # subscribe to all 128 science feeds
feedkit unsubscribe <URL>
フィードの購読と、収集済みの記事を削除します。
feedkit list
現在のすべての購読を、取得回数とエラー回数とともに一覧表示します。
収集コマンド
feedkit collect
購読中のすべてのフィードから新しい記事を取得します(非同期並列処理)。
feedkit collect # collect all
feedkit collect -c technology # collect only tech feeds
feedkit collect -n 50 # max 50 concurrent requests
| オプション | 短縮形 | デフォルト | 説明 |
|---|---|---|---|
--category | -c | このカテゴリのみ収集 | |
--concurrency | -n | 20 | HTTP リクエストの最大同時実行数 |
出力:
Collecting from 68 feeds...
67/68 feeds OK, 412 new articles, 8234ms
feedkit latest
最近収集した記事を表示します。
feedkit latest # latest 20 articles
feedkit latest -n 50 # latest 50
feedkit latest -c finance # latest from finance only
feedkit find <QUERY>
収集済みのすべての記事を全文検索します(SQLite FTS5)。
feedkit find "kubernetes deployment"
feedkit find "large language model" -n 50
OPML コマンド
feedkit import-opml <PATH>
OPML ファイルからフィードをインポートします(Feedly、Inoreader、NetNewsWire など)。
feedkit import-opml subscriptions.opml
feedkit export-opml <PATH>
現在の購読をOPMLにエクスポートします。
feedkit export-opml backup.opml
Python API
from feedkit import search_catalog, fetch_feed, get_catalog_stats, FeedStore
from feedkit.core import collect
# Search the built-in catalog
feeds = search_catalog("cloudflare")
feeds = search_catalog(category="technology", language="en", limit=50)
# Fetch a single feed (async)
entries = await fetch_feed("https://blog.cloudflare.com/rss/")
for entry in entries:
print(entry.title, entry.url, entry.published)
# Subscribe and collect
store = FeedStore() # SQLite at ~/.feedkit/feedkit.db
store.subscribe("https://blog.cloudflare.com/rss/", category="tech")
result = await collect(store, concurrency=20) # async parallel fetch
print(f"{result.new_articles} new, {result.feeds_ok}/{result.feeds_total} OK")
# Search collected articles (FTS5)
articles = store.search("kubernetes", count=10)
# Latest articles
articles = store.get_latest(count=20, category="tech")
# Feed health
health = store.get_health() # fetch/error counts per feed
# Catalog stats
stats = get_catalog_stats() # {total_feeds, categories, languages}
store.close()
主なクラス
| クラス | 説明 |
|---|---|
FeedStore | SQLite ベースの購読・記事ストア(~/.feedkit/feedkit.db) |
FeedEntry | 取得したフィードの単一エントリ(title、url、summary、published、author) |
CollectResult | 一括収集の結果(feeds_ok、feeds_error、new_articles、duration_ms) |
CatalogFeed | 組み込みカタログのエントリ(url、title、category、subcategory、language、domain) |
MCP サーバー
pip install "feedkit[mcp]"
feedkit-mcp # starts stdio MCP server
設定
Claude Code(~/.claude/settings.json):
{
"mcpServers": {
"feedkit": {
"command": "feedkit-mcp"
}
}
}
ツールリファレンス
| # | ツール | パラメーター | 説明 |
|---|---|---|---|
| 1 | fetch_single_feed | url, count=10 | 任意の RSS/Atom URL からエントリーを取得します(購読は不要です) |
| 2 | search_feed_catalog | query, category, language, count=20 | 組み込みの 444 件のフィードカタログを検索します |
| 3 | catalog_stats | カタログの統計情報(合計、カテゴリ別、言語別)を取得します | |
| 4 | subscribe_feed | url, title, category | 継続的な収集のためにフィードを購読します |
| 5 | unsubscribe_feed | url | 購読を解除します |
| 6 | list_subscriptions | すべての購読をステータスとともに一覧表示します | |
| 7 | collect_feeds | category | すべての購読から新しい記事を収集します |
| 8 | search_articles | query, count=10 | 収集した記事を全文検索します |
| 9 | get_latest_articles | category, count=20 | 最近収集された記事を取得します |
MCP ワークフローの例
User: "What are the latest AI papers on arXiv?"
1. search_feed_catalog(query="arxiv", category="science")
→ finds arXiv cs.AI, cs.LG, cs.CL feeds
2. subscribe_feed(url="https://rss.arxiv.org/rss/cs.AI")
3. collect_feeds(category="science")
→ fetches new entries
4. get_latest_articles(category="science", count=10)
→ returns latest papers
組み込みカタログ
6 つのカテゴリにわたる、検証済みのフィード 444 件を収録しています。すべて監査済みで、ハードペイウォール(Bloomberg、FT、WSJ)とリンク切れの URL は削除されています。
| カテゴリ | フィード数 | サブカテゴリ | 主なフィード |
|---|---|---|---|
| technology | 68 | ai_ml, developer, it_news, security, startup, ... | AWS、Cloudflare、Stripe、Netflix、HN、Go Blog、Rust Blog |
| science | 128 | journal, preprint, news, government | Nature、Science、arXiv、bioRxiv、medRxiv、NASA、PLOS |
| society | 119 | news_us, news_ko, news_uk, news_intl, factcheck, ... | BBC、NPR、NYT、NHK、JTBC、PolitiFact、Snopes |
| finance | 89 | markets, central_bank, regulatory, crypto | Fed、BOE、BOJ、SEC、CNBC、CoinDesk、Yahoo Finance |
| pets | 27 | veterinary, community, blog, health | AKC、PetMD、ASPCA、dvm360、r/dogs、r/cats |
| academia | 13 | ai_ml, research, institution | Google AI、DeepMind、Stanford HAI、Hugging Face |
言語: 英語(381)、韓国語(47)、日本語(14)、中国語(2)
フィードの全リスト:CATALOG.md
FeedKit を選ぶ理由
| awesome-rss-feeds (2.1K★) | engineering-blogs (37.5K★) | FeedKit | |
|---|---|---|---|
| 種類 | Markdown リスト | Markdown リスト | Python パッケージ |
| フィード数 | 約 500 | 約 600 | 444 |
| 対象範囲 | 一般 | 技術ブログのみ | 技術 + 科学 + 金融 + ニュース + ファクトチェック |
| 最終更新 | 2021 年(古い) | 2022 年(古い) | 更新中(毎日収集) |
| 動作確認済み | いいえ | いいえ | はい(778K 件以上の記事を収集済み) |
| 法的監査 | いいえ | いいえ | はい(ペイウォール/利用規約に問題のあるフィードを削除) |
| CLI | いいえ | いいえ | はい(12 コマンド) |
| プログラム API | いいえ | いいえ | はい(非同期 Python) |
| MCP サーバー | いいえ | いいえ | はい(9 ツール) |
| OPML | いいえ | いいえ | はい(インポート/エクスポート) |
| FTS 検索 | いいえ | いいえ | はい(SQLite FTS5) |
免責事項
このパッケージが配布するのは、公開されている RSS フィード URL のカタログであり、フィードのコンテンツ自体ではありません。RSS はシンジケーション標準であり、RSS フィードの公開は、読者に購読を明示的に呼びかけるものです。FeedKit はユーザーに代わってフィードを取得し、著作権で保護されたコンテンツを保存または再配布しません。
ハードペイウォール(Bloomberg、FT、WSJ、Barron's)の背後にあるフィードと、厳しい利用規約を設けているフィードは、カタログから削除されています。
使用例
- newswatch — RSS ニュース監視パイプライン(feedkit → markgrab → embgrep → diffgrab)
ライセンス
QuartzUnit エコシステムの一部です — データ収集、抽出、検索、AI エージェントの安全性のための、組み合わせ可能な Python ライブラリです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。