MCPcopy Index your code
hub / github.com/Pls-1q43/Dibao

github.com/Pls-1q43/Dibao @v0.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.0 ↗ · + Follow
2,675 symbols 7,115 edges 147 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Dibao logo

邸报 Dibao

セルフホストできる、source-available / fair-code の個人向け RSS 推薦リーダー。

中文 · 日本語 · English

GitHub repository Docker Compose Release notes


日本語

Dibao は、セルフホスト RSS リーダー、AI RSS reader、個人向けニュースリーダー、OPML リーダー、ローカル優先の推薦システム、PWA 読書アプリです。購読する RSS / Atom フィードはあなたが選びます。Dibao は、そのフィードの内側だけで記事を並べ替え、重複を減らし、検索し、推薦理由を説明します。

新しいコンテンツプラットフォームを作るものではありません。SNS のように知らない情報源を流し込むものでもありません。自分で選んだ RSS を、毎日読みやすい形に整えるためのツールです。

クイックリンク:

Dibao が解決すること

時間順の RSS は正直ですが、未読が増えると壁のようになります。プラットフォーム型の推薦は便利ですが、読書履歴と発見ロジックを外部サービスに渡すことになります。Dibao はその中間を選びます。

  • 購読元はあなたのもの:明示的に追加した RSS / Atom だけを扱います。
  • 読む順番を整える:最新記事の山から、先に読む価値の高いものを上に出します。
  • 理由を説明する:トピック、ソース、鮮度、最近の読書フィードバックなど、推薦理由を確認できます。
  • データは手元に残る:SQLite データベースはローカル、NAS、自宅サーバー、VPS の永続化フォルダに保存されます。
  • 失敗を見える化する:フィード更新失敗、provider 不通、索引作成の状態を画面で確認できます。

できること

ニーズ Dibao の機能
未読が多すぎる Recommended で今日読む記事を優先表示し、Latest で従来の時間順も残します。
RSS を持ち運びたい OPML のインポート / エクスポートに対応します。
推薦理由を知りたい 記事ごとに、トピック、ソース、鮮度、フィードバックなどの理由を表示します。
プラットフォームに閉じ込められたくない Docker でセルフホストし、SQLite をローカルに保存します。
低コストで AI を使いたい SiliconFlow、Gemini、Ollama、OpenAI-compatible embedding provider に対応します。
スマートフォンで読みたい PWA としてホーム画面に追加できます。

現在は、複数ユーザーのチーム利用、公式ホスティング、クラウド同期、SNS フォロー、コメント、購読外コンテンツの推薦、全文記事のオフライン保存は提供していません。

Dibao を支援する

Dibao が役に立った場合は、Stripe から開発を支援できます。

Stripe で Dibao を支援する

クイックインストール

Docker Compose での実行を推奨します。次の内容で compose.yaml を作成します。

name: dibao

services:
  dibao:
    image: ghcr.io/pls-1q43/dibao:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      DIBAO_HOST: 0.0.0.0
      DIBAO_PORT: "8080"
      DIBAO_DATABASE_PATH: /data/dibao.sqlite
      DIBAO_COOKIE_SECURE: "false"
    volumes:
      - ./data:/data

起動します。

docker compose up -d

http://localhost:8080 を開き、所有者アカウントのユーザー名とパスワードを作成します。その後、OPML をインポートするか、最初の RSS / Atom フィードを追加します。

現在のリポジトリからビルドする場合:

git clone https://github.com/Pls-1q43/Dibao.git
cd dibao
docker compose up --build -d

推奨 Provider

Dibao は AI provider なしでも使えます。Provider を設定すると、embedding によって推薦がより個人の読書傾向に近づきます。まずは Dibao をどこで動かすかで選びます。

実行環境 推奨
ローカルの MacBook、Mac mini、Windows デスクトップ / ノート PC まずはローカル Ollama。読書データを外に出さず、API コストもかかりません。推奨モデルは bge-m3、dimension は 1024
家庭用 NAS または低消費電力ミニ PC CPU やメモリに余裕がなければ、SiliconFlow または Gemini を優先します。
4 vCPU / 8GB RAM 以上の VPS Ollama CPU でもバックグラウンド embedding は可能です。bge-m3 を使い、初回索引には時間がかかる前提で運用します。
4 vCPU / 8GB RAM 未満の VPS SiliconFlow または Gemini を推奨します。小さな VPS で embedding backfill に CPU / RAM を使い切らないためです。

ローカル Ollama の推奨設定:

ollama pull bge-m3
フィールド
Type Ollama
Base URL Docker Desktop で Dibao を動かし、Ollama をホスト側で動かす場合は http://host.docker.internal:11434。同じマシンで Docker なしに直接動かす場合は http://127.0.0.1:11434
Model bge-m3
Dimension 1024

bge-m3 は、中国語、日本語、英語を含む多言語 RSS に向いており、Ollama から直接利用できます。より軽く速いローカル構成が必要な場合は、nomic-embed-text と dimension 768 を検討できます。

外部の無料 / 低コスト provider:

Provider 設定
SiliconFlow 推奨モデルは BAAI/bge-m3。無料で日次上限はなく、RPM / TPM のレート制限で運用されます。現在の L0 制限は 2,000 RPM、500,000 TPM です。

Type: OpenAI-compatible

Base URL: https://api.siliconflow.cn/v1

Model: BAAI/bge-m3

Dimension: 1024 | | Gemini | Gemini embedding も無料枠があり、個人用の小さな RSS 環境に向いています。1 日あたりおよそ 1,000 リクエストを目安に計画してください。

Type: OpenAI-compatible

Base URL: https://generativelanguage.googleapis.com/v1beta/openai/

Model: gemini-embedding-001

Dimension: 768 |

無料枠、価格、レート制限、利用可能地域は変更されることがあります。大量に使う前に、Ollama bge-m3、現在の SiliconFlow embeddings docsGemini API pricing を確認してください。

モデルや dimension を変更した場合、embedding は再生成が必要です。Dibao は読書データを保持しますが、異なるモデルのベクトルはそのまま混在できません。Provider が利用できない場合でも RSS リーダーとしては使えますが、推薦は基本的な並び順に戻ります。

日常的な使い方

  1. OPML をインポートするか、RSS / Atom URL を追加します。
  2. Recommended で優先して読む記事を確認し、Latest で従来の時間順も使います。
  3. 保存、あとで読む、既読、興味なしを使って、次回以降の並び順を調整します。
  4. 未読が溜まったら、すべて、24 時間前、7 日前、30 日前などの範囲で整理します。
  5. フィード管理で失敗したフィードを確認し、再試行、グループ調整、OPML エクスポートを行います。

未読整理は読書操作であり、好みの正のフィードバックとしては扱われません。保存とあとで読むの記事も整理対象から外れます。

PWA インストール

  • Android Chrome / Edge:ブラウザメニューから「アプリをインストール」または「ホーム画面に追加」。
  • iOS Safari:共有メニューから「ホーム画面に追加」。
  • Desktop Chrome / Edge:アドレスバーのインストールボタン、またはブラウザメニューからインストール。

localhost / 127.0.0.1 では通常そのままインストールできます。LAN IP や公開ドメインで使う場合は HTTPS を推奨します。HTTPS リバースプロキシの後ろで動かす場合は、DIBAO_COOKIE_SECUREtrue に設定してください。

バックアップとアップグレード

デフォルトでは、Dibao のデータは compose.yaml と同じ場所の永続化フォルダに保存されます。

./data:/data
./data/dibao.sqlite

アップグレード前にバックアップすることを推奨します。

docker compose stop
tar czf dibao-data-backup.tgz -C data .
docker compose up -d

リリースイメージをアップグレードする場合は、compose.yaml の image tag を変更してから実行します。

docker compose pull
docker compose up -d
docker compose ps

データベース migration は起動時に自動実行されます。アップグレード後は http://localhost:8080/api/system/health を開き、ok: true が返ることを確認してください。

ライセンス

Dibao は Business Source License 1.1BUSL-1.1)のもとで提供される source-available / fair-code / delayed open source プロジェクトです。BUSL-1.1 は Change Date の前は OSI 承認のオープンソースライセンスではありません。各公開リリースは、初回公開から 4 年後の Change Date に Apache License 2.0Apache-2.0)へ自動的に切り替わります。

個人、家庭、非商用、研究、評価、学習、会社や組織の内部セルフホスト用途では、Dibao を無料で使用、変更、セルフホスト、本番利用できます。有償のデプロイ、コンサルティング、トレーニング、移行、運用支援も、顧客自身の環境、アカウント、または管理下のインフラに Dibao インスタンスを提供する形であれば許可されます。

有料ホスティング、SaaS、Managed Service、Cloud Service、ホワイトラベル、再販売、競合する商用製品、または Dibao / 改変版 Dibao を中核機能とする商用 RSS リーダー、情報フィード推薦サービス、AI 読書 / 要約サービス、コンテンツ集約サービス、ナレッジフロー製品には、別途商用ライセンスが必要です。商用ライセンスについては https://dibao.app を参照してください。正確な Release Date と Change Date は、対応する release tag に固定された LICENSE.md が基準です。

FAQ

AI provider なしで使えますか?

はい。RSS の読書、OPML、検索、保存、あとで読む、フィード管理、基本的な並び替えは使えます。Provider は推薦をより賢くするための追加機能です。

Dibao は購読していないコンテンツを推薦しますか?

いいえ。推薦は、あなたが明示的に追加した RSS / Atom フィードの内側だけで行われます。

データはどこに保存されますか?

ローカルの ./data フォルダを /data にマウントし、その中の SQLite データベースに保存されます。

スマートフォンにインストールできますか?

はい。Safari、Chrome、Edge から PWA としてインストールできます。localhost 以外で使う場合は HTTPS を推奨します。

Provider のテストに失敗したら?

Base URL、モデル名、dimension、API Key が一致しているか確認してください。SiliconFlow では BAAI/bge-m3 と dimension 1024、Gemini では gemini-embedding-001 と dimension 768 から始めるのが無難です。

LAN 内の HTTP でログイン状態が維持されません。

DIBAO_COOKIE_SECURE=false を確認してください。HTTPS リバースプロキシの後ろで動かす場合だけ true を推奨します。

フィード更新に失敗したら?

フィード管理でエラー理由を確認してください。よくある原因は、フィード URL の失効、対象サイトによるアクセス拒否、XML 形式の問題、ネットワークタイムアウトです。

メンテナー / 開発者向け情報

主な環境変数:

変数 デフォルト 説明
DIBAO_HOST 0.0.0.0 Server の listen address。
DIBAO_PORT 8080 Server の listen port。
DIBAO_DATABASE_PATH /data/dibao.sqlite SQLite database path。
DIBAO_COOKIE_SECURE false HTTP / LAN のセルフホストでは false のまま利用できます。HTTPS リバースプロキシの後ろでは true を推奨します。
DIBAO_BACKGROUND_JOBS true false にすると background job runner を停止します。主にテスト用途です。
DIBAO_FETCH_TIMEOUT_MS 15000 RSS、discover、full-content fetch の単一リクエスト timeout。
DIBAO_FETCH_FEED_MAX_BYTES 5242880 RSS / discover response の最大読み取りバイト数。
DIBAO_FETCH_FULL_CONTENT_MAX_BYTES 3145728 full-content fetch response の最大読み取りバイト数。

開発コマンド:

npm install
npm run build
npm run test

より詳しい製品説明とリリース情報は、中文主页English README も参照してください。

Extension points exported contracts — how you extend this code

EmbeddingProviderAdapter (Interface)
(no doc) [6 implementers]
apps/server/src/embedding/types.ts
AppSettingsRepository (Interface)
(no doc) [4 implementers]
packages/db/src/repositories/app-settings.ts
ArticleRankingRecalculator (Interface)
(no doc) [2 implementers]
apps/server/src/ranking-service.ts
ArticleFtsIndex (Interface)
(no doc) [2 implementers]
packages/db/src/fts/article-fts.ts
VectorStore (Interface)
(no doc) [2 implementers]
packages/db/src/vector/sqlite-vec-vector-store.ts
ArticleActionRepository (Interface)
(no doc) [2 implementers]
packages/db/src/repositories/article-actions.ts
EmbeddingRepository (Interface)
(no doc) [2 implementers]
packages/db/src/repositories/embeddings.ts

Core symbols most depended-on inside this repo

run
called by 265
apps/server/src/background-write-coordinator.ts
upsert
called by 117
packages/db/src/fts/article-fts.ts
clamp
called by 83
packages/ranking/src/index.ts
findById
called by 62
packages/db/src/repositories/jobs.ts
userMessageForError
called by 62
apps/web/src/api.ts
openDatabase
called by 60
packages/db/src/connection.ts
add
called by 60
apps/server/src/ranking-service.ts
record
called by 59
packages/db/src/repositories/article-actions.ts

Shape

Function 1,668
Method 818
Class 172
Interface 17

Languages

TypeScript100%

Modules by API surface

apps/server/src/app.ts164 symbols
apps/server/src/plugin-service.ts155 symbols
apps/web/src/AppRuntime.tsx106 symbols
apps/web/src/api.ts93 symbols
apps/web/src/app/shared.ts87 symbols
packages/db/src/repositories/articles.ts77 symbols
apps/server/src/ranking-service.ts77 symbols
packages/db/src/repositories/plugins.ts73 symbols
apps/server/src/recommendation-maintenance-service.ts66 symbols
apps/web/src/reader/ReaderPanels.tsx65 symbols
apps/server/src/interest-cluster-label-service.ts64 symbols
apps/server/src/embedding-provider-service.ts53 symbols

For agents

$ claude mcp add Dibao \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact