
AI搭載のRSSリーダー・記事要約サービス開発をスタート
本日より、新しいプロジェクト「RSSリーダー・記事要約サービス」の開発に着手しました。
プロジェクトの概要
このプロジェクトは、オープンソースのAIを活用して、RSS フィードから取得した記事を自動的に要約するサービスです。情報過多の時代において、効率的に情報をキャッチアップするためのツールを目指しています。
プロジェクトの詳細は以下のディレクトリで管理しています:
~/srv/projects/ai_cursor/feed/README.md
開発の背景と動機
情報過多の時代における課題
現代のエンジニアは、日々膨大な量の情報に囲まれています:
- 技術ブログ: Qiita、Zenn、個人ブログなど
- 公式ドキュメント: フレームワークやライブラリの更新情報
- ニュースサイト: Hacker News、Reddit、技術ニュースサイト
- 企業テックブログ: 大手IT企業の技術発信
これらすべてに目を通すのは物理的に不可能です。興味のある分野だけでも、1日に数十から数百の記事が配信されます。
既存のRSSリーダーの限界
従来のRSSリーダー(Feedly、Inoreaderなど)は優れたツールですが、以下のような課題があります:
- 未読が溜まる: 記事が多すぎて結局読まなくなる
- タイトルだけでは判断できない: クリックして開いてみないと内容が分からない
- 時間がかかる: 重要な情報を見つけるまでに多くの時間を費やす
- プライバシーの懸念: クラウドサービスにすべての閲覧履歴が記録される
解決したい課題
このプロジェクトでは、以下の機能を実現することで、これらの課題を解決したいと考えています:
- RSS フィードの自動収集: 複数のフィードを一元管理し、定期的に新着記事を取得
- AI による記事要約: 各記事の内容を数行で要約し、読む価値があるか瞬時に判断
- スマートフィルタリング: 自分の興味に合った記事を優先的に表示
- ローカルファースト: データをローカルに保存し、プライバシーを保護
- 効率的な情報収集: 1日30分で重要な情報をすべてキャッチアップ
想定されるユースケース
このサービスは、以下のような場面で活用できると考えています:
1. 朝の情報収集(15分)
起床 → コーヒーを飲みながらアプリを起動
↓
前日から溜まった記事の要約を一覧表示
↓
重要そうな記事だけピックアップして本文を読む
↓
気になる記事はお気に入りに保存
2. 技術トレンドのキャッチアップ
- 新しいフレームワークのリリース情報
- セキュリティアップデート
- ベストプラクティスの変化
- 業界の動向
3. 学習教材の収集
- チュートリアル記事の発見
- 問題解決のヒント
- コードサンプルの収集
- 学習ロードマップの作成
4. ナレッジベースの構築
- 要約した記事をカテゴリ別に整理
- 後で参照できるように保存
- 関連する記事同士をリンク(Obsidian連携)
技術スタックの検討
フロントエンド
現時点で検討している技術スタック:
const frontendStack = {
framework: 'Next.js 15 (App Router)',
ui: 'Tailwind CSS v4 + shadcn/ui',
state: 'Zustand or Jotai',
data: 'TanStack Query (React Query)',
};
- Next.js: このブログでも採用している実績のあるフレームワーク
- Tailwind CSS: 高速な開発と一貫したデザインシステム
- shadcn/ui: カスタマイズ可能なコンポーネントライブラリ
バックエンド・データ管理
const backendStack = {
runtime: 'Node.js / Bun',
database: 'SQLite / PostgreSQL',
rss: 'rss-parser',
storage: 'Local-first with optional cloud sync',
};
- SQLite: ローカルファーストアプローチに最適
- rss-parser: RSS/Atomフィードのパース
AI・機械学習
これが最も重要で、慎重に選定を進めている部分です。
オープンソースLLMの候補
-
Llama 3.2 / 3.3
- Metaが開発したオープンソースLLM
- 要約タスクに強い
- ローカル実行可能
-
Mistral
- 高速で軽量
- 商用利用可能
- コストパフォーマンスが良い
-
Gemma 2
- Googleのオープンモデル
- 日本語対応
- 要約品質が高い
ローカルLLMの実行環境
Comet ブラウザを使ったローカル実行を検討中:
メリット:
- プライバシー保護: データが外部に送信されない
- コスト削減: API料金が不要
- オフライン動作: インターネット接続不要
- カスタマイズ性: モデルのファインチューニングが可能
デメリット:
- ハードウェア要件: GPU必須(メモリ8GB以上推奨)
- 初期設定の複雑さ: セットアップに手間がかかる
- 処理速度: クラウドAPIより遅い可能性
ハイブリッドアプローチの検討
const aiStrategy = {
local: {
model: 'Llama 3.2 3B',
use: '日常的な要約タスク',
pros: 'プライバシー、コスト',
},
cloud: {
provider: 'OpenAI / Anthropic (オプション)',
use: '高品質が必要な場合のみ',
pros: '速度、品質',
},
};
Obsidian連携の可能性
Obsidianは「第二の脳」として人気のメモツールです。その最大の特徴は、情報同士を双方向リンクで結びつけられることです。
連携アイデア
-
要約のエクスポート
# [[2025-11-09]] の記事要約 ## [[Next.js]] 関連 - [[App Router のパフォーマンス最適化]] - [[Server Actions のベストプラクティス]] ## [[TypeScript]] 関連 - [[型安全な API クライアントの作り方]] -
ナレッジグラフの構築
- 記事のタグや関連トピックから自動でリンクを生成
- 技術トピック間の関連性を可視化
- 「この技術を学ぶなら、これらの記事を読むべき」といった学習パスの提案
-
デイリーノートとの統合
- Obsidianのデイリーノート機能と連携
- 毎日自動で「今日読むべき記事」セクションを生成
- 学習の記録として活用
技術的な実装
interface ObsidianExporter {
exportFormat: 'markdown';
linkStyle: 'wikilink' | 'markdown';
metadata: {
tags: string[];
date: string;
source: string;
};
}
Obsidianのvaultに直接書き込むことで、シームレスな連携が可能になります。
今後の展開
調査中のテーマ
現在、以下のテーマについて調査を進めています:
1. オープンソースAIの詳細調査
- モデルの比較評価: Llama 3.2、Mistral、Gemmaでの要約品質テスト
- プロンプトエンジニアリング: 最適な要約プロンプトの開発
- 量子化: モデルサイズを小さくして動作を軽くする手法
- ファインチューニング: 技術記事に特化したモデルの作成
2. ローカルLLMのセットアップ
- Comet ブラウザの検証: インストールと動作確認
- 代替ツール: Ollama、LM Studio、llamafileなどの比較
- パフォーマンス測定: 要約速度とメモリ使用量の測定
3. Obsidian連携の深掘り
- プラグイン開発: Obsidian用のカスタムプラグインの可能性
- API連携: Obsidianのローカルファイルへの自動書き込み
- データフロー: RSSリーダー → 要約 → Obsidian の自動化
新しいアイデア:日記サービス
開発を進める中で、新たなアイデアも生まれています。
コンセプト
「今日はどんな日だったか」を記録する日記サービス
- AIが質問を投げかけて、会話形式で日記を作成
- その日の出来事、感情、学びを自然に記録
- 週次・月次でまとめて振り返り
なぜこのアイデアが生まれたか
日々の学びや気づきを記録したいけど、白紙に向かって書くのはハードルが高い。でも、誰かに話すように書けたら続けられるかもしれない。
RSSリーダーで「今日読んだ記事」を記録し、日記サービスで「今日何を学んだか」を記録する。この二つが連携することで、より豊かな学習記録になると考えています。
技術的なアプローチ
interface DailyJournal {
date: string;
prompts: string[]; // AIが生成する質問
entries: {
question: string;
answer: string;
timestamp: Date;
}[];
summary: string; // 1日の振り返りをAIが要約
linkedArticles: string[]; // その日読んだ記事
}
次回のブレストで、以下を詰めていく予定:
- ユーザー体験の設計
- プライバシー保護の実装
- データの永続化方法
- モバイルアプリの必要性
技術選定の基準
今回のプロジェクトでは、以下の点を重視しています:
1. オープンソース第一主義
✓ コミュニティベースで透明性が高い
✓ ベンダーロックインを避けられる
✓ 学習リソースが豊富
✓ カスタマイズの自由度が高い
2. プライバシー保護
個人の情報収集データは機密性が高いため:
- ローカルファースト: データはユーザーのデバイスに保存
- オプトインのクラウド同期: 必要な人だけクラウドを利用
- データの暗号化: 保存時も通信時も暗号化
- トラッキングなし: アナリティクスも最小限
3. 拡張性と柔軟性
将来的な機能追加を見据えた設計:
// プラグインシステムのイメージ
interface Plugin {
name: string;
hooks: {
onArticleFetch?: (article: Article) => Article;
onSummaryGenerate?: (summary: string) => string;
onExport?: (data: ExportData) => void;
};
}
// ユーザーが自由にプラグインを追加できる
const plugins: Plugin[] = [
obsidianExporter,
notionExporter,
customFilter,
// ... more plugins
];
4. 開発者体験(DX)
自分自身が使いやすいツールを作る:
- 型安全: TypeScriptで堅牢に
- テスト可能: ユニットテスト・E2Eテストを完備
- ドキュメント: コードだけでなく、思想も記録
- シンプルなアーキテクチャ: 複雑さを避ける
開発ロードマップ
Phase 1: MVP(最小実行可能プロダクト)- 2週間
目標: 基本的なRSSリーダーとAI要約機能を実装
Week 1:
- [ ] プロジェクトのセットアップ(Next.js + TypeScript)
- [ ] RSS フィードの取得・パース機能
- [ ] シンプルなUI(記事一覧表示)
- [ ] SQLiteでのデータ保存
Week 2:
- [ ] ローカルLLMのセットアップ(Comet / Ollama)
- [ ] 記事要約機能の実装
- [ ] 要約結果の表示UI
- [ ] 基本的なエラーハンドリング
成功基準:
- 5つのRSSフィードから記事を取得できる
- 各記事を3-4行で要約できる
- 要約生成時間が記事あたり10秒以内
Phase 2: 実用化 - 1ヶ月
目標: 日常的に使えるツールにする
Week 3-4:
- [ ] フィード管理機能(追加・削除・編集)
- [ ] 記事のフィルタリング・検索
- [ ] お気に入り・既読管理
- [ ] パフォーマンス最適化
Week 5-6:
- [ ] Obsidianエクスポート機能
- [ ] 設定画面(テーマ、要約の長さなど)
- [ ] バッチ処理(定期的な自動取得)
- [ ] エラー処理の改善
成功基準:
- 毎朝15分で50件の記事をチェックできる
- Obsidianに自動でエクスポートできる
- 1週間の連続使用でバグがない
Phase 3: 高度な機能 - 2ヶ月
目標: AIの力を最大限に活用
Month 2:
- [ ] スマートフィルタリング(興味に基づく優先度付け)
- [ ] 記事の関連性分析
- [ ] トピックのクラスタリング
- [ ] カスタムプロンプトの設定
Month 3:
- [ ] 日記サービスの統合
- [ ] 週次・月次レポート
- [ ] ナレッジグラフの可視化
- [ ] プラグインシステムの構築
Phase 4: コミュニティ展開(未定)
- オープンソース化
- ドキュメント整備
- コントリビューションガイドの作成
- デモサイトの公開
期待される効果
このツールが完成すれば、以下のような変化が期待できます:
時間の節約
【現在】
- 情報収集: 1日2時間
- 読んだ記事: 10-15本
- 情報のキャッチアップ率: 20%程度
【導入後】
- 情報収集: 1日30分
- チェックした記事: 50-100本(要約ベース)
- 詳しく読む記事: 10-15本(厳選)
- 情報のキャッチアップ率: 80%以上
学習の質の向上
- 体系的な知識: Obsidian連携により、学んだことが整理される
- 復習が容易: 過去の要約を簡単に参照できる
- 関連性の発見: 異なる記事同士のつながりが見える
ストレスの軽減
- 未読ストレス: 未読が溜まらない(要約で十分な場合も多い)
- FOMO(取り残される不安): 重要な情報を見逃す心配が減る
- 情報疲れ: 必要な情報だけに集中できる
まとめ
このプロジェクトは始まったばかりですが、情報収集の効率化という実用的な課題に取り組むことができ、とてもワクワクしています。
特に注目しているポイント:
- オープンソースAIの可能性: 商用APIに頼らず、自分でコントロールできる
- ローカルファースト: プライバシーを保護しながら高機能を実現
- ツール連携: Obsidianとの連携で、学習効率を最大化
- 拡張性: 日記サービスなど、さまざまな方向に発展できる
技術的な挑戦
このプロジェクトでは、以下の技術を深く学ぶことができます:
- LLMの実践的な活用: プロンプトエンジニアリング、モデル選定、最適化
- ローカルファーストアーキテクチャ: オフライン対応、同期戦略
- データ処理: RSS解析、テキスト処理、データベース設計
- UX設計: 情報過多時代のUIとは?
今後の発信
開発の進捗や技術的な学びは、引き続きこのブログで共有していく予定です:
- ローカルLLMのセットアップ手順
- 要約プロンプトの試行錯誤
- Obsidian連携の実装方法
- パフォーマンスチューニングの知見
- AIを使った情報収集のベストプラクティス
Next Steps(2025/11/10 予定)
明日は以下のタスクに取り組む予定です:
- Comet ブラウザのインストール検証: ローカルLLMの実行環境を整える
- オープンソースAIの調査継続: Llama 3.2、Mistral、Gemmaの比較
- Obsidian連携の可能性調査: ファイルフォーマット、自動化の方法を検討
このプロジェクトを通じて、「情報に振り回されるのではなく、情報を味方につける」ツールを作りたいと思っています。
お楽しみに!
このプロジェクトに興味がある方、フィードバックがある方は、ぜひコメントやSNSでお知らせください。一緒により良いツールを作っていきましょう!