Karpathys HackerTube nachbauen mit Claude Code oder Codex: Videos aus Hacker-News-Kommentaren für eine eigene Videoseite ohne Algorithmus (getestet)

Karpathy hat HackerTube in etwa zwei Stunden mit Claude Code und Opus 5.5 gebaut und dabei 6.454 YouTube-Videos ausgewählt, die sich Hacker-News-Kommentatoren seit 20 Jahren gegenseitig empfehlen. Mit unserem API Key haben Claude Code und Codex je eine Mini-Version gebaut: zwei Monate Kommentare über die offizielle HN-Algolia-API abrufen, YouTube-Links extrahieren, deduplizieren, zählen und eine statische Seite erzeugen. Mit vollständigem Prompt, gemessenen Laufzeiten, Vergleich beider Clients und den Schritten bis zu HackerTube.

10 分钟阅读
Karpathys HackerTube nachbauen mit Claude Code oder Codex: Videos aus Hacker-News-Kommentaren für eine eigene Videoseite ohne Algorithmus (getestet)

Kurz gesagt: Die Idee hinter HackerTube ist einfach. Jeden YouTube-Link finden, der je in einem Hacker-News-Kommentar gepostet wurde, nur die Videos behalten, die viele verschiedene Leute über viele verschiedene Monate empfohlen haben, und daraus eine Videoseite ohne Login und ohne Empfehlungsalgorithmus machen. Mit Claude Code oder Codex reicht ein einziger Prompt für eine funktionierende Mini-Version.

  • Laut Karpathys Originalbeitrag (1. November, UTC) war er mit den YouTube-Empfehlungen unzufrieden und ließ Claude rund 43 Millionen Kommentare aus 20 Jahren HN auf 6.454 immer wieder empfohlene Videos filtern. Das dauerte etwa zwei Stunden mit der Claude-Code-Desktop-App und Opus 5.5 auf Medium-Effort. Selbst erledigt hat er nur drei Dinge: einen Google-Cloud-Schlüssel für YouTube-Metadaten anlegen, einen VPS starten und die Domain kaufen. Am Nachmittag des 2. November (UTC+8) hatte der Beitrag rund 3,3 Millionen Aufrufe, 39.700 Likes und 34.000 Lesezeichen.
  • Mit unserem API Key haben Claude Code und Codex je eine Mini-Version auf Basis der offiziellen HN-Algolia-API für September und Oktober 2026 gebaut. Beide waren in etwa 9 Minuten fertig, fanden rund 3.600 Kommentare mit YouTube-Links und über 3.500 verschiedene Videos, behielten 193 Videos, die mindestens 2 verschiedene Personen verlinkt hatten, und hatten dieselben Top 3.
  • Der Unterschied zu HackerTube: zu beurteilen, ob ein Kommentar das Video wirklich empfiehlt. Wer nur nach Linkanzahl sortiert, bekommt Nachrichtenvideos der Woche nach oben: Alle 12 Erwähnungen von Platz 3 stammen aus einem einzigen Thread. Den Prompt für diesen fehlenden Schritt findest du gegen Ende.

API Key erstellen und dein eigenes HackerTube in Claude Code, Codex oder Cursor bauen →

Was HackerTube ist und wie Karpathy es gebaut hat

HackerTube beschreibt sich als „die YouTube-Videos, die sich Hacker News ständig gegenseitig empfiehlt“. Laut der About-Seite listet die Seite derzeit 6.454 Videos, basierend auf 39.834 HN-Kommentaren, die sie erwähnen, sortiert in 150 Themen und 16 Bereiche, von 2007 bis 2026. Likes, Verlauf und „Später ansehen“ liegen nur in deinem Browser, es gibt keine Konten, und das Vorschaubild ist ein Frame aus der Mitte des Videos statt des optimierten Covers.

Laut dem Abschnitt „How it was built“ der About-Seite läuft es in fünf Schritten:

SchrittWas HackerTube macht
1. Alle Kommentare lesenEin öffentliches Komplettarchiv von HN (den Datensatz open-index/hacker-news) nach YouTube-Links durchsuchen; das ergibt weit über hunderttausend Videos
2. Wiederholte Empfehlungen behaltenMindestens 3 verschiedene Personen mit echtem Kommentar, in mindestens 3 verschiedenen Monaten; übrig bleiben rund 7.000 Videos
3. Jeden Kommentar von einem Modell lesen lassenClaude liest den Kommentar mit dem Thread-Titel und entscheidet, ob er empfiehlt, zitiert, scherzt oder kritisiert, und wählt ein Zitat und Themen
4. Eine Karte pro Video schreibenAus den YouTube-Angaben und allem, was HN dazu gesagt hat: Zusammenfassung, warum HN es mag, Art und ob es gut gealtert ist
5. SortierenNach der Zahl der verschiedenen Monate mit Empfehlungen; über Jahre wiederholt verlinkt zählt mehr als ein viraler Ausschlag

Die About-Seite nennt außerdem: Seite, Datenpipeline, Suche und Empfehlungen hat Claude Opus 5.5 in Claude Code gebaut; Kommentar-Labels und Videokarten schrieben Claude-Sonnet-5.5-Agenten, die Opus koordinierte. Die Daten sind veröffentlicht: Auf der Data-Seite gibt es ein Zip von etwa 17,8 MB mit videos.jsonl, mentions.jsonl, der Themenliste, Embeddings und einer für Agenten geschriebenen DATA.md, unter ODC-By 1.0. Karpathys Vorschlag im Beitrag: Gib das deinem Claude und lass dir deine eigene Version bauen.

Laut den Trend-Zusammenfassungen auf X (eins, zwei) gibt es schon Ableger wie Hacker Papers für arXiv und Listen für Bücher und Blogs.

Was die Mini-Version macht

20 Jahre Daten nachzubauen heißt, das komplette HN-Archiv herunterzuladen, für einen ersten Versuch zu viel. Wir haben den Zeitraum auf zwei Monate begrenzt und nur die offizielle Algolia-Such-API von HN genutzt, die keinen Schlüssel braucht:

SchrittVorgehenErgebnis
1. Kommentare abrufenAlgolia search_by_date, tags=comment, in Zeitfenster aufgeteiltdata/comments.jsonl
2. Links extrahieren11-stellige Video-IDs aus dem Kommentartext ziehen, inklusive watch?v=, youtu.be/, /shorts/ und weiterer FormenVideos pro Kommentar
3. Deduplizieren und zählenErwähnungen, verschiedene Personen und verschiedene Monate pro VideoRangliste
4. Titel ergänzenYouTube oEmbed, ohne Schlüsseldata/videos.json
5. Seite erzeugenEine statische HTML-Datei mit Kartenraster und clientseitiger Suchesite/index.html

Schritt 1: API Key erstellen und Claude Code oder Codex verbinden

  1. Bei aicodewith.ai registrieren, anmelden, die Schlüsselverwaltung öffnen, einen Key erstellen und den vollständigen String kopieren.
  2. Claude Code: Adresse und Key setzen, einen leeren Ordner anlegen und dort starten:
bash
export ANTHROPIC_BASE_URL="https://api.aicodewith.ai"
export ANTHROPIC_AUTH_TOKEN="IHR_API_KEY"
mkdir -p ~/hackertube-mini && cd ~/hackertube-mini
claude --model claude-opus-5-5

Wie du die Einstellungen dauerhaft speicherst oder unter Windows setzt, steht in Claude Code mit einer Drittanbieter-API verbinden. Karpathy nutzte Opus 5.5 auf Medium-Effort; zur Wahl der Stufe siehe Effort-Stufen von Claude Opus 5.5, zum Modellvergleich Welches Modell in Claude Code.

  1. Codex: Trage Folgendes in ~/.codex/config.toml ein, der Key steht direkt in experimental_bearer_token:
toml
# ~/.codex/config.toml
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"
model_provider = "aicodewith"

[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "IHR_API_KEY"

Alle Felder erklärt Die config.toml von Codex. Wenn du neu bei Codex bist, beginne mit Wie man Codex benutzt und Codex installieren.

Schritt 2: Die HN-Algolia-API zuerst selbst ansehen

Schick vorab eine Anfrage ab, damit du weißt, wie die Daten aussehen. Diese fragt nach Kommentaren vom 2026-09-01, die youtu enthalten (das trifft youtube.com und youtu.be):

bash
# comments posted on 2026-09-01 (UTC) that contain "youtu"
curl "https://hn.algolia.com/api/v1/search_by_date?query=youtu&tags=comment&hitsPerPage=1000&numericFilters=created_at_i>=1788220800,created_at_i<1788307200"

In unserem Test hatte HN an diesem Tag 10.830 Kommentare, 197 davon enthielten youtu. Zwei Grenzen sind wichtig:

  • Jede Anfrage liefert höchstens 1000 Treffer. Über zwei Monate passt allein youtube.com auf mehr als 4.000 Kommentare, der Rest wird abgeschnitten. Der Zeitraum muss also in kleine Fenster geteilt werden.
  • Die Suche nach youtube verpasst Kurzlinks. youtu.be/xxxx enthält das Wort youtube nicht. Suche nach dem Präfix youtu und filtere lokal exakt mit einem regulären Ausdruck.

Beides stand im Prompt, und trotzdem haben Claude Code und Codex die Anfragen erst getestet und das Limit bestätigt, bevor sie die Pipeline schrieben.

Schritt 3: Den Prompt an den Agenten geben

Speichere den Text unten als prompt.txt und gib ihn Claude Code oder Codex. Genau diesen haben wir verwendet:

text
Build a mini "HackerTube" in this folder: a static site of the YouTube videos that Hacker News commenters keep recommending to each other.
1. Fetch data only from the official HN Algolia API (https://hn.algolia.com/api/v1/search_by_date, tags=comment). Take every comment created from 2026-09-01 00:00 UTC to 2026-10-31 23:59 UTC that contains a YouTube link (youtube.com/watch, youtu.be/, /embed/, /shorts/, m.youtube.com, music.youtube.com). Note the API returns at most 1000 hits per query, so split the time range into small enough windows. Be polite: at most 2 requests per second. Save raw hits to data/comments.jsonl.
2. Extract and normalize the 11-character video ids (HTML-unescape the comment text first), and drop the commenter's own repeated links within the same comment.
3. For each video count: mentions, distinct commenters, distinct months, first and last mention, and keep up to 3 short quotes with links to the HN comment (https://news.ycombinator.com/item?id=...). Keep a video only if at least 2 different people linked it. Rank by distinct commenters, then mentions.
4. Get titles for the kept videos from YouTube oEmbed (https://www.youtube.com/oembed?url=...&format=json, no API key); if oEmbed fails keep the id and mark it unavailable. Save data/videos.json.
5. Generate site/index.html: a single static page, no login and no tracking, with a grid of cards (thumbnail from https://i.ytimg.com/vi/<id>/hqdefault.jpg, title, channel, "N people / M mentions", one quote) and a client-side text filter.
6. Write the whole pipeline as a reusable script build.py (stdlib only, with a --since/--until option) and run it. Finally reply with: total comments fetched, unique videos found, videos kept, the top 10 videos (id, title, people, mentions), and any problems you hit.

Drei Punkte zählen: die offizielle API als einzige Quelle nennen hält den Agenten davon ab, Webseiten auszulesen; das 1000-Treffer-Limit und die Anfragerate vorab nennen verhindert, dass er erst mittendrin Lücken bemerkt; ein wiederholbares build.py verlangen heißt, dass ein neuer Zeitraum oder Schwellenwert kein neues Gespräch braucht.

Für den Hintergrundbetrieb nutzt du den nicht-interaktiven Modus. Bei Claude Code erlaubt --allowedTools nur die nötigen Befehle. Die Standard-Sandbox von Codex hat keinen Netzwerkzugang, deshalb haben wir --sandbox danger-full-access in einem eigenen leeren Ordner verwendet. Diese Berechtigung ist weitreichend, nutze sie nicht in Ordnern mit wichtigen Dateien; die Optionen erklärt Codex-Berechtigungen für Automatisierung:

bash
# Claude Code, non-interactive: only allow the commands this job needs
cat prompt.txt | claude -p --model claude-opus-5-5 \
  --permission-mode acceptEdits \
  --allowedTools "Bash(python3:*)" "Bash(curl:*)" "Bash(ls:*)" "Bash(mkdir:*)" "Bash(head:*)" "Bash(wc:*)"

# Codex, non-interactive (reads the prompt from stdin)
codex exec --skip-git-repo-check --sandbox danger-full-access - < prompt.txt

Test: Claude Code und Codex mit unserem API Key

Beide Clients bekamen denselben Prompt und liefen gleichzeitig auf derselben Linux-Maschine, am Nachmittag des 2. November 2026:

Claude Code 2.1.316 + Opus 5.5Codex 0.166.0 + GPT-6.1 Sol
LaufzeitEtwa 555 Sekunden, 21 RundenEtwa 534 Sekunden, 30 ausgeführte Befehle
AbrufTagesfenster mit youtu, Fenster über 1000 Treffer automatisch halbiert; 61 Anfragen61 Tagesfenster mit youtu, geprüft, dass keines 1000 erreicht
Kommentare mit YouTube-Link3.6243.619
Verschiedene Videos3.5113.505
Behalten (mind. 2 Personen)193193
Ohne Titel2 (oEmbed lieferte 403 und 401)Ebenso
SelbstprüfungAbgleich mit einem Komplettscan eines Tages: beide fanden dieselben 87 Kommentare mit Link5 Tests geschrieben, Seite in Headless-Chrome geöffnet, Karten und Suche geprüft
Ergebnisbuild.py mit 418 Zeilen, index.html etwa 258 KBbuild.py mit 258 Zeilen, index.html etwa 210 KB

Beide Clients wählten von sich aus denselben Ansatz: Statt alle Kommentare zu durchsuchen (rund 600.000 in zwei Monaten), suchten sie pro Tag nach youtu und filterten lokal exakt. Claude Code hat die Abkürzung zusätzlich geprüft: Ein Komplettscan des 1. September ergab exakt dasselbe, und es merkte an, dass die Suche nach youtube 20 Kommentare mit Kurzlinks verpasst hätte.

Die Top 10 waren auf beiden Seiten fast gleich, die Top 3 identisch. Wir haben zusätzlich gezählt, wie viele Erwähnungen pro Video aus einem einzigen Thread kamen:

PlatzVideoPersonenErwähnungenMonateMax. in einem Thread
1216,000,000 Spy TVs – The LG Smart TV Problem151827
2Kernel Recipes 2026 - Security in the LLM age122112
3The FLYING Tesla Roadster explained by the man who engineered it1112112
4LG Says We're Fake News6716
5Reinventing Entropy – Compression is Intelligence Part 16623

Jedes Video in data/videos.json sieht so aus, die Zitate verlinken auf den ursprünglichen HN-Kommentar:

json
{
  "id": "6IFVTcM28KA",
  "title": "216,000,000 Spy TVs | The LG Smart TV Problem",
  "people": 15, "mentions": 18, "months": 2,
  "first_mention": "2026-09-07T10:52:26Z",
  "last_mention": "2026-10-13T16:41:11Z",
  "quotes": [
    {"author": "wavesplash", "date": "2026-09-07",
     "url": "https://news.ycombinator.com/item?id=49597752",
     "text": "... Worth a watch to see how bad this is"}
  ]
}

Das erzeugte build.py lässt sich mit anderem Zeitraum oder Schwellenwert erneut ausführen (Version von Claude Code):

bash
python3 build.py --since 2026-09-01 --until 2026-10-31   # full run
python3 build.py --skip-fetch --min-people 3              # rebuild from saved comments with a stricter rule
python3 build.py --full-scan                              # scan every comment instead of the "youtu" prefilter (slow)

Drei Probleme aus dem Test

  1. Nach Linkanzahl sortiert, wird eine Wochennachricht zum Klassiker. Alle 12 Erwähnungen von Platz 3 kamen aus einem Thread über genau dieses Video, bei Platz 4 waren es 6 aus einem Thread. Genau deshalb verlangt HackerTube mindestens 3 verschiedene Monate und lässt jeden Kommentar von einem Modell bewerten. In unseren zwei Monaten erfüllten nur 22 Videos „mindestens 3 Personen und mindestens 2 Monate“.
  2. Leute posten oft fehlerhafte URLs, und die beiden Clients gehen unterschiedlich damit um. Claude Code behielt 5 Kommentare mehr als Codex, alle mit URLs wie unten. Claude Code nimmt die ersten 11 Zeichen und behält sie; Codex parst sie als Standard-URLs und verwirft sie. Die dritte hat zwei Zeichen zu viel, das Abschneiden nach 11 Zeichen kann also auf das falsche Video zeigen:
text
https://www.youtube.com/watch?v=sCr_gb8rdEI?t=11m     <- "?" instead of "&"
https://youtu.be/69o-8Mtd3Kc&t=330                    <- "&" instead of "?"
https://www.youtube.com/watch?v=909o_kbCdFgll         <- 13 characters, not 11
  1. oEmbed liefert nicht für jedes Video einen Titel. 2 der 193 behaltenen Videos lieferten 403 oder 401, vermutlich privat oder mit deaktivierter Einbettung; beide Clients markierten sie als nicht verfügbar und zeigten nur die ID. Für Dauer, Aufrufe und Ähnliches brauchst du wie Karpathy einen YouTube-Data-API-Schlüssel aus Google Cloud.

Von der Mini-Version zu HackerTube

Erstens: Jeden Kommentar von einem Modell bewerten lassen. Das macht den größten Unterschied. Sag dem Agenten im Ordner der Mini-Version:

text
For each comment in data/comments.jsonl, read the comment text and the HN story title,
and label what the commenter does with the video: strong_rec, rec, reference, joke or critical.
Write the labels to data/stance.jsonl. Then only count strong_rec and rec,
keep a video if at least 3 different people recommended it in at least 3 different months,
and rank by the number of distinct months. Rebuild site/index.html.

Tausende Kommentare einzeln zu bewerten dauert, also lass den Agenten sie in parallele Stapel aufteilen. Zu viele gleichzeitige Codex-Aufgaben können 429-Fehler auslösen; wie du die Parallelität steuerst, steht in Codex 429 Too Many Requests beheben.

Zweitens: Mehr Daten nutzen. Algolia eignet sich zum Abrufen nach Zeitraum; für 2007 bis heute passt das auf der About-Seite genannte Archiv open-index/hacker-news besser. Am einfachsten lädst du das HackerTube-Zip herunter, lässt den Agenten zuerst DATA.md lesen und passt dann Oberfläche oder Rangliste an deinen Geschmack an.

Drittens: Online stellen. Die Mini-Version ist eine statische Seite und läuft auf jedem statischen Hosting. Laut Karpathys Beitrag gab er Claude die IP des VPS und ließ es aktualisieren, absichern, härten, deployen und optimieren, und Claude erledigte alles.

Häufige Fragen

Algolia liefert weniger Treffer als nbHits

Jede Anfrage liefert höchstens 1000 Treffer; nbHits ist nur die Gesamtzahl. Verkleinere die Zeitfenster, bis jedes unter 1000 Treffern liegt. Tagesfenster reichten bei uns, volle Tage lassen sich nochmals halbieren.

Warum die Suche nach youtube nicht alles findet

Kurzlinks mit youtu.be enthalten youtube nicht. Suche nach youtu und filtere lokal per regulärem Ausdruck nach watch?v=, youtu.be/, /embed/, /shorts/ und ähnlichen Formen.

Links in Kommentaren sehen aus wie &#x2F;

Algolia liefert comment_text HTML-maskiert: / wird zu &#x2F; und & zu &amp;. Entschlüssle das HTML vor dem Extrahieren, sonst findet der reguläre Ausdruck nichts. Punkt 2 unseres Prompts sagt das ausdrücklich.

Dasselbe für Paper, Bücher oder Podcasts

Ersetze YouTube im Prompt durch arxiv.org/abs/, amazon.com/dp/ oder Podcast-Links; Zählung und Seite bleiben gleich. Zum Lesen der Paper danach siehe arXiv-Paper mit Claude Code suchen und lesen.

Damit der Agent jedes Mal denselben Regeln folgt

Schreib Datenquelle, Schwellenwerte und Seitenanforderungen in die CLAUDE.md oder AGENTS.md des Projekts; siehe CLAUDE.md für Claude Code schreiben.

Fazit

HackerTube zeigt, dass kleine Produkte, die „Inhalte nach dem Geschmack anderer filtern“, heute mit einem Coding-Agenten von einer Person gebaut werden können. In unserem Test dauerte es mit Claude Code oder Codex etwa 9 Minuten, Hacker-News-Kommentare abzurufen, YouTube-Links zu extrahieren und eine brauchbare statische Videoseite zu erzeugen. Über die Qualität entscheiden vor allem die Regel, was als Empfehlung zählt, und ein ausreichend langer Zeitraum.

API Key erstellen und in Claude Code, Codex oder Cursor loslegen →

相关文章

DeepSeek Harness Creator Mode: Installation, Drittanbieter-API anbinden und erstes Plugin im Test

DeepSeek Harness Creator Mode: Installation, Drittanbieter-API anbinden und erstes Plugin im Test

Am 2. November hat der offizielle DeepSeek-Harness-Account Creator Mode vorgestellt: Sie beschreiben ein Tool in einem Satz, und der Agent schreibt das Plugin, installiert es in Harness und prüft, ob es geladen wurde. Dieser Leitfaden erklärt, was Creator Mode ist, wie Sie Harness mit npx starten, wie Sie eine OpenAI-kompatible Drittanbieter-API (aicodewith Base URL + Key) für Claude-, GPT- und DeepSeek-Modelle anbinden, und baut mit Creator Mode ein todo_scan-Plugin – mit echten Ausgaben, häufigen Fehlern und den Entsprechungen in Claude Code / Codex.

Claude Code auto mode scheitert hinter einem Gateway in jeder Runde? 2.1.317 behebt 403/422 (Update und Tests)

Claude Code auto mode scheitert hinter einem Gateway in jeder Runde? 2.1.317 behebt 403/422 (Update und Tests)

Claude Code 2.1.317 (veröffentlicht am 3. November) behebt, dass der Auto-Modus in jeder Runde scheitert, wenn ANTHROPIC_BASE_URL auf ein LLM-Gateway zeigt, das die serverseitige Sicherheitsprüfung mit 403 oder 422 beantwortet. Dieser Leitfaden zeigt, was sich ändert, wer betroffen ist, wie Sie aktualisieren und die Version prüfen, wie Sie Base URL und Schlüssel setzen und den Auto-Modus einschalten, dazu Vergleichstests von 2.1.316 und 2.1.317, eine Fehlertabelle und FAQ.

Claude Message Threads nutzen: Beta der Messages-API-Threads, nur neue Nachrichten senden, erstes Token ~35 % schneller (Claude Code / API im Test)

Claude Message Threads nutzen: Beta der Messages-API-Threads, nur neue Nachrichten senden, erstes Token ~35 % schneller (Claude Code / API im Test)

Am 2. November hat Anthropic Message Threads für die Messages API als öffentliche Beta gestartet. Die erste Anfrage schickt das ganze Gespräch und legt einen Thread an; danach sendet jede Runde nur die neuen Nachrichten und die id der vorherigen Antwort. In langen Gesprächen kommt das erste Token früher, Token-Verbrauch und Abrechnung bleiben gleich. Dieser Leitfaden erklärt nach der offiziellen Doku den thread-Parameter, den Beta-Header, den Ablauf nach 5 Minuten und das erneute Senden nach einem 404, zeigt Beispiele für curl, Python und TypeScript und berichtet von unserem Test mit einem aicodewith-Key: Über aicodewith wird das thread-Feld derzeit ignoriert und die Fortsetzungsrunde verliert den Kontext, Claude Code ist nicht betroffen, dazu der Ausweg und häufige Fehler.