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:
| Schritt | Was HackerTube macht |
|---|---|
| 1. Alle Kommentare lesen | Ein öffentliches Komplettarchiv von HN (den Datensatz open-index/hacker-news) nach YouTube-Links durchsuchen; das ergibt weit über hunderttausend Videos |
| 2. Wiederholte Empfehlungen behalten | Mindestens 3 verschiedene Personen mit echtem Kommentar, in mindestens 3 verschiedenen Monaten; übrig bleiben rund 7.000 Videos |
| 3. Jeden Kommentar von einem Modell lesen lassen | Claude 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 schreiben | Aus den YouTube-Angaben und allem, was HN dazu gesagt hat: Zusammenfassung, warum HN es mag, Art und ob es gut gealtert ist |
| 5. Sortieren | Nach 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:
| Schritt | Vorgehen | Ergebnis |
|---|---|---|
| 1. Kommentare abrufen | Algolia search_by_date, tags=comment, in Zeitfenster aufgeteilt | data/comments.jsonl |
| 2. Links extrahieren | 11-stellige Video-IDs aus dem Kommentartext ziehen, inklusive watch?v=, youtu.be/, /shorts/ und weiterer Formen | Videos pro Kommentar |
| 3. Deduplizieren und zählen | Erwähnungen, verschiedene Personen und verschiedene Monate pro Video | Rangliste |
| 4. Titel ergänzen | YouTube oEmbed, ohne Schlüssel | data/videos.json |
| 5. Seite erzeugen | Eine statische HTML-Datei mit Kartenraster und clientseitiger Suche | site/index.html |
Schritt 1: API Key erstellen und Claude Code oder Codex verbinden
- Bei aicodewith.ai registrieren, anmelden, die Schlüsselverwaltung öffnen, einen Key erstellen und den vollständigen String kopieren.
- Claude Code: Adresse und Key setzen, einen leeren Ordner anlegen und dort starten:
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.
- Codex: Trage Folgendes in
~/.codex/config.tomlein, der Key steht direkt inexperimental_bearer_token:
# ~/.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):
# 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.comauf mehr als 4.000 Kommentare, der Rest wird abgeschnitten. Der Zeitraum muss also in kleine Fenster geteilt werden. - Die Suche nach
youtubeverpasst Kurzlinks.youtu.be/xxxxenthält das Wortyoutubenicht. Suche nach dem Präfixyoutuund 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:
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:
# 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.5 | Codex 0.166.0 + GPT-6.1 Sol | |
|---|---|---|
| Laufzeit | Etwa 555 Sekunden, 21 Runden | Etwa 534 Sekunden, 30 ausgeführte Befehle |
| Abruf | Tagesfenster mit youtu, Fenster über 1000 Treffer automatisch halbiert; 61 Anfragen | 61 Tagesfenster mit youtu, geprüft, dass keines 1000 erreicht |
| Kommentare mit YouTube-Link | 3.624 | 3.619 |
| Verschiedene Videos | 3.511 | 3.505 |
| Behalten (mind. 2 Personen) | 193 | 193 |
| Ohne Titel | 2 (oEmbed lieferte 403 und 401) | Ebenso |
| Selbstprüfung | Abgleich mit einem Komplettscan eines Tages: beide fanden dieselben 87 Kommentare mit Link | 5 Tests geschrieben, Seite in Headless-Chrome geöffnet, Karten und Suche geprüft |
| Ergebnis | build.py mit 418 Zeilen, index.html etwa 258 KB | build.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:
| Platz | Video | Personen | Erwähnungen | Monate | Max. in einem Thread |
|---|---|---|---|---|---|
| 1 | 216,000,000 Spy TVs – The LG Smart TV Problem | 15 | 18 | 2 | 7 |
| 2 | Kernel Recipes 2026 - Security in the LLM age | 12 | 21 | 1 | 2 |
| 3 | The FLYING Tesla Roadster explained by the man who engineered it | 11 | 12 | 1 | 12 |
| 4 | LG Says We're Fake News | 6 | 7 | 1 | 6 |
| 5 | Reinventing Entropy – Compression is Intelligence Part 1 | 6 | 6 | 2 | 3 |
Jedes Video in data/videos.json sieht so aus, die Zitate verlinken auf den ursprünglichen HN-Kommentar:
{
"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):
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
- 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“.
- 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:
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
- 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:
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 /
Algolia liefert comment_text HTML-maskiert: / wird zu / und & zu &. 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 →



