HNタイムカプセル — 10年越しのHacker NewsをLLMで振り返る
概要
HN Time Capsuleは、Hacker Newsの「ちょうど10年前」のフロントページを自動で取得して当時の投稿・議論を収集し、LLMを使ってそれらの「予見性(prescience)」や議論の正否を後知恵で評価するプロジェクトです。フロントページの取得、記事本文やコメントのスクレイピング、LLMへのプロンプト作成と投げ込み、結果の集約およびHTMLレポートの生成までをパイプライン化。研究やブログネタ、歴史的な振り返りに使える「自動化された振り返りツール」として設計されています。
リポジトリの統計情報
- スター数: 43
- フォーク数: 3
- ウォッチャー数: 43
- コミット数: 16
- ファイル数: 7
- メインの言語: Python
主な特徴
- Hacker Newsの「10年前」フロントページを自動取得して記事+議論を収集する。
- LLMを用いて各投稿・コメントの「後知恵評価」を行い、定量(スコア)と定性(解説)を生成。
- 最終結果を見やすいHTMLレポートとして出力し、振り返りをそのまま公開可能。
- シンプルなパイプライン(pipeline.py)で流れを再現しやすく、拡張が容易。
技術的なポイント
このプロジェクトは機能が絞られており、その分「何をどのようにやるか」が明快です。主な技術的ポイントを整理します。
- データ取得(スクレイピングのシンプルさ)
- Hacker Newsは日付指定でフロントページを取得できるURLパラメータ(例: front?day=YYYY-MM-DD)が使えるため、指定日付のフロントページURLを組み立てて取得するだけで該当エントリ一覧が手に入ります。pipeline.pyはこの仕組みを利用して「ちょうど10年前」の日付を算出し、当該ページをフェッチします。
- 個別投稿(記事リンク)やコメントページへの遷移はHTTP GET+HTMLパース(一般にはrequestsとBeautifulSoup等)で行い、タイトル、本文、トップレベルコメントなど必要なテキストを抽出します。
- LLMへの入力設計(プロンプトエンジニアリング)
- 取得した記事本文、メタ情報(日時、スコア)、及び重要なコメントをまとめてLLMに渡し、「その投稿が10年後の視点でどれだけ正しかったか」「どの点が有用だったか」を尋ねるプロンプトを作成します。
- プロンプトは定量評価(例: prescience score 0-10)と定性的要約(短い解説、キーとなる引用)を返すよう指示しておくと後処理が楽になります。モデルにはAPIキーを用いて呼び出す想定(READMEでは「LLMを使う」と明記)で、応答をパースしてスコアや文章を抽出します。
- パイプライン設計と再現性
- pipeline.pyがパイプラインのオーケストレーションを担い、フェッチ → パース → プロンプト生成 → LLM呼び出し → 結果整形 → HTML出力、という流れを一貫して処理します。処理途中のJSONキャッシュを残すと再実行時のコストを抑えられます。
- エラーハンドリング(タイムアウト、HTTPエラー、LLMの失敗)は実運用で重要です。リトライやバックオフ、部分的なスキップ戦略があると堅牢になります。
- レポート生成
- 最終出力は静的HTMLで、記事ごとのスコア・LLMによる解説・重要コメントの抜粋等を並べたページになります。テンプレートエンジン(Jinja2等)を使えば見た目の調整が容易です。ローカルで開いて手軽に共有できる点が利点です。
- 拡張性と改善点
- モデルの選択肢(OpenAI系、他社LLM、ローカルモデル)や評価指標の追加(precision/recall的な評価は難しいが、時間軸別評価など)で研究的に拡張可能です。
- Embeddingsやクラスタリングを導入して同テーマの投稿をまとめたり、トピックの変化を可視化することも有効です。
- スケーラビリティ:フロントページだけでなく過去複数日分をまとめて処理したい場合は並列化・キュー化やAPIコールのスロットリングが必要です。
- 倫理・運用面
- LLMでの「後知恵評価」は主観が入るため、結果は参考情報として扱うべきであり、モデル出力の誤情報や偏りへの注意が必要です。公開時には「自動生成された評価であり検証が必要」という注記が望ましいです。
- スクレイピングする際のサイト利用規約と負荷管理(リクエスト頻度、robots.txt遵守)は守る必要があります。
総じて、このリポジトリは「小さくても実用的なパイプライン例」として価値が高く、LLMの活用例、プロンプト設計、スクレイピング→解析→可視化の流れを学ぶ教材的役割も果たします。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- .python-version: file
- README.md: file
- hnhero.png: file
- pipeline.py: file
…他 2 ファイル
pipeline.pyが実質的な処理の中核を担っており、READMEには動かすための手順やブログ記事へのリンクも記載されています。必要に応じてAPIキーや環境変数を設定してから実行する想定です。
まとめ
シンプルで再現性の高い「過去振り返り+LLM評価」パイプライン。学習・実験用途に最適。
リポジトリ情報:
- 名前: hn-time-capsule
- 説明: Analyzing Hacker News discussions from a decade ago in hindsight with LLMs
- スター数: 43
- 言語: Python
- URL: https://github.com/karpathy/hn-time-capsule
- オーナー: karpathy
- アバター: https://avatars.githubusercontent.com/u/241138?v=4
READMEの抜粋:
HN Time Capsule
hero
A Hacker News time capsule project that pulls the HN frontpage from exactly 10 years ago, analyzes articles and discussions using an LLM to evaluate prescience with the benefit of hindsight, and generates an HTML report. Also see my short blog post about this repo for more context.
What it does
- Fetches the HN frontpage from 10 years ago (e.g.,
https://news.ycombinator.com/front?day=2015-12-09) - Fo…