- Reddit、Voat、Ruqqus などのプラットフォームのデータを PostgreSQLベースのHTMLアーカイブ に変換するオープンソースツール
- 2.38億件の Reddit 投稿(4万超のサブレディットを含む)をローカルで処理し、モバイルフレンドリーなデザイン と JavaScript不要のインターフェース を提供
- Reddit API へのアクセスが事実上停止し、サードパーティアプリとデータアクセスが遮断 される状況の中で、既存の Pushshift データセットを活用し、完全な Reddit アーカイブを個人所有 に移行しようとする試み
- JavaScript・外部リクエスト・トラッキングなしの静的HTML として動作し、オフライン、エアギャップ環境、USB、Raspberry Pi、LANサーバーなど多様な形で運用可能
- PostgreSQL 全文検索(FTS) と 30以上の REST API、AI ツール連携用の MCP サーバー(29ツール) を提供し、大規模分析とクエリを支援
Reddit データアクセス環境の変化
- Reddit API はアーカイブ用途では事実上利用不可能な状態に移行
- サードパーティアプリのエコシステム崩壊と Pushshift データセットへのアクセス遮断の脅威が繰り返されている
- Pushshift データセット は Reddit の公開投稿・コメントを長期間収集して蓄積した大規模アーカイブで、数十億件のテキスト記録を含む
- Reddit 公式 API を通じて収集された 過去時点のスナップショットデータ であり、現在の Reddit サーバーや API にアクセスせずとも活用可能
- API ポリシー変更とデータアクセス制限以降、Reddit の歴史保存と大規模分析のための事実上最後の公開データ資源 として活用されている
- Pushshift により、過去の Reddit 全記録がすでにトレント形式で公開されている
Redd-Archiver プロジェクト概要
- Redd-Archiver v1.0 は Reddit、Voat、Ruqqus の公開データダンプを変換し、閲覧可能な HTML アーカイブ を生成
- PostgreSQL バックエンド を用いて大規模データセットを一定メモリ(4GB)で処理し、GIN インデックスベースの FTS により高速検索を提供
- HTML 出力物 はオフラインでも並べ替え、ページネーション、コメントツリーの閲覧が可能
Redd-Archiver アーカイブツールの中核構造
- Reddit(
.zst)、Voat(SQL)、Ruqqus(.7z)ダンプを入力として使用
- マルチプラットフォーム統合: 3つのプラットフォームを単一アーカイブに統合。プラットフォーム自動検出と統合検索をサポート
- CLI フラグと URL プレフィックスにより
/r/、/v/、/g/ のパス体系を提供
- 静的 HTML ファイル生成方式によりサーバー依存を排除
- index.html を開くだけで閲覧可能で、外部ネットワークは不要
- モバイルファーストのレスポンシブレイアウトとタッチフレンドリーなナビゲーション
- スコア、コメント、日付順のソート用インデックスとページネーションを提供
- JavaScript なしの CSS ベースインタラクション
- PostgreSQL FTS 構成により プラットフォーム横断の全文検索 をサポート
- キーワード、投稿者、日付、スコアなどでフィルタリング
- 投稿・コメント・ユーザー・サブレディット・集計クエリを含む REST API を提供
- AI ツールから直接アーカイブを問い合わせ できる MCP サーバー を同梱
- Claude Desktop または Claude Code から投稿・コメント・ユーザー・検索クエリが可能
- 1インスタンスあたり数千万件の投稿を処理可能
- PostgreSQL 構造により、データサイズに関係なくメモリ使用量は一定
- 全 2.38B 投稿については、トピック別の複数インスタンスに分散して運用することを推奨
- Python・PostgreSQL・Jinja2・Docker ベースで実装(Claude Code を全般的な開発補助として活用)
デプロイおよび運用シナリオ
- USB ドライブまたはローカルフォルダベースでオフライン閲覧をサポート
- ローカル / ホームラボ: 単一コマンドで HTTP または Tor 環境で実行
- 本番 HTTPS: Let’s Encrypt 証明書を自動設定(約5分)
- Tor 隠しサービス: ポートフォワーディングなしで
.onion アドレスからアクセス可能
- 静的ホスティング: GitHub Pages または Codeberg Pages にアップロード可能(検索機能を除く)
- Docker ベースのデプロイ: PostgreSQL を含む完全自動化構成
- オフライン閲覧、ローカル検索サーバー、Tor / HTTPS 同時モードをサポート
公開情報
1件のコメント
Hacker News のコメント
アーカイブをセルフホストできる素晴らしい方法だと思う
個人的には、削除されたコメントやボットに上書きされたコメントを原文に自動復元してくれるプラグインがあればいいのにと思う
最近 Reddit を使いづらい理由は、昔のリンクの半分が抗議目的の上書きのせいで無意味なコメントに変わってしまっているからだ
皮肉なことに原文は AI 学習用アーカイブには残っているのに、肝心のユーザーは 2 年前のプリンタードライバーの解決法のようなものを見つけられなくなっている
サイトの有用性を下げること自体が彼らの目的であり、ユーザーを離れさせることが抗議の核心だった
わざわざアーカイブを掘り返してその決定を無効化しようとは思わない。そのまま次に進む
データは torrent 経由で受け取れる
リンク: redd-archiver リポジトリ
どのコミュニティを優先して保存するか判断するのに役立つ
本当に素晴らしいプロジェクトだ
PushShift のほかにも別のアーカイブがある。たとえば Arctic Shift や PullPush のように、互いに異なるデータセットを提供している
削除リクエストの適用範囲によって、含まれる投稿やコメントが異なる場合がある
このデータを基に分散型ソーシャルメディアを新たにシード(seed)できないだろうかと思う
ちょうどプロジェクトを fork するような感じで
API もこれをサポートしているので、分散型でアーカイブを共同ホスティングできる
とても興味深いプロジェクトだ
気になるのは、Pushshift のデータセットが定期的に更新されるのか、それとも特定時点のスナップショットなのかという点だ
セルフホストする場合、新しいデータを定期的に再取得する必要があるのか知りたい
watchful1 がデータを分割・再処理しており、今後はArctic Shift ダンプを取り込んで月次更新に対応する予定だ
関連リンク:
自分も似たようなプロジェクトを進めていて、Pushshift Reddit データをHugging Face Datasetsにアップロードした
torrent のシードが弱いときは huggingface.co/datasets/nick007x/pushshift-reddit から個別ファイルを直接取得できる
月次データや特定の subreddit だけを試したい人には便利だ
Docker Compose でローカル環境を立ち上げようとしたが失敗した
.env.exampleファイルがなく、手動で環境変数を設定してもボリュームパスの問題が起きるもう少し整える必要がありそうだ
mkdir手順も更新した関連コミット: 0bb1039, c3754ea
もしかすると、終了したApollo アプリと連携して、過去のある時点の Reddit を復元できるのではないかと気になる
Reddit 全体を自分の PC に保存したいわけではない
特定の subreddit だけ選べるとよい
watchful1 が subreddit ごとにデータを分割しているので、欲しい部分だけダウンロードできる
2〜3 年前に非公開に切り替えられた subredditがデータダンプに含まれているか確認する方法があるのか気になる
status フィールドで非公開かどうか確認でき、詳細情報も多い