Vision Stand 2026-08-28 03:30 UTC

Kanal-Kette

Ein Link → DNA, Buch, Verkaufsseite, Workflow

Seit dem 10.08.2026 ist der Kanal-Link der einzige Handgriff: eine Kette aus zwoelf Stufen liest den fremden Kanal, leitet DNA und Rezepte ab, schreibt das Buch, baut und veroeffentlicht die Verkaufsseite (mit noindex, bis Leon freigibt) und legt den Video-Workflow deaktiviert an. Der erste Volldurchlauf lief am selben Tag. Was fehlt, ist die Bedienung im HQ und das Scharfschalten – beides unten unter Stand und Weg.

Ein YouTube-Kanal-Link rein – alles andere entsteht von selbst (Leon-Auftrag 10.08.2026). kanal_kette.py ist die eine Schnittstelle über allem: sie kennt die Reihenfolge der zwölf Stufen, führt Buch über jeden Schritt (archive/kanal_jobs/<slug>.json) und lässt sich mittendrin anhalten und fortsetzen. Der erste echte Volldurchlauf lief am 10.08.2026 (tomorrow_engineered, gestartet aus nichts als einem Link).

Drei Entscheidungen stecken darin, jede am ersten Lauf gemessen:

  • Das Referenzvideo wählt die Kette selbst – das Video am View-Median, nicht der

Ausreißer: 154.000 Views gegen einen Median von 17.700 zeigen, was einmal durch den Algorithmus ging, nicht die Machart des Kanals. Überstimmbar über registry.json → reference.videos.

  • Leons Wünsche wirken, statt nur gespeichert zu werden: der Freitext aus dem Start-Formular

fließt in die Wahl der Buch-Sorte und ins Buchkonzept ein (belegt: der Wunsch „soll ein Ratgeber werden" überstimmt die Story-Ableitung der Horror-DNA – mit dokumentierter Quelle).

  • Die Live-Seite trägt noindex: erreichbar über ihren Link auf

herz-<slug>.pages.dev, unsichtbar für Google, bis Leon sie freigibt. So kann die Kette automatisch veröffentlichen, ohne dass ein Testlauf im Suchindex landet.

Was die Kette bewusst NICHT tut: kein Upload, kein Konto-Anlegen, kein Video-Start. Der n8n-Workflow-Satz (P1–P5 + Publisher) wird deaktiviert angelegt; das Ziel-Konto (--konto B1E/CH10/…) wird je Lauf nur gemerkt – ein Upload-Ziel ist immer explizit, nie geerbt. Später, nach dem Test, kommt als eigener Schritt: Kanal mit dem Ziel-Konto verbinden, Workflow scharf schalten, Seite freigeben (noindex raus, Preis setzen), erstes Video auf Leons Zuruf. Bedient wird das alles über den HQ-Bereich „Kanal-Fabrik" (Start-Formular · Lauf-Ansicht mit Stopp · große Kanal-Tabelle), der die Tabs Accounts/Scaling in der Navigation ersetzt.

Der Weg von der DNA ins Video: buch_kette.py

Zuerst hier nachsehen, bevor du ein Werkzeug einzeln aufrufst. Die Einzelteile unten (gen_book → gen_cover → build_ebook → Seite → apply_book_plug) waren alle da und trotzdem entstand seit dem 23.07. kein verdrahtetes Buch: books/alvaro_horror/ lag mit 15.077 Wörtern und gebautem PDF bereit, während hq.config.json → channels[alvaro_horror].funnel auf None stand – also erfuhr kein Zuschauer, dass es das Buch gibt. Es fehlte nicht ein Werkzeug, es fehlte der Weg zwischen ihnen und die Sicht darauf.

Acht Stufen: dna → text → note → cover → pdf → (epub) → seite → verdrahtet. Die Kette misst je Stufe das Ist, führt nur den fehlenden Rest aus und hält an, wo ein Mensch gebraucht wird.

Wo die Kette beginnt – und wo nicht (gemessen 09.08.2026). Sie beginnt bei der fertigen DNA, nicht beim Kanal-Link. Ein Kanal-Link allein führt heute zu nichts: start_job will Video-URLs, start_auto_job einen Suchbegriff, start_job_aus_dossier ein Dossier, und extract_dna.py Videos oder Transkripte plus einen von Hand gesetzten Slug. Der Grund steht in channel_clone/algrow_rest.py: get_channel_videos, read_transcript und scrape_youtube sind bei Algrow nur über MCP erreichbar, nicht über die n8n-REST-Brücke – also nur in einer laufenden Claude-Session, nicht per Cron und nicht per HQ-Knopf. Wer „Link rein, Buch raus" will, muss zuerst diese Lücke schließen; die Buch-Kette hängt korrekt an der DNA und greift, sobald eine erscheint, egal auf welchem Weg.

Der Auslöser: eine neue DNA. --takt läuft alle 10 Minuten (Cron) und prüft zuerst, ob in channel_clone/dna/ eine Datei neu hinzugekommen ist. Ist sie das, läuft für diesen Kanal in einem Zug text → cover → pdf durch: DNA rein, fertiges Buch raus. Erst vor der Verkaufsseite bleibt es stehen, weil die Domain und Preis berührt.

Warum eine Wache am Verzeichnis und kein Aufruf in extract_dna.py: eine DNA entsteht auf mehreren Wegen (extract_dna legt an, thumb_schule/build_package schreiben hinein, von Hand kopiert wird auch). Ein Auslöser am Verzeichnis fängt jeden davon; ein Aufruf in einem Schreiber fängt einen und schweigt bei den anderen. Register: archive/buch_kette_dna.json.

Der erste Lauf startet nichts – er trägt den vorhandenen Bestand als bekannt ein. Sonst hätte die Wache rückwirkend für alle elf Kanäle mit DNA ein Buch angefangen; ausgelöst wird durch die Eingabe einer DNA, nicht durch ihr bloßes Vorhandensein. Ein Bestandskanal bekommt sein Buch mit buch_kette.py <kanal>.

Ist nichts Neues da, bringt derselbe Lauf eine angefangene Kette eine $0-Stufe weiter. Zwei weitere Grenzen sind bewusst gezogen:

  • Die Note schreibt nichts neu. Sie ist eine Modell-Meinung, keine Messung: derselbe

Richter benotet dieselbe Einheit im Verlauf mit 4, 12 und 82. Auf so eine Zahl hin 15.077 abgenommene Wörter zu verwerfen, wäre Arbeit an der Kennzahl statt an der Sache (Grundsatz 3). Sie bleibt sichtbar und bleibt Tor beim Verdrahten. Neuschrieb startet ein Mensch: --bis note (sichert vorher eine Generation nach chapters.vorher/).

  • seite und verdrahtet gehören Leon. Beide wirken nach außen – eine Verkaufsseite kostet

Domain und Preis, und Verdrahten schaltet Werbung in jede künftige Folge des Kanals.

Das Tor. --verdrahten --titel "..." --url ... --freigabe trägt das Buch in hq.config.json → channels[].funnel ein und lässt apply_book_plug.py daraus recipes/<kanal>.json → recipe.book schreiben. Ab da ist der Kreis zur Videoerstellung geschlossen: der Renderer liest das Buch aus dem Rezept und legt Einblendung, QR-Endkarte und Beschreibungslink von selbst in jede Folge. Verweigert wird das Verdrahten ohne Text, ohne PDF, unter der Note-Schwelle oder wenn die Verkaufsseite nicht wirklich mit HTTP 200 antwortet – ein Buchhinweis, hinter dem nichts liegt, kostet Vertrauen und bringt keinen Verkauf.

Welches Buch zu welchem Kanal gehört, steht in book.json → kanal – nicht in einer zweiten Liste. Das Verzeichnis heißt nicht immer wie der Kanal: psych verkauft books/shutdown-guide/, history verkauft books/curious-habits/.

Jeder Kanal bekommt beim Skalieren seine eigene Domain (Leon 09.08.2026). Wer am Seitenbau arbeitet, baut deshalb nichts, was eine gemeinsame Domain oder einen festen Unterpfad voraussetzt. Der aktuelle Stand ist dafür geeignet: ebook/site-<kanal>/index.html nutzt ausschließlich relative Pfade (img/cover.png), läuft also unter jeder Domain und in jedem Unterordner ohne Umbau. Zwei Dinge brauchen die Domain trotzdem, sobald sie feststeht – og:image/og:url und link rel=canonical müssen absolut sein, sonst zeigt kein geteilter Link ein Vorschaubild, und genau über geteilte Links läuft der Funnel. Solange keine Domain bekannt ist, bleiben sie weg statt falsch. Kosten je Kanal ~10–12 €/Jahr.

Im HQ zeigt der Bereich eBook dieselbe Kette live (/hq/api/ebook → ketten, Quelle ist dieses Skript, keine gepflegte Liste); DU markiert die Stufen, die auf Leon warten.


Baut verkaufsfertige Funnel-eBooks je Channel-Niche (Leon: Winkel c – eBook als Produkt fürs eigene Channel-Publikum, NICHT KDP-Masse; Serien-Modell „<Channel> Guides", jedes Buch = EIN Pattern). Referenz-Buch: books/shutdown-guide/ = „The Shutdown Loop" (97 Seiten, ~19,5k Wörter, 14 Kapitel) – an dem wurde dieses Rezept entwickelt und von Leon abgenommen (13.07.).

Cover per KI (HZ-1067, Leon-Freigabe 09.08.2026). gen_cover.py <slug> --ki holt das MOTIV von gpt-image-2 (ein Bild je Buch, kein Batch, kein Retry auf dem bezahlten Submit) und legt dieselbe Typografie darüber. Der Bildprompt wird aus der Kanal-DNA gebaut – visual_style + verifizierte thumbnail_dna.style + tone –, ist also je Kanal ein anderer; sagt die DNA nichts über die Optik, bricht das Skript ab statt ein geratenes Bild zu kaufen. Preis kommt aus dashboard/config/hq.config.json → image_source_costs.ai ($0,014 gemessen), nie geschätzt, und steht vor dem Aufruf im Log. --dry-run zeigt Prompt + Preis ohne Ausgabe, --bild <datei> legt die Typo über ein vorhandenes Bild ($0-Test der Optik). Ohne --ki bleibt alles wie bisher: HTML/CSS→Chromium, $0 – das ist der Standard, auch in buch_kette.py; die Stufe cover nimmt den KI-Weg nur, wenn book.json "cover_ki": true trägt (eine Kette gibt nie still Geld aus).

Kosten-Regel: $0, solange niemand --ki setzt. Text = Claude Code in der Session (Abo). Fotos = Pexels. Cover = HTML/CSS→Chromium. PDF = headless Chromium im render-history-remotion-Container. KEIN Anthropic-API-Gateway, KEIN ApiMart.

Quelle im Repo: ebook/README.md