AI搭載のRSSリーダー・記事要約サービス開発をスタート

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の候補

  1. Llama 3.2 / 3.3

    • Metaが開発したオープンソースLLM
    • 要約タスクに強い
    • ローカル実行可能
  2. Mistral

    • 高速で軽量
    • 商用利用可能
    • コストパフォーマンスが良い
  3. 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は「第二の脳」として人気のメモツールです。その最大の特徴は、情報同士を双方向リンクで結びつけられることです。

連携アイデア

  1. 要約のエクスポート

    # [[2025-11-09]] の記事要約
    
    ## [[Next.js]] 関連
    - [[App Router のパフォーマンス最適化]]
    - [[Server Actions のベストプラクティス]]
    
    ## [[TypeScript]] 関連
    - [[型安全な API クライアントの作り方]]
    
  2. ナレッジグラフの構築

    • 記事のタグや関連トピックから自動でリンクを生成
    • 技術トピック間の関連性を可視化
    • 「この技術を学ぶなら、これらの記事を読むべき」といった学習パスの提案
  3. デイリーノートとの統合

    • 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(取り残される不安): 重要な情報を見逃す心配が減る
  • 情報疲れ: 必要な情報だけに集中できる

まとめ

このプロジェクトは始まったばかりですが、情報収集の効率化という実用的な課題に取り組むことができ、とてもワクワクしています。

特に注目しているポイント:

  1. オープンソースAIの可能性: 商用APIに頼らず、自分でコントロールできる
  2. ローカルファースト: プライバシーを保護しながら高機能を実現
  3. ツール連携: Obsidianとの連携で、学習効率を最大化
  4. 拡張性: 日記サービスなど、さまざまな方向に発展できる

技術的な挑戦

このプロジェクトでは、以下の技術を深く学ぶことができます:

  • LLMの実践的な活用: プロンプトエンジニアリング、モデル選定、最適化
  • ローカルファーストアーキテクチャ: オフライン対応、同期戦略
  • データ処理: RSS解析、テキスト処理、データベース設計
  • UX設計: 情報過多時代のUIとは?

今後の発信

開発の進捗や技術的な学びは、引き続きこのブログで共有していく予定です:

  • ローカルLLMのセットアップ手順
  • 要約プロンプトの試行錯誤
  • Obsidian連携の実装方法
  • パフォーマンスチューニングの知見
  • AIを使った情報収集のベストプラクティス

Next Steps(2025/11/10 予定)

明日は以下のタスクに取り組む予定です:

  • Comet ブラウザのインストール検証: ローカルLLMの実行環境を整える
  • オープンソースAIの調査継続: Llama 3.2、Mistral、Gemmaの比較
  • Obsidian連携の可能性調査: ファイルフォーマット、自動化の方法を検討

このプロジェクトを通じて、「情報に振り回されるのではなく、情報を味方につける」ツールを作りたいと思っています。

お楽しみに!


このプロジェクトに興味がある方、フィードバックがある方は、ぜひコメントやSNSでお知らせください。一緒により良いツールを作っていきましょう!