     1|## **1\. Gesamturteil**
     2|
     3|Euer Konzept ist **technisch schon sehr stark gedacht**. Besonders gut sind: approval-first, getrennte Render-/Review-/Publishing-Schichten, deterministic Overlays statt eingebrannter AI-Texte, Policy Gates, Telegram-Freigabe und die Idee, nicht auf Massenoutput, sondern auf Retention und Qualität zu optimieren.
     4|
     5|Der größte Schwachpunkt ist **nicht der Code**, sondern die strategische Positionierung: Der Bot ist aktuell zu sehr auf „AI-/Prompt-Tipps“ ausgerichtet. Das ist nicht falsch, aber schnell austauschbar. Der Markt braucht nicht noch einen Kanal mit „5 ChatGPT Hacks“. Der bessere Frame wäre:
     6|
     7|**TrueTraceShorts erklärt die versteckten Mechanismen hinter digitalen Problemen — AI, Arbeit, Aufmerksamkeit, Entscheidungen, Scams, Produktivität — und gibt pro Video eine konkrete Regel, die sofort hilft.**
     8|
     9|Damit bleibt „Systems over prompts“ erhalten, aber ihr seid nicht in der überfüllten Prompt-Tipp-Nische gefangen.
    10|
    11|Wichtig: Ich habe die von dir gelieferten Unterlagen geprüft. Den tatsächlichen Python-Code habe ich nicht ausgeführt, weil du hier keine Dateien hochgeladen hast. Meine technische Bewertung basiert daher auf der beschriebenen Architektur und dem Modul-Inventar.
    12|
    13|---
    14|
    15|## **2\. Was am bestehenden Konzept unbedingt bleiben sollte**
    16|
    17|### **Beibehalten: approval-first**
    18|
    19|Das ist der richtige Weg. Gerade weil Plattformen zunehmend gegen repetitiven, massenproduzierten oder wenig originellen Content vorgehen, ist menschliche Freigabe ein Qualitäts- und Risikoschutz. YouTube beschreibt für die Monetarisierung ausdrücklich, dass Inhalte original, authentisch und nicht massenproduziert/repetitiv wirken sollen; reine Slideshow-/Scrolling-Text-Formate mit minimalem Mehrwert sind problematisch. ([Google Hilfe](https://support.google.com/youtube/answer/1311392?hl=en))
    20|
    21|**Empfehlung:** Auto-Posting erst aktivieren, wenn folgende Dinge stabil sind:
    22|
    23|1. versionierte Approval-Fingerprints,
    24|2. Medien-Hash pro Video,
    25|3. dokumentierte Quellen/Claims,
    26|4. Plattform-spezifische AI-Disclosure-Prüfung,
    27|5. Analytics-Feedback über mindestens 30–60 veröffentlichte Videos.
    28|
    29|### **Beibehalten: deterministic renderer-owned Overlays**
    30|
    31|Sehr gut. AI-Visuals dürfen Stimmung, Bewegung und Hintergrund liefern. Fakten, Captions, Pfeile, Labels, Zahlen und Claims sollten lokal gerendert werden. Das reduziert Fehler, verbessert Lesbarkeit und macht den Bot kontrollierbarer.
    32|
    33|### **Beibehalten: motion-led mechanism reveal**
    34|
    35|Das ist der stärkste Differenzierungsansatz. Viele AI-Shorts sind nur Voiceover plus B-Roll plus Captions. Euer Vorteil kann sein: **Der Zuschauer sieht den Mechanismus.** Nicht „hier ist ein Tipp“, sondern „hier ist der Fehlerpfad, hier kippt die Entscheidung, hier rettet die neue Regel das Ergebnis“.
    36|
    37|### **Beibehalten: manuelle Upload-Phase**
    38|
    39|Vor Auto-Publishing muss der Bot lernen, welche Formate wirklich funktionieren. Sonst automatisiert ihr nur Unsicherheit. Der Engpass ist nicht „wie schnell rendern wir 100 Videos?“, sondern: **Welche 10 Formate verdienen überhaupt Skalierung?**
    40|
    41|---
    42|
    43|## **3\. Größte strategische Korrektur: Weg von „AI-Themen“, hin zu „digitale Alltagsmechanismen“**
    44|
    45|Aktuell klingt TrueTraceShorts nach:
    46|
    47|„Wir erklären AI- und Prompt-Probleme.“
    48|
    49|Besser wäre:
    50|
    51|„Wir zeigen, warum digitale Dinge im Alltag schiefgehen — und welche kleine Systemregel sie repariert.“
    52|
    53|Das eröffnet deutlich mehr Content-Flächen, ohne die Marke zu verwässern.
    54|
    55|### **Neue Positionierung**
    56|
    57|**Kanalversprechen:**
    58|“Trace the hidden system. Fix the outcome.”
    59|
    60|**Deutsch erklärt:**
    61|Der Kanal nimmt alltägliche digitale Frustmomente und zeigt den verborgenen Mechanismus dahinter: Warum AI halluziniert, warum To-do-Listen scheitern, warum Meetings keine Entscheidungen erzeugen, warum Social Feeds süchtig machen, warum Scam-Mails funktionieren, warum Tools mehr Arbeit statt weniger Arbeit machen.
    62|
    63|**Tagline kann bleiben:**
    64|“Systems over prompts.”
    65|
    66|**Aber das Content-Versprechen sollte breiter werden:**
    67|Nicht „AI besser benutzen“, sondern **„in einer AI- und Algorithmus-Welt klarer denken, besser entscheiden und weniger Zeit verlieren.“**
    68|
    69|Das passt deutlich besser zum aktuellen Marktumfeld: AI ist inzwischen kein Differenzierungsmerkmal mehr, sondern eine Basistechnologie. HubSpot beschreibt für 2026, dass der Unterschied nicht mehr darin liegt, ob Marketer AI nutzen, sondern wie gut sie sie einsetzen, ohne Menschlichkeit, Vertrauen und klare Markenhaltung zu verlieren. ([hubspot.com](https://www.hubspot.com/state-of-marketing)) Auch Sprout Social betont für 2026, dass AI-generierter Content Mainstream ist, Nutzer aber Transparenz, menschliche Note, Serienformate und Originalität erwarten. ([Sprout Social](https://sproutsocial.com/insights/social-media-trends/))
    70|
    71|---
    72|
    73|## **4\. Welche Bedürfnisse befriedigt der Content wirklich?**
    74|
    75|Der Nutzer öffnet TikTok, Shorts oder Reels selten mit nur einem Bedürfnis. Meist laufen mehrere Motive gleichzeitig:
    76|
    77|| Bedürfnis | Was der Zuschauer wirklich will | Wie TrueTraceShorts das bedienen kann |
    78|| ----- | ----- | ----- |
    79|| Langeweile | Kurzer Reiz, schneller Dopamin-Impuls | Starker visueller Konflikt in Sekunde 1 |
    80|| Nützlichkeit | „Ich will etwas mitnehmen“ | Eine konkrete Regel, Vorlage oder Entscheidungshilfe |
    81|| Kontrolle | „Ich fühle mich von Tools/AI/Feeds überfordert“ | Mechanismus zeigen und Handlung zurückgeben |
    82|| Status | „Ich will mich kompetent fühlen“ | Insider-Wissen ohne Fachjargon |
    83|| Sicherheit | „Ich will Fehler, Scams, Datenverlust vermeiden“ | Red Flags, Checklisten, einfache Tests |
    84|| Social Currency | „Das kann ich jemandem schicken“ | Shareable Aha-Momente: „Das erklärt genau unser Problem“ |
    85|| Identität | „Ich bin jemand, der smarter arbeitet“ | Serienlogik: Zuschauer wird Teil einer Denkweise |
    86|
    87|Forschung zu TikTok-Nutzung zeigt typische Motive wie Unterhaltung, Informationssuche, soziale Interaktion, soziale Unterstützung und Eskapismus. ([ScienceDirect](https://www.sciencedirect.com/science/article/pii/S2772501422000112?utm_source=chatgpt.com)) Deshalb sollte der Bot nicht nur „informieren“, sondern jedes Video als **Mini-Erlebnis** bauen: erst Reibung, dann Erkenntnis, dann Erleichterung.
    88|
    89|---
    90|
    91|## **5\. Wie man den Algorithmus sinnvoll „ausnutzt“**
    92|
    93|Nicht durch Tricks. Durch saubere Signale.
    94|
    95|### **YouTube Shorts**
    96|
    97|YouTube empfiehlt, bei Shorts besonders auf Kennzahlen wie **Shown in feed**, **Viewed vs. swiped away**, **Engaged views**, durchschnittliche Wiedergabedauer und Top-Content-Muster zu achten. ([Google Hilfe](https://support.google.com/youtube/answer/12942217?co=YOUTUBE._YTVideoType%3Dshorts&hl=en)) Das Empfehlungssystem berücksichtigt unter anderem Klicks, Watchtime, Zufriedenheitssignale, Shares, Likes und Dislikes; Watchtime allein wurde eingeführt, weil Klicks nicht ausreichen, um Zufriedenheit zu messen. ([blog.youtube](https://blog.youtube/inside-youtube/on-youtubes-recommendation-system/))
    98|
    99|Daraus folgt für euren Bot:
   100|
   101|* Die ersten 1–2 Sekunden optimieren auf **nicht wegwischen**.
   102|* Sekunde 3–8 optimieren auf **„Ich will wissen, wie das ausgeht“**.
   103|* Mitte des Videos optimieren auf **Klarheit statt Erklärtempo**.
   104|* Ende optimieren auf **Save/Share/Follow-Grund**.
   105|
   106|### **TikTok**
   107|
   108|TikTok nennt als zentrale Empfehlungssignale Nutzerinteraktionen, Videoinformationen wie Captions, Sounds und Hashtags sowie Geräte-/Account-Einstellungen. Starke Signale wie das vollständige Anschauen eines längeren Videos wiegen schwerer als schwächere Signale; Followerzahl und frühere High-Performer sind laut TikTok keine direkten Faktoren im Empfehlungssystem. ([newsroom.tiktok.com](https://newsroom.tiktok.com/en-us/how-tiktok-recommends-videos-for-you)) TikTok selbst beschreibt außerdem, dass User-Interaktionen im Laufe der Zeit stärker gewichtet werden und Empfehlungen diversifiziert werden. ([TikTok Support](https://support.tiktok.com/en/using-tiktok/exploring-videos/how-tiktok-recommends-content))
   109|
   110|Daraus folgt:
   111|
   112|* Auch kleine Accounts können gewinnen, wenn das Video sofort verstanden wird.
   113|* Der Bot muss **Completion**, **Rewatch**, **Share**, **Save**, **Follow/View** und **Kommentar-Auslöser** tracken.
   114|* Hashtags helfen der Einordnung, ersetzen aber keinen klaren Video-Intent.
   115|
   116|### **Instagram Reels**
   117|
   118|Instagram wird zunehmend als Empfehlungs-/Interest-System verstanden. Aktuelle Social-Media-Analysen betonen Watchtime, Rewatches, Shares/Sends, schnelle Interaktionen, Originalität, starke Hooks, Captions, Audio und nicht-wasserzeichenbehaftete Originalvideos. ([Buffer](https://buffer.com/resources/instagram-algorithms/))
   119|
   120|Daraus folgt:
   121|
   122|* Reels brauchen mehr „menschliche Echtheit“ als reine AI-Optik.
   123|* Shares/Sends sind extrem wichtig: Baut Videos, die man Kollegen, Freunden oder Kunden weiterleiten will.
   124|* Der Bot sollte für Instagram später eigene Captions und Cover-Texte generieren, nicht nur TikTok/YouTube kopieren.
   125|
   126|---
   127|
   128|## **6\. Der wichtigste Formatwechsel: Nicht „AI-Tipp“, sondern „sichtbarer Fail → Mechanismus → Fix“**
   129|
   130|Euer aktuelles Format ist gut, aber noch zu erklärend. Ich würde es härter zuspitzen.
   131|
   132|### **Neues Standardformat**
   133|
   134|**0–1,5s: sichtbarer Konflikt**
   135|Nicht nur ein Satz. Ein Problem auf dem Screen.
   136|
   137|Beispiel:
   138|“Your meeting summary missed the only decision.”
   139|
   140|Visuell: Links ein Meeting-Transcript, rechts eine nutzlose AI-Zusammenfassung mit Highlight: “Great discussion.”
   141|
   142|**1,5–5s: Identifikation**
   143|“Most people ask AI to summarize. But they never tell it what decision the summary is for.”
   144|
   145|**5–14s: Mechanismus**
   146|“Without a decision target, AI compresses everything equally. So the important part disappears.”
   147|
   148|**14–28s: Fix**
   149|“Before the summary, add this: ‘I need to decide X. Extract only what changes that decision.’”
   150|
   151|**28–38s: Before/After**
   152|Vorher: generische Zusammenfassung.
   153|Nachher: Entscheidung, Risiken, nächster Schritt.
   154|
   155|**Letzte 2–4s: merkbarer Satz**
   156|“Don’t ask for a summary. Ask for decision evidence.”
   157|
   158|Das ist stärker als reine Prompt-Tipps, weil es ein mentales Modell erzeugt.
   159|
   160|---
   161|
   162|## **7\. Themenwahl: AI nicht aufgeben, aber Anteil reduzieren**
   163|
   164|Ich würde AI nicht streichen. Aber ich würde den AI-Anteil auf etwa **30–40 %** begrenzen.
   165|
   166|### **Empfohlener Content-Mix für die nächsten 60 Videos**
   167|
   168|| Anteil | Content-Pillar | Warum |
   169|| ----- | ----- | ----- |
   170|| 35 % | AI That Actually Helps | Bestehende Stärke nutzen, aber mit echten Alltagsszenen |
   171|| 20 % | Digital Self-Defense | Scams, Fake Reviews, Datenschutz, AI-Halluzinationen, Phishing — hoher Nutzwert |
   172|| 20 % | Attention & Decision Systems | Aufmerksamkeit, To-dos, Meetings, Entscheidungen, Overload |
   173|| 15 % | Workflow Teardowns | „Warum dein System scheitert“: E-Mail, Kalender, Notizen, Automationen |
   174|| 10 % | Algorithm & Social Search Literacy | Wie Feeds, Suche, Empfehlungen und Content-Konsum wirklich funktionieren |
   175|
   176|Damit bleibt TrueTraceShorts klar positioniert, aber nicht eintönig.
   177|
   178|---
   179|
   180|## **8\. Themen, die aktuell besser wirken könnten als reine AI-Tipps**
   181|
   182|Eine Garantie gibt es nicht, aber aus aktuellen Plattform- und Trendberichten lassen sich starke Cluster ableiten. TikTok beschreibt für 2026 unter anderem „Reali-TEA“, „Curiosity Detours“ und „Emotional ROI“: echte Gespräche, absichtsvollere Suche, nützliche Entdeckungen und emotional begründeter Nutzen. Der Report nennt außerdem starke Bereiche wie Worklife, Joblife, Hygiene/Routinen und „locked in“-Verhalten. ([TikTok For Business](https://ads.tiktok.com/business/library/TikTok_Next_2026_Trend_Report.pdf)) Hootsuite nennt für 2026 ebenfalls Work-Life-Balance, ruhigere/cozy Ästhetik, Micro-Drama, Social Search, AI-Workflows und Authentizität als relevante Social-Trends. ([Hootsuite](https://www.hootsuite.com/research/social-trends?srsltid=AfmBOoq5iObAlCezXc1VT8WvZsKvXnJEgSfxMWtLIpQPy3qFYsFZSuQd))
   183|
   184|### **Bessere Themencluster für TrueTraceShorts**
   185|
   186|| Cluster | Beispiel-Hook | Warum stark |
   187|| ----- | ----- | ----- |
   188|| Digital Self-Defense | “This fake invoice looks normal. One line gives it away.” | Hoher Schmerz, hoher Share-Wert |
   189|| AI Output Autopsy | “Your AI answer sounds smart because it skipped the only hard part.” | AI bleibt drin, aber smarter |
   190|| Decision Hygiene | “Your to-do list is not a plan. It is a guilt archive.” | Identifikation \+ Nutzen |
   191|| Meeting/Worklife Fixes | “Your meeting summary is useless because it has no decision target.” | Alltagsschmerz für Wissensarbeiter |
   192|| Attention Recovery | “You are not lazy. Your phone trained your next thought.” | Psychologisch stark, aber nicht zu therapeutisch machen |
   193|| Social Search Literacy | “TikTok search is not Google. Search like this instead.” | Plattform-native, aktuell, nützlich |
   194|| Subscription/Consumer Traps | “This free trial is designed to survive your memory.” | Shareable, visuell gut |
   195|| Automation Reality Checks | “Your automation fails because it has no exception path.” | Passt perfekt zu Systems-over-prompts |
   196|| Fake Productivity | “Your second brain is a storage unit, not a thinking system.” | Creator-/Knowledge-Worker-Zielgruppe |
   197|| AI Trust Rules | “Never trust an AI answer that cannot name what would prove it wrong.” | Starkes Mental Model |
   198|
   199|### **Eher vermeiden**
   200|
   201|

Use offset=201 to continue reading (showing 1-200 of 1030 lines)


   201|* „Top 5 AI Tools“
   202|* „10 ChatGPT Prompts, die du kennen musst“
   203|* „Make money with AI“
   204|* generische Motivationsvideos
   205|* AI-News ohne eigenen Mechanismus
   206|* Fact-Slideshows ohne Story
   207|* reine „Did you know?“-Videos
   208|* gesichtslose AI-Avatar-Kommentare zu Trends
   209|* Videos, die nur aus B-Roll, Captions und TTS bestehen
   210|
   211|---
   212|
   213|## **9\. Neuer Content-Satz: Was jedes Video leisten muss**
   214|
   215|Bisher fragt ihr:
   216|
   217|1. Was läuft konkret schief?
   218|2. Warum passiert es?
   219|3. Was ist die einfache Korrektur?
   220|4. Welchen Satz merkt sich der Zuschauer?
   221|
   222|Das ist gut. Ich würde zwei Fragen ergänzen:
   223|
   224|5. **Warum sollte der Zuschauer das speichern oder teilen?**
   225|6. **Warum sollte er genau diesem Kanal folgen?**
   226|
   227|Ohne diese zwei Fragen bekommt ihr vielleicht Views, aber wenig Follower-Conversion.
   228|
   229|### **Neues Pflichtschema je Video**
   230|
   231|Jedes Video braucht:
   232|
   233|* ein konkretes Alltagsproblem,
   234|* eine sichtbare Szene,
   235|* einen psychologischen oder technischen Mechanismus,
   236|* eine einfache Regel,
   237|* einen Before/After-Moment,
   238|* einen Save- oder Share-Grund,
   239|* einen Follow-Grund für die Serie.
   240|
   241|Beispiel-Follow-Grund:
   242|
   243|“Follow for small systems that stop digital work from wasting your life.”
   244|
   245|Das ist stärker als:
   246|
   247|“Follow for more AI tips.”
   248|
   249|---
   250|
   251|## **10\. Bot-Optimierung: neue Datenfelder im ContentBrief**
   252|
   253|Der Bot braucht vor dem Skript eine bessere strategische Eingabe. Ich würde `ContentBrief` erweitern.
   254|
   255|### **Neue Felder**
   256|
   257|audience\_need:
   258|  boredom | urgency | fear | competence | clarity | status | safety | curiosity
   259|
   260|job\_to\_be\_done:
   261|  "When I ..., I want to ..., so I can ..."
   262|
   263|viewer\_identity:
   264|  beginner | creator | solo\_founder | office\_worker | student | parent | small\_team | freelancer
   265|
   266|viewer\_emotion\_before:
   267|  confused | annoyed | overwhelmed | skeptical | curious | embarrassed | anxious
   268|
   269|viewer\_emotion\_after:
   270|  relieved | smarter | in\_control | warned | motivated | equipped
   271|
   272|share\_reason:
   273|  "I would send this to someone because..."
   274|
   275|save\_reason:
   276|  "I would save this because..."
   277|
   278|follow\_reason:
   279|  "I would follow this channel because..."
   280|
   281|search\_intent\_phrase:
   282|  "how to spot fake invoice"
   283|  "why ChatGPT hallucinates"
   284|  "better meeting summary prompt"
   285|
   286|series\_id:
   287|  ai\_output\_autopsy | digital\_red\_flags | decision\_design | workflow\_teardown | attention\_traps
   288|
   289|saturation\_risk:
   290|  low | medium | high
   291|
   292|human\_texture:
   293|  real example | mini case | tested prompt | screen recording | personal observation | source-based claim
   294|
   295|claim\_risk:
   296|  low | medium | high
   297|
   298|ai\_disclosure\_required:
   299|  yes | no | unclear
   300|
   301|Damit verhindert ihr, dass JARVIS einfach „irgendwas über AI“ generiert.
   302|
   303|---
   304|
   305|## **11\. Neues Scoring-Modell**
   306|
   307|Das aktuelle Scoring ist gut, aber ich würde es härter auf Zuschauerverhalten ausrichten.
   308|
   309|### **Empfohlenes 100-Punkte-Scoring**
   310|
   311|| Kriterium | Punkte | Frage |
   312|| ----- | ----- | ----- |
   313|| Problem Urgency | 15 | Spürt der Zuschauer sofort: „Das kenne ich“? |
   314|| First-Frame Clarity | 12 | Versteht man das Problem ohne Ton? |
   315|| Hook Curiosity | 12 | Gibt es einen offenen Loop? |
   316|| Mechanism Value | 12 | Erklärt das Video wirklich warum? |
   317|| Practical Payoff | 15 | Gibt es eine konkrete Regel/Vorlage? |
   318|| Retention Path | 10 | Passiert alle 2–4 Sekunden etwas Sinnvolles? |
   319|| Share/Save Potential | 10 | Würde man es speichern oder weiterleiten? |
   320|| Trust/Human Texture | 8 | Wirkt es getestet, echt, nicht generisch? |
   321|| Series Fit | 4 | Passt es in ein wiedererkennbares Format? |
   322|| Saturation Defense | 2 | Ist es nicht austauschbar? |
   323|
   324|### **Harte Blocker**
   325|
   326|Ein Kandidat darf nicht gerendert werden, wenn:
   327|
   328|* kein konkretes Problem existiert,
   329|* keine klare Lösung existiert,
   330|* der erste Frame nur Text ist,
   331|* der Hook wie ein generischer AI-Tipp klingt,
   332|* der Claim nicht belegbar ist,
   333|* das Video zu ähnlich zu den letzten 10 Videos ist,
   334|* es keinen Save-, Share- oder Follow-Grund gibt,
   335|* AI-generierte realistische Inhalte nicht korrekt markiert würden.
   336|
   337|---
   338|
   339|## **12\. AI-Disclosure und Plattform-Compliance einbauen**
   340|
   341|Das muss vor Auto-Publishing sauber gelöst werden.
   342|
   343|YouTube verlangt eine Offenlegung, wenn realistisch wirkende Inhalte wesentlich verändert oder synthetisch erzeugt wurden, zum Beispiel wenn reale Personen Dinge sagen/tun, die sie nicht getan haben, reale Ereignisse/Orte verändert werden oder realistische Szenen erzeugt werden, die nicht passiert sind. Für reine Produktionshilfe wie Skripte, Titel, Captions oder unrealistische/minimale Bearbeitungen ist nicht immer eine Offenlegung erforderlich. ([Google Hilfe](https://support.google.com/youtube/answer/14328491?co=GENIE.Platform%3DAndroid&hl=en)) TikTok verlangt Labels für AI-generierte oder wesentlich AI-bearbeitete Inhalte, wenn realistische Bilder, Audio oder Video enthalten sind; TikTok sagt außerdem, dass das Einschalten des AI-Labels die Distribution nicht beeinträchtigen soll, solange der Inhalt regelkonform ist. ([TikTok Support](https://support.tiktok.com/en/using-tiktok/creating-videos/ai-generated-content)) Meta arbeitet ebenfalls mit AI-Info-Labels und Kontext für AI-generierte oder bearbeitete Inhalte. ([about.fb.com](https://about.fb.com/news/2024/04/metas-approach-to-labeling-ai-generated-content-and-manipulated-media/))
   344|
   345|### **Empfehlung für den Bot**
   346|
   347|Fügt ein Modul hinzu:
   348|
   349|autoshorts.compliance.ai\_disclosure
   350|
   351|Es sollte pro Video entscheiden:
   352|
   353|requires\_ai\_label\_youtube: yes/no/unclear
   354|requires\_ai\_label\_tiktok: yes/no/unclear
   355|requires\_ai\_label\_instagram: yes/no/unclear
   356|reason:
   357|  "realistic synthetic person"
   358|  "realistic fake event"
   359|  "AI background only"
   360|  "script/caption assistance only"
   361|  "non-realistic animation"
   362|
   363|Bei `unclear` wird das Video blockiert oder manuell geprüft.
   364|
   365|---
   366|
   367|## **13\. Research-Layer vor Script-Layer setzen**
   368|
   369|Aktuell klingt die Pipeline so:
   370|
   371|Idee → Brief → Script → Candidate → Score → Render
   372|
   373|Ich würde davor eine **Research-/Trend-/Search-Schicht** setzen:
   374|
   375|Signal → Hypothese → Brief → Script → Candidate → Score → Render
   376|
   377|### **Neue Module**
   378|
   379|autoshorts.research.trend\_signals
   380|autoshorts.research.social\_search
   381|autoshorts.research.topic\_saturation
   382|autoshorts.claims.fact\_gate
   383|autoshorts.strategy.experiment
   384|
   385|### **Was diese Module tun sollten**
   386|
   387|**`trend_signals`**
   388|Sammelt manuell oder später per API Themen aus TikTok Creative Center, YouTube Search Suggest, Google Trends, Reddit, X, Newsletter, Kommentarspalten.
   389|
   390|**`social_search`**
   391|Erzeugt Plattform-native Suchphrasen. Nicht nur Hashtags, sondern Formulierungen, nach denen Leute wirklich suchen.
   392|
   393|**`topic_saturation`**
   394|Bewertet, ob das Thema schon komplett totgeritten ist.
   395|
   396|**`fact_gate`**
   397|Jeder faktische Claim braucht Quelle, Risikostufe und Freigabe.
   398|
   399|**`experiment`**
   400|Jedes Video bekommt eine Hypothese:
   401|
   402|“Testet, ob sichtbare Scam-Red-Flags mehr Saves erzeugen als AI-Prompt-Fixes.”
   403|
   404|Ohne Hypothese lernt der Bot nicht.
   405|
   406|---
   407|
   408|## **14\. Serien statt Einzelvideos**
   409|
   410|Schnell wachsende Creator wirken oft nicht deshalb konsistent, weil jedes Video gleich ist, sondern weil der Zuschauer erkennt:
   411|
   412|„Ah, dieser Kanal gibt mir genau diese Art von Aha-Moment.“
   413|
   414|Daher: Baut 5–7 wiedererkennbare Serien.
   415|
   416|### **Serie 1: AI Output Autopsy**
   417|
   418|**Format:** Schlechte AI-Antwort → warum sie falsch wirkt → eine Regel.
   419|**Hook:** “This AI answer sounds right. That’s the problem.”
   420|**Nutzen:** AI-Kompetenz ohne Prompt-Hype.
   421|

Use offset=421 to continue reading (showing 201-420 of 1030 lines)


   421|
   422|### **Serie 2: Digital Red Flags**
   423|
   424|**Format:** Eine digitale Situation sieht normal aus → ein Warnsignal entlarvt sie.
   425|**Hook:** “This email looks safe. The trap is in line three.”
   426|**Nutzen:** Sicherheit, Share-Wert, Alltagsschutz.
   427|
   428|### **Serie 3: One Broken Workflow**
   429|
   430|**Format:** Ein Mini-Workflow scheitert → fehlende Grenze/Entscheidung/Exception zeigen.
   431|**Hook:** “Your automation didn’t fail. You forgot the exception path.”
   432|**Nutzen:** Passt perfekt zu eurem technischen Know-how.
   433|
   434|### **Serie 4: Decision Design**
   435|
   436|**Format:** Menschen fragen Tools nach Antworten, obwohl sie Entscheidungen klären müssten.
   437|**Hook:** “Don’t ask AI what to do. Ask what would change your decision.”
   438|**Nutzen:** Hohe Qualität, weniger austauschbar.
   439|
   440|### **Serie 5: Attention Traps**
   441|
   442|**Format:** Ein normales digitales Verhalten wird als Mechanismus erklärt.
   443|**Hook:** “You didn’t lose focus. The app moved your next thought.”
   444|**Nutzen:** Psychologisch stark, aber bitte ohne medizinische Claims.
   445|
   446|### **Serie 6: Search Smarter**
   447|
   448|**Format:** TikTok/YouTube/Google/AI-Suche falsch vs. besser.
   449|**Hook:** “TikTok search is not Google. Stop typing like it is.”
   450|**Nutzen:** Sehr plattformnah, aktuell, nützlich.
   451|
   452|### **Serie 7: Worklife Systems**
   453|
   454|**Format:** Meetings, E-Mails, Notizen, Kalender, To-dos.
   455|**Hook:** “Your to-do list is not a plan. It’s a guilt archive.”
   456|**Nutzen:** Breite Zielgruppe, sehr shareable.
   457|
   458|---
   459|
   460|## **15\. Konkrete Pilotideen**
   461|
   462|Hier sind 20 Ideen, die besser sind als generische AI-Tipps:
   463|
   464|| Serie | Hook | Takeaway |
   465|| ----- | ----- | ----- |
   466|| AI Output Autopsy | “Your AI is guessing because you asked for the answer too early.” | Erst Fehlertyp definieren, dann Antwort verlangen. |
   467|| AI Output Autopsy | “This summary is useless because it has no decision target.” | Jede Zusammenfassung braucht eine Entscheidung. |
   468|| AI Output Autopsy | “Never trust an AI answer that cannot say what would prove it wrong.” | Lass AI Gegenbeweise nennen. |
   469|| Digital Red Flags | “This fake invoice looks normal. One detail gives it away.” | Prüfe Absender, Dringlichkeit, Zahlungsweg. |
   470|| Digital Red Flags | “A scam message does not need to fool you. It only needs to rush you.” | Tempo ist ein Warnsignal. |
   471|| Decision Design | “Your question is bad because it hides the decision.” | Formuliere die Entscheidung vor der Frage. |
   472|| Decision Design | “Stop asking ‘what should I do?’ Ask ‘what would change my mind?’” | Entscheidungskriterien statt Meinung. |
   473|| Workflow Teardown | “Your automation fails because it only knows the happy path.” | Jede Automation braucht einen Exception Path. |
   474|| Workflow Teardown | “Your note app is not a second brain. It is a storage unit.” | Notizen brauchen nächste Handlung. |
   475|| Worklife Systems | “Your meeting had no outcome because nobody named the owner.” | Entscheidung \+ Owner \+ Deadline. |
   476|| Attention Traps | “Your phone wins because it chooses the next question.” | Vor dem Öffnen Intent setzen. |
   477|| Attention Traps | “You are not distracted. You are under-briefed.” | Arbeitseinheit braucht Ziel, Grenze, Ende. |
   478|| Search Smarter | “TikTok search is not Google. Use problems, not keywords.” | Suche nach Situation \+ gewünschtem Ergebnis. |
   479|| Search Smarter | “YouTube search rewards clear intent. Type the mistake, not the topic.” | Problemphrase statt Oberbegriff. |
   480|| Consumer Traps | “This free trial is designed to outlive your memory.” | Kündigungsdatum sofort setzen. |
   481|| Consumer Traps | “The cheapest plan is often the most expensive decision.” | Kosten pro Nutzung prüfen. |
   482|| AI Trust | “AI confidence is not evidence.” | Confidence ≠ Quelle. |
   483|| AI Trust | “Ask AI for the missing context, not the final answer.” | Erst Lücken sammeln. |
   484|| Creator Systems | “Your content idea is not a video yet. It has no tension.” | Idee braucht Konflikt. |
   485|| Creator Systems | “A hook is not a title. It is a reason not to swipe.” | Hook \= Spannung in Sekunde 1\. |
   486|
   487|---
   488|
   489|## **16\. Visual-Optimierung: Motion muss Bedeutung haben**
   490|
   491|Euer Konzept sagt „Pattern Interrupt alle 1–2 Sekunden“. Vorsicht: Zu viele sinnlose Bewegungen wirken billig. Besser:
   492|
   493|Jede Bewegung muss den Mechanismus erklären.
   494|
   495|### **Visuelle Grammatik einführen**
   496|
   497|Legt feste visuelle Bausteine an:
   498|
   499|| Mechanismus | Visual |
   500|| ----- | ----- |
   501|| Fehlende Grenze | Offener Container, auslaufende Informationen |
   502|| Entscheidungspfad | Drei Routen, eine leuchtet auf |
   503|| AI rät | Nebel/unscharfe Karten, dann klare Constraint-Box |
   504|| Scam-Druck | Timer \+ rote Dringlichkeitslinie |
   505|| Overload | Stapel Karten → eine Regel sortiert |
   506|| Vorher/Nachher | Split-Screen mit markiertem Unterschied |
   507|| Exception Path | Workflow-Linie bricht, Umleitung erscheint |
   508|| Attention Trap | Cursor wird von App-Kacheln weggezogen |
   509|
   510|### **Neues Modul**
   511|
   512|autoshorts.rendering.visual\_grammar
   513|
   514|Dieses Modul sollte aus dem Script nicht nur Szenen machen, sondern **Mechanismus-Typen** erkennen:
   515|
   516|mechanism\_type:
   517|  missing\_boundary
   518|  false\_confidence
   519|  decision\_gap
   520|  urgency\_trap
   521|  exception\_path
   522|  attention\_capture
   523|  vague\_output\_standard
   524|  hidden\_cost
   525|
   526|Dann kann der Bot automatisch passende Motion-Templates wählen.
   527|
   528|---
   529|
   530|## **17\. Voice, TTS und „Human Texture“**
   531|
   532|EdgeTTS ist für die technische Phase okay. Aber ein komplett TTS-basierter Kanal kann schnell generisch wirken. Das bedeutet nicht, dass ihr sofort ein Gesicht zeigen müsst. Aber ihr braucht mehr menschliche Spuren.
   533|
   534|### **Optionen**
   535|
   536|**Minimum:**
   537|Jedes Video enthält ein echtes Beispiel, eine echte Mini-Situation oder einen glaubwürdigen Test.
   538|
   539|**Besser:**
   540|Der Bot erzeugt nicht nur Skripte, sondern auch „human proof notes“:
   541|
   542|tested\_on:
   543|  messy email
   544|  fake invoice example
   545|  meeting transcript sample
   546|  prompt before/after
   547|  automation flow
   548|
   549|**Noch besser:**
   550|Einmal pro Woche nehmt ihr 10–20 menschlich gesprochene Hook-/Outro-Lines auf und mischt diese mit TTS oder nutzt sie als Referenz für Stil. Nicht zwingend, aber langfristig vertrauensfördernd.
   551|
   552|### **Wichtige Regel**
   553|
   554|Kein Video sollte wirken wie:
   555|
   556|„Eine AI erklärt mit AI-Stimme einen AI-Tipp über AI.“
   557|
   558|Das ist genau der AI-Müll, von dem du weg willst.
   559|
   560|---
   561|
   562|## **18\. Caption-Strategie**
   563|
   564|Word-by-word Highlighting ist gut, aber nur wenn es perfekt synchron ist. Asynchrone Captions zerstören Professionalität.
   565|
   566|### **Empfehlung**
   567|
   568|Erstellt drei Caption-Modi:
   569|
   570|| Modus | Einsatz |
   571|| ----- | ----- |
   572|| Word-by-word | schnelle Hooks, TikTok-style, hohe Energie |
   573|| Phrase-by-phrase | komplexere Erklärungen, bessere Verständlichkeit |
   574|| Keyword-pulse | nur Schlüsselwörter leuchten auf, hochwertiger Look |
   575|
   576|Nicht jedes Video braucht den gleichen Caption-Stil. Ein „Scam Red Flag“-Video darf härter und schneller sein. Ein „Decision Design“-Video darf ruhiger und klarer wirken.
   577|
   578|### **Technische Priorität**
   579|
   580|Forced Alignment gehört in die Top-3-Prioritäten. Wenn Captions nicht sitzen, lieber weniger fancy rendern.
   581|
   582|---
   583|
   584|## **19\. Telegram Review Package verbessern**
   585|
   586|Das Approval-Paket sollte nicht nur zeigen, ob das Video gut aussieht. Es sollte dir helfen, strategisch zu entscheiden.
   587|
   588|### **Neues Review-Paket**
   589|
   590|Candidate ID:
   591|Version:
   592|Media Hash:
   593|Script Hash:
   594|
   595|Series:
   596|Audience Need:
   597|Viewer Emotion Before:
   598|Viewer Emotion After:
   599|
   600|Hook:
   601|First Frame Description:
   602|Open Loop:
   603|Mechanism:
   604|Takeaway:
   605|Save Reason:
   606|Share Reason:
   607|Follow Reason:
   608|
   609|Platform Fit:
   610|\- YouTube Shorts:
   611|\- TikTok:
   612|\- Instagram Reels:
   613|
   614|Claims:
   615|\- Claim 1: source / risk
   616|\- Claim 2: source / risk
   617|
   618|AI Disclosure:
   619|\- YouTube: yes/no/unclear
   620|\- TikTok: yes/no/unclear
   621|\- Instagram: yes/no/unclear
   622|
   623|Risks:
   624|\- Policy:
   625|\- Brand:
   626|\- Saturation:
   627|\- Repetition:
   628|
   629|Experiment Hypothesis:
   630|Expected Winning Metric:
   631|Approve exact version?
   632|
   633|Freigabe sollte nur für genau diese Version gelten.
   634|
   635|### **Approval-Kommandos**
   636|
   637|APPROVE CANDIDATE\_ID VERSION HASH
   638|REJECT CANDIDATE\_ID REASON
   639|REVISE CANDIDATE\_ID FIELD "requested change"
   640|BLOCK\_TOPIC TOPIC REASON
   641|
   642|---
   643|
   644|## **20\. Analytics muss früher kommen**
   645|
   646|In eurem Plan ist Analytics „später“. Ich würde es vorziehen. Nicht Auto-Publishing zuerst. Analytics zuerst.
   647|
   648|### **Warum?**
   649|
   650|Ohne Analytics weiß der Bot nicht, ob er besser wird. Dann optimiert er auf interne Scores, nicht auf echte Zuschauer.
   651|
   652|### **Minimal-Analytics für Phase 1**
   653|
   654|Nach jedem Post manuell erfassen:
   655|
   656|platform
   657|video\_id
   658|post\_time
   659|series\_id
   660|hook\_type
   661|topic\_cluster
   662|duration
   663|first\_frame\_type
   664|caption\_style
   665|voice\_style
   666|visual\_template
   667|cta\_type
   668|
   669|after\_1h:
   670|  views
   671|  likes
   672|  comments
   673|  shares
   674|  saves
   675|  follows
   676|
   677|after\_24h:
   678|  views
   679|  average\_watch\_time
   680|  completion\_rate
   681|

Use offset=681 to continue reading (showing 421-680 of 1030 lines)


   681|  likes
   682|  comments
   683|  shares
   684|  saves
   685|  follows
   686|
   687|after\_72h:
   688|  same metrics
   689|
   690|after\_7d:
   691|  same metrics
   692|
   693|YouTube-spezifisch solltet ihr zusätzlich **Shown in feed**, **Viewed vs swiped away / chose to view**, **Engaged views**, durchschnittliche Wiedergabedauer und durchschnittlichen Prozentwert erfassen, weil diese Kennzahlen direkt zeigen, ob Hook, Einstieg und Body funktionieren. ([Google Hilfe](https://support.google.com/youtube/answer/12942217?co=YOUTUBE._YTVideoType%3Dshorts&hl=en))
   694|
   695|### **Diagnose-Regeln**
   696|
   697|| Ergebnis | Interpretation | Aktion |
   698|| ----- | ----- | ----- |
   699|| Hohe View-vs-Swipe-Rate, niedrige Completion | Hook stark, Body schwach | Schneller zum Mechanismus, weniger Erklärung |
   700|| Niedrige View-vs-Swipe-Rate, hohe Completion | Inhalt gut, erster Frame schwach | Hook/Visual neu testen |
   701|| Hohe Completion, wenig Follows | Video nützlich, aber kein Serienversprechen | CTA und Serienbranding stärken |
   702|| Viele Saves, wenig Shares | Praktisch, aber nicht sozial aufgeladen | Mehr „send this to…“-Kontext |
   703|| Viele Shares, wenig Saves | Emotional/relatable, aber wenig Nutzen | Konkreteren Takeaway ergänzen |
   704|| Viele Views, keine Follows | Zu generisch oder nicht markenprägend | Format/Positionierung schärfen |
   705|
   706|---
   707|
   708|## **21\. 30-Tage-Testplan**
   709|
   710|Nicht 100 zufällige Videos. Lieber 30 kontrollierte Experimente.
   711|
   712|### **Struktur**
   713|
   714|* 5 Serien
   715|* je 6 Videos
   716|* je Serie 2 Hook-Typen testen
   717|* je Serie 2 Längen testen: 25–35 Sekunden und 40–55 Sekunden
   718|* tägliches Posting: 1 Video pro Plattform
   719|* pro Tag 3 Kandidaten generieren, aber nur 1 veröffentlichen
   720|
   721|### **Serien für den ersten Test**
   722|
   723|1. AI Output Autopsy
   724|2. Digital Red Flags
   725|3. Decision Design
   726|4. Workflow Teardown
   727|5. Attention Traps
   728|
   729|### **Erfolgsmessung**
   730|
   731|Nach 30 Videos nicht nur Views vergleichen. Entscheidend:
   732|
   733|* Follow/View-Rate,
   734|* Saves/View,
   735|* Shares/View,
   736|* Completion Rate,
   737|* Kommentare mit echter Problemresonanz,
   738|* Wiederholbarkeit des Formats.
   739|
   740|Das Gewinnerformat ist nicht zwingend das Video mit den meisten Views. Es ist das Format, das **wiederholbar Reichweite \+ Vertrauen \+ Follow-Grund** erzeugt.
   741|
   742|---
   743|
   744|## **22\. Technische Roadmap**
   745|
   746|### **Sprint 1: Strategie-Refactor**
   747|
   748|Neue oder erweiterte Module:
   749|
   750|autoshorts.strategy.audience\_need
   751|autoshorts.strategy.topic\_mix
   752|autoshorts.strategy.saturation
   753|autoshorts.strategy.experiment
   754|autoshorts.strategy.follow\_reason
   755|
   756|Aufgabe:
   757|
   758|* Content-Pillars erweitern.
   759|* AI-Anteil auf 30–40 % begrenzen.
   760|* Audience Need als Pflichtfeld einführen.
   761|* Save/Share/Follow Reason als Pflichtfelder einführen.
   762|* Hard Blocker für generischen AI-Slop einbauen.
   763|
   764|### **Sprint 2: Research & Claim Gate**
   765|
   766|autoshorts.research.trend\_signals
   767|autoshorts.research.social\_search
   768|autoshorts.claims.fact\_gate
   769|autoshorts.assets.provenance
   770|
   771|Aufgabe:
   772|
   773|* Trends und Suchphrasen sammeln.
   774|* Claims klassifizieren: Meinung, Erfahrung, belegbare Tatsache, riskanter Claim.
   775|* Quellenpflicht für faktische Aussagen.
   776|* Asset-Provenance speichern: Woher kommt welches Bild, Audio, Template?
   777|
   778|### **Sprint 3: Visual Grammar & Render Quality**
   779|
   780|autoshorts.rendering.visual\_grammar
   781|autoshorts.rendering.template\_fatigue
   782|autoshorts.rendering.first\_frame\_score
   783|
   784|Aufgabe:
   785|
   786|* Mechanismus-Typen erkennen.
   787|* Passende Motion-Templates wählen.
   788|* First Frame als eigenes Scoring-Objekt.
   789|* Template-Wiederholung blockieren, wenn zu ähnlich zu letzten Videos.
   790|
   791|### **Sprint 4: Audio/Subtitle Stabilisierung**
   792|
   793|autoshorts.audio.alignment\_qa
   794|autoshorts.audio.caption\_modes
   795|autoshorts.audio.voice\_quality\_score
   796|
   797|Aufgabe:
   798|
   799|* Forced Alignment stabilisieren.
   800|* Word-by-word, phrase-by-phrase und keyword-pulse Caption-Modi.
   801|* QA: Caption-Drift, Lesegeschwindigkeit, Safe-Zone, Zeilenlänge.
   802|
   803|### **Sprint 5: Analytics Feedback Loop**
   804|
   805|autoshorts.analytics.schema
   806|autoshorts.analytics.manual\_import
   807|autoshorts.analytics.performance\_diagnosis
   808|autoshorts.analytics.format\_memory
   809|
   810|Aufgabe:
   811|
   812|* Manuelle Performance-Erfassung.
   813|* Videoattribute speichern.
   814|* Diagnose-Regeln anwenden.
   815|* Nächste Ideen aus Gewinner-/Verlierer-Mustern ableiten.
   816|
   817|### **Sprint 6: Publishing Queue, noch ohne Auto-Posting**
   818|
   819|autoshorts.publishing.queue
   820|autoshorts.publishing.approval\_fingerprint
   821|autoshorts.publishing.audit\_log
   822|
   823|Aufgabe:
   824|
   825|* Upload-Pakete versionieren.
   826|* Freigaben unveränderbar speichern.
   827|* Plattform-Metadaten finalisieren.
   828|* Auto-Posting weiter deaktiviert lassen.
   829|
   830|### **Sprint 7: Plattformadapter**
   831|
   832|Erst jetzt:
   833|
   834|autoshorts.platforms.youtube
   835|autoshorts.platforms.tiktok
   836|autoshorts.platforms.instagram
   837|
   838|Aufgabe:
   839|
   840|* API-Anbindung.
   841|* Rate Limits.
   842|* Fehlerbehandlung.
   843|* Rollback/Retry.
   844|* Audit Logs.
   845|* Manuelle Notbremse.
   846|
   847|---
   848|
   849|## **23\. Neue No-go-Regeln gegen AI-Müll**
   850|
   851|Der Bot sollte zusätzlich blockieren:
   852|
   853|BLOCK if title contains:
   854|  "Top 5 AI tools"
   855|  "This AI tool will change your life"
   856|  "Make money with AI"
   857|  "Nobody is talking about"
   858|  "Unlock your potential"
   859|  "You won't believe"
   860|
   861|BLOCK if script has:
   862|  no concrete scene
   863|  no before/after
   864|  no mechanism
   865|  no testable rule
   866|  no human texture
   867|  no save/share/follow reason
   868|
   869|BLOCK if visual plan:
   870|  uses only generic stock/AI background
   871|  has no visible conflict in first frame
   872|  repeats same template too often
   873|  relies on AI-generated text inside images
   874|
   875|---
   876|
   877|## **24\. Hashtag- und Caption-Strategie**
   878|
   879|Die aktuellen Hashtags sind zu generisch:
   880|
   881|\#AI \#ChatGPT \#Productivity \#PromptEngineering \#AITips
   882|
   883|Die sind nicht falsch, aber stark umkämpft und wenig differenziert.
   884|
   885|### **Besser: Kombination aus Kategorie \+ Problem \+ Serie**
   886|
   887|Beispiel für AI Output Autopsy:
   888|
   889|\#ChatGPT \#AITips \#WorkflowDesign \#ProductivitySystems \#AIForWork
   890|
   891|Beispiel für Digital Red Flags:
   892|
   893|\#DigitalSafety \#ScamAwareness \#OnlineSafety \#WorkLife \#TechTips
   894|
   895|Beispiel für Attention Traps:
   896|
   897|\#FocusTips \#DigitalMinimalism \#ProductivitySystems \#WorkLife \#Attention
   898|
   899|Noch wichtiger als Hashtags sind aber **sprechende Captions und On-Screen-Keywords**. TikTok und Instagram nutzen Videoinformationen wie Captions, Sounds, Hashtags und Interaktionen zur Einordnung; bei Instagram gewinnen außerdem Keywords in Captions/Profilen und Shares/Sends stark an Bedeutung. ([newsroom.tiktok.com](https://newsroom.tiktok.com/en-us/how-tiktok-recommends-videos-for-you))
   900|
   901|---
   902|
   903|## **25\. Beispiel für ein verbessertes Video-Paket**
   904|
   905|### **Serie**
   906|
   907|AI Output Autopsy
   908|
   909|### **Hook**
   910|
   911|“Your AI summary is useless because it has no decision target.”
   912|
   913|### **First Frame**
   914|
   915|Split-Screen:
   916|
   917|Links: “Meeting transcript: 47 minutes”
   918|Rechts: “AI summary: Great discussion. Several ideas were mentioned.”
   919|Roter Stempel: “USELESS”
   920|
   921|### **Voiceover**
   922|
   923|“Your AI summary is not bad because the AI is stupid. It is bad because you gave it no decision to protect.
   924|
   925|If you ask, ‘summarize this meeting,’ AI compresses everything equally.
   926|
   927|But meetings are not equal. One sentence changes the next step. Ten sentences are just noise.
   928|
   929|So before the summary, add this:
   930|
   931|‘I need to decide whether we should launch this next week. Extract only what changes that decision: blockers, owners, risks, and next steps.’
   932|
   933|Now the output stops being a summary. It becomes decision evidence.
   934|
   935|Don’t ask AI to summarize. Ask it to protect the decision.”
   936|
   937|### **Takeaway**
   938|
   939|“Don’t ask for a summary. Ask for decision evidence.”
   940|
   941|

Use offset=941 to continue reading (showing 681-940 of 1030 lines)


   941|### **Save Reason**
   942|
   943|Der Zuschauer kann die Formulierung sofort kopieren.
   944|
   945|### **Share Reason**
   946|
   947|Jeder kennt schlechte Meeting-Zusammenfassungen.
   948|
   949|### **Follow Reason**
   950|
   951|Mehr Regeln für bessere digitale Arbeit.
   952|
   953|### **Visual Mechanism**
   954|
   955|Transcript → Compression Funnel → Wichtiges Detail fällt raus → Decision Target erscheint → Funnel sortiert nach Relevanz.
   956|
   957|---
   958|
   959|## **26\. Wichtigste Produktentscheidung: Der Bot ist kein Content-Automat, sondern ein Redaktionssystem**
   960|
   961|Die gefährlichste Richtung wäre:
   962|
   963|„JARVIS generiert möglichst viele Shorts.“
   964|
   965|Die richtige Richtung ist:
   966|
   967|„JARVIS generiert Hypothesen, testet Formate, verhindert Müll, dokumentiert Lernen und schlägt nur die stärksten Videos zur Freigabe vor.“
   968|
   969|Das macht euch langfristig überlegen.
   970|
   971|---
   972|
   973|## **27\. Priorisierte Handlungsempfehlung**
   974|
   975|### **Sofort ändern**
   976|
   977|1. **Positionierung erweitern:**
   978|   Von „AI-/Prompt-Tipps“ zu „digitale Mechanismen, die Alltag, Arbeit und Aufmerksamkeit reparieren“.
   979|2. **ContentBrief erweitern:**
   980|   Audience Need, Job-to-be-Done, Save Reason, Share Reason, Follow Reason, Series ID, Claim Risk, AI Disclosure.
   981|3. **Scoring neu gewichten:**
   982|   Problem, First Frame, Mechanismus, Payoff, Share/Save/Follower-Conversion stärker gewichten.
   983|4. **AI-Slop-Blocker einbauen:**
   984|   Keine generischen AI-Tool-Listen, keine Hype-Hooks, keine Videos ohne konkreten Fail.
   985|5. **Serienlogik einführen:**
   986|   AI Output Autopsy, Digital Red Flags, Decision Design, Workflow Teardown, Attention Traps.
   987|
   988|### **Als nächstes bauen**
   989|
   990|6. **Research-Layer vor Script-Layer:**
   991|   Trend-Signale, Suchintentionen, Topic-Saturation, Quellenprüfung.
   992|7. **Visual-Grammar-Modul:**
   993|   Motion nach Mechanismus-Typ, nicht nur Pattern Interrupt.
   994|8. **Analytics früh implementieren:**
   995|   Manuelle Datenerfassung reicht am Anfang. Ohne Analytics kein Lernen.
   996|9. **Telegram Review Package erweitern:**
   997|   Es muss Strategie, Risiko, Hypothese und Freigabe-Hash enthalten.
   998|10. **AI-Disclosure-Modul bauen:**
   999|    Plattformabhängig prüfen, ob AI-Label nötig ist.
  1000|
  1001|### **Später**
  1002|
  1003|11. **Auto-Publishing erst nach 30–60 getesteten Videos.**
  1004|12. **Publishing-Adapter nur mit Approval Fingerprint, Audit Log und Notbremse.**
  1005|
  1006|---
  1007|
  1008|## **28\. Mein klares Fazit**
  1009|
  1010|TrueTraceShorts sollte **nicht** der nächste AI-Tipp-Kanal werden. Das wäre zu eng und zu gesättigt.
  1011|
  1012|Die stärkere Chance ist:
  1013|
  1014|**Ein Kanal, der Menschen in einer überladenen digitalen Welt zeigt, warum Dinge schiefgehen — und welche kleine Systemregel sie wieder kontrollierbar macht.**
  1015|
  1016|AI bleibt ein wichtiger Teil davon, aber nicht das ganze Produkt.
  1017|
  1018|Der Bot sollte deshalb nicht auf maximale Automatisierung optimiert werden, sondern auf:
  1019|
  1020|* bessere Themenauswahl,
  1021|* stärkere Hooks,
  1022|* echte Zuschauerbedürfnisse,
  1023|* visuell sichtbare Mechanismen,
  1024|* weniger generische AI-Ästhetik,
  1025|* mehr menschliche Glaubwürdigkeit,
  1026|* harte Qualitätsgates,
  1027|* und einen Analytics-Loop, der aus echten Plattformdaten lernt.
  1028|
  1029|Wenn ihr das sauber umsetzt, baut ihr nicht nur einen Video-Generator. Ihr baut ein **lernendes Content-System**.
  1030|
  1031|


Explanation:
**Integrating ideas into documents**

I need to adapt and integrate ideas, possibly updating an existing business plan document. The user mentioned writing into a DOCX file, and I think I could also save a strategic integration document to Drive. I might need to clarify, but it seems like integrating into version 3 of the business plan along with updating outdated sections might be important. I’ll also consider updates related to user preferences and memory management as I work on this.
**Updating decision summaries and documentation**

I want to add a phrase about the "decision summary replacing previous narrower positioning." This seems adequate. I might also need to update the local repository documents since concept documents should be aligned there. I can create or update the strategic integration and business plan documents, considering the user’s request for Google Drive. If it's manageable, I'll verify everything, possibly downloading the latest version of the DOCX from Drive using Python-docx. Then, I’ll append the new section accordingly.

import os, subprocess, json, hashlib, re
from pathlib import Path
from datetime import date
from docx import Document
from docx.shared import Pt

os.environ['GOG_KEYRING_PASSWORD']='LammBitch30'
ACCOUNT='friday.uplink@gmail.com'
FOLDER_ID='1OT4_apbaFZcx9TnlfhAKacI_guCCEC2T'
PLAN_FILE_ID='16EZvrK2WEzqs1ZovaKroqzEghp6tJQQR'
INPUT_DOC_ID='1xRfaxLTc78r9NXbibu2NbK-6FLwh1ESU_1n49nEyPSk'
work=Path('/tmp/autoshortsbot_strategy_update')
work.mkdir(exist_ok=True)
plan=work/'AutoShortsBot_Businessplan_Content-Konzept_updated.docx'

def run(cmd):
    p=subprocess.run(cmd, env=os.environ.copy(), text=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, timeout=240)
    if p.returncode:
        raise RuntimeError(f"Command failed {p.returncode}: {' '.join(cmd[:6])}\n{p.stdout[-3000:]}")
    return p.stdout

# Download existing businessplan DOCX fresh from Drive.
run(['gog','-a',ACCOUNT,'drive','download',PLAN_FILE_ID,'--output',str(plan)])

doc=Document(str(plan))

def h1(t): doc.add_heading(t, level=1)
def h2(t): doc.add_heading(t, level=2)
def h3(t): doc.add_heading(t, level=3)
def para(t): doc.add_paragraph(t)
def bullets(items):
    for it in items:
        doc.add_paragraph(it, style='List Bullet')
def nums(items):
    for it in items:
        doc.add_paragraph(it, style='List Number')
def codeblock(t):
    p=doc.add_paragraph()
    r=p.add_run(t)
    r.font.name='Consolas'; r.font.size=Pt(9)

# Avoid duplicate append if script re-run.
all_text='\n'.join(p.text for p in doc.paragraphs)
if '14. Strategische Neuausrichtung nach Input-Dokument' not in all_text:
    doc.add_page_break()
    h1('14. Strategische Neuausrichtung nach Input-Dokument')
    para(f'Quelle: Google-Drive-Dokument „AutoShortsBot_Strategische neuausrichtung und Inputs“, geprüft und integriert am {date.today().strftime("%d.%m.%Y")}. Diese Sektion aktualisiert das Konzept: TrueTraceShorts wird nicht als weiterer AI-/Prompt-Tipp-Kanal verstanden, sondern als Redaktions- und Lernsystem für sichtbare digitale Alltagsmechanismen.')

    h2('14.1 Neues Gesamturteil')
    para('Die bestehende technische Architektur bleibt stark: approval-first, getrennte Review-/Render-/Publishing-Schichten, deterministic renderer-owned Overlays, Policy Gates, manuelle Freigabe und Qualitätsfokus. Der Engpass ist nicht primär Code, sondern Positionierung. Ein reiner AI-/Prompt-Tipp-Kanal wäre zu eng und in einem gesättigten Markt austauschbar.')
    para('Die neue Leitidee lautet: TrueTraceShorts erklärt versteckte Mechanismen hinter digitalen Problemen — AI, Arbeit, Aufmerksamkeit, Entscheidungen, Scams, Produktivität — und gibt pro Video eine konkrete Regel, die sofort hilft.')
    codeblock('Neues Kanalversprechen:\nTrace the hidden system. Fix the outcome.\n\nDeutsch erklärt:\nWir zeigen, warum digitale Dinge im Alltag schiefgehen — und welche kleine Systemregel sie repariert.')
    para('Die bisherige Tagline „Systems over prompts.“ bleibt verwendbar, wird aber breiter interpretiert: Nicht nur bessere Prompts, sondern bessere digitale Denk-, Arbeits- und Entscheidungssysteme.')

    h2('14.2 Neue Positionierung')
    bullets([
        'Nicht: „Wir erklären AI- und Prompt-Probleme.“',
        'Sondern: „Wir zeigen, warum digitale Dinge im Alltag schiefgehen — und welche kleine Systemregel sie repariert.“',
        'AI bleibt wichtig, aber ist nicht mehr das ganze Produkt.',
        'Ziel: In einer AI- und Algorithmus-Welt klarer denken, besser entscheiden und weniger Zeit verlieren.',
        'Der Bot ist kein Content-Automat, sondern ein Redaktionssystem: Hypothesen erzeugen, Formate testen, Müll verhindern, Lernen dokumentieren und nur starke Videos zur Freigabe vorschlagen.',
    ])

    h2('14.3 Neuer Content-Mix für die nächsten 60 Videos')
    bullets([
        '35 % AI That Actually Helps / AI Output Autopsy — bestehende Stärke nutzen, aber über echte Alltagsszenen statt Prompt-Hype.',
        '20 % Digital Self-Defense — Scams, Fake Reviews, Datenschutz, Phishing, AI-Halluzinationen; hoher Nutzwert und Share-Potenzial.',
        '20 % Attention & Decision Systems — Aufmerksamkeit, To-dos, Meetings, Entscheidungen, Overload.',
        '15 % Workflow Teardowns — warum Systeme bei E-Mail, Kalender, Notizen oder Automationen scheitern.',
        '10 % Algorithm & Social Search Literacy — Feeds, Suche, Empfehlungen und Content-Konsum verstehen.',
    ])
    para('Damit bleibt TrueTraceShorts klar positioniert, wird aber weniger eintönig und weniger abhängig von der überfüllten AI-Tipp-Nische.')

    h2('14.4 Neue wiedererkennbare Serien')
    series = [
        ('AI Output Autopsy', 'Schlechte AI-Antwort → warum sie plausibel, aber falsch ist → eine Regel. Hook-Beispiel: “This AI answer sounds right. That’s the problem.”'),
        ('Digital Red Flags', 'Eine digitale Situation sieht normal aus → ein Warnsignal entlarvt sie. Hook: “This email looks safe. The trap is in line three.”'),
        ('One Broken Workflow / Workflow Teardown', 'Ein Mini-Workflow scheitert → fehlende Grenze, Entscheidung oder Exception Path wird sichtbar. Hook: “Your automation didn’t fail. You forgot the exception path.”'),
        ('Decision Design', 'Menschen fragen Tools nach Antworten, obwohl sie Entscheidungen klären müssten. Hook: “Don’t ask AI what to do. Ask what would change your decision.”'),
        ('Attention Traps', 'Ein normales digitales Verhalten wird als Aufmerksamkeitsmechanismus erklärt, ohne medizinische Claims. Hook: “You didn’t lose focus. The app moved your next thought.”'),
        ('Search Smarter', 'TikTok/YouTube/Google/AI-Suche falsch vs. besser. Hook: “TikTok search is not Google. Stop typing like it is.”'),
        ('Worklife Systems', 'Meetings, E-Mails, Notizen, Kalender, To-dos. Hook: “Your to-do list is not a plan. It’s a guilt archive.”'),
    ]
    for name, desc in series:
        h3(name); para(desc)

    h2('14.5 Neues Standardformat: sichtbarer Fail → Mechanismus → Fix')
    nums([
        '0–1,5s: Sichtbarer Konflikt im ersten Frame. Nicht nur ein Satz, sondern ein Problem auf dem Screen.',
        '1,5–5s: Identifikation. Der Zuschauer erkennt: „Das kenne ich.“',
        '5–14s: Mechanismus. Warum passiert das wirklich?',
        '14–28s: Fix. Eine konkrete Regel, Vorlage oder Entscheidungshilfe.',
        '28–38s: Before/After. Vorher generisch/kaputt; nachher klar/nützlich.',
        'Letzte 2–4s: Merkbarer Satz mit Save-/Share-/Follow-Grund.',
    ])
    para('Beispiel-Takeaway: “Don’t ask for a summary. Ask for decision evidence.”')

    h2('14.6 Neues Pflichtschema je Video')
    bullets([
        'ein konkretes Alltagsproblem;',
        'eine sichtbare Szene;',
        'einen psychologischen oder technischen Mechanismus;',
        'eine einfache Regel;',
        'einen Before/After-Moment;',
        'einen Save- oder Share-Grund;',
        'einen Follow-Grund für die Serie.',
    ])
    para('Zusätzlich zu den bisherigen vier Fragen — Was läuft schief? Warum? Was ist die Korrektur? Welcher Satz bleibt? — müssen zwei neue Fragen beantwortet werden: Warum sollte der Zuschauer speichern/teilen? Warum sollte er genau diesem Kanal folgen?')

    h2('14.7 Erweiterung ContentBrief')
    para('Der ContentBrief wird strategischer. JARVIS soll vor dem Skript nicht nur ein Thema kennen, sondern Zuschauerbedürfnis, Emotion, Suchintention, Share-/Save-/Follow-Grund und Risikoprofil.')
    bullets([
        'audience_need: boredom, urgency, fear, competence, clarity, status, safety, curiosity.',
        'job_to_be_done: “When I …, I want to …, so I can …”.',
        'viewer_identity: beginner, creator, solo_founder, office_worker, student, parent, small_team, freelancer.',
        'viewer_emotion_before: confused, annoyed, overwhelmed, skeptical, curious, embarrassed, anxious.',
        'viewer_emotion_after: relieved, smarter, in_control, warned, motivated, equipped.',
        'share_reason: “I would send this to someone because …”.',
        'save_reason: “I would save this because …”.',
        'follow_reason: “I would follow this channel because …”.',
        'search_intent_phrase: problemnahe Plattform-Suchphrase, nicht nur Hashtag.',
        'series_id: ai_output_autopsy, digital_red_flags, decision_design, workflow_teardown, attention_traps, search_smarter, worklife_systems.',
        'saturation_risk: low, medium, high.',
        'human_texture: real example, mini case, tested prompt, screen recording, personal observation, source-based claim.',
        'claim_risk: low, medium, high.',
        'ai_disclosure_required: yes, no, unclear.',
    ])

    h2('14.8 Neues 100-Punkte-Scoring')
    bullets([
        'Problem Urgency — 15 Punkte: Spürt der Zuschauer sofort „Das kenne ich“?',
        'First-Frame Clarity — 12 Punkte: Versteht man das Problem ohne Ton?',
        'Hook Curiosity — 12 Punkte: Gibt es einen offenen Loop?',
        'Mechanism Value — 12 Punkte: Erklärt das Video wirklich warum?',
        'Practical Payoff — 15 Punkte: Gibt es eine konkrete Regel/Vorlage?',
        'Retention Path — 10 Punkte: Passiert alle 2–4 Sekunden etwas Sinnvolles?',
        'Share/Save Potential — 10 Punkte: Würde man es speichern oder weiterleiten?',
        'Trust/Human Texture — 8 Punkte: Wirkt es getestet, echt und nicht generisch?',
        'Series Fit — 4 Punkte: Passt es in ein wiedererkennbares Format?',
        'Saturation Defense — 2 Punkte: Ist es nicht austauschbar?',
    ])
    h3('Harte Blocker')
    bullets([
        'kein konkretes Problem;',
        'keine klare Lösung;',
        'erster Frame nur Text ohne sichtbaren Konflikt;',
        'Hook klingt wie generischer AI-Tipp;',
        'Claim ist nicht belegbar;',
        'Video ist zu ähnlich zu den letzten 10 Videos;',
        'kein Save-, Share- oder Follow-Grund;',
        'AI-generierte realistische Inhalte würden nicht korrekt markiert.',
    ])

    h2('14.9 Research-, Claim- und Compliance-Layer vor dem Script')
    codeblock('Signal → Hypothese → ContentBrief → ScriptDraft → VideoCandidate → Score → Render')
    para('Vor dem Script braucht der Bot eine Research-/Trend-/Search-Schicht. Jede Idee soll aus einem Signal oder einer Hypothese entstehen, nicht aus bloßer Themenassoziation.')
    bullets([
        'autoshorts.research.trend_signals — Themen aus TikTok Creative Center, YouTube Search Suggest, Google Trends, Reddit, X, Newsletter, Kommentarspalten.',
        'autoshorts.research.social_search — plattformnative Suchphrasen statt nur Hashtags.',
        'autoshorts.research.topic_saturation — bewertet, ob ein Thema totgeritten ist.',
        'autoshorts.claims.fact_gate — jeder faktische Claim bekommt Quelle, Risiko und Freigabe.',
        'autoshorts.strategy.experiment — jedes Video erhält eine Testhypothese.',
        'autoshorts.compliance.ai_disclosure — YouTube/TikTok/Instagram AI-Label-Prüfung: yes/no/unclear mit Begründung.',
    ])
    para('Bei unklarem AI-Disclosure-Status wird das Video blockiert oder manuell geprüft. Auto-Publishing bleibt deaktiviert, bis Approval-Fingerprints, Media Hashes, Claim-Dokumentation, AI-Disclosure und Analytics stabil sind.')

    h2('14.10 Visual Grammar statt sinnloser Pattern Interrupts')
    para('Motion muss Bedeutung haben. Jede Bewegung soll den Mechanismus erklären; reine Bewegung um der Bewegung willen wirkt billig.')
    bullets([
        'missing_boundary → offener Container, auslaufende Informationen.',
        'decision_gap → drei Routen, eine leuchtet auf.',
        'false_confidence → Nebel/unscharfe Karten, dann klare Constraint-Box.',
        'urgency_trap → Timer + rote Dringlichkeitslinie.',
        'overload → Stapel Karten → eine Regel sortiert.',
        'before_after → Split-Screen mit markiertem Unterschied.',
        'exception_path → Workflow-Linie bricht, Umleitung erscheint.',
        'attention_capture → Cursor/Gedanke wird von App-Kacheln weggezogen.',
        'hidden_cost → Gratis-/Billigpfad zeigt späteren Kostenpfad.',
    ])
    para('Neues Zielmodul: autoshorts.rendering.visual_grammar erkennt mechanism_type und wählt passende Motion Templates.')

    h2('14.11 Caption-, Voice- und Human-Texture-Update')
    bullets([
        'Word-by-word Highlighting bleibt stark, aber nur bei perfektem Sync. Forced Alignment gehört in die Top-3-Prioritäten.',
        'Drei Caption-Modi: word-by-word für schnelle Hooks; phrase-by-phrase für komplexere Erklärungen; keyword-pulse für hochwertigere ruhige Mechanism-Reveals.',
        'Kein Video soll wirken wie: „Eine AI erklärt mit AI-Stimme einen AI-Tipp über AI.“',
        'Jedes Video braucht Human Texture: echtes Beispiel, Mini-Situation, getesteter Prompt, Screen Recording, persönliche Beobachtung oder source-based Claim.',
        'Langfristig optional: 10–20 menschlich gesprochene Hook-/Outro-Lines pro Woche als Stilanker oder Hybrid-Audio.',
    ])

    h2('14.12 Telegram Review Package v2')
    para('Das Review Package soll strategische Entscheidungshilfe sein, nicht nur „sieht gut aus?“. Freigabe gilt nur für eine exakte Version mit Hash/Fingerprint.')
    bullets([
        'Candidate ID, Version, Media Hash, Script Hash.',
        'Series, Audience Need, Viewer Emotion Before/After.',
        'Hook, First Frame Description, Open Loop, Mechanism, Takeaway.',
        'Save Reason, Share Reason, Follow Reason.',
        'Platform Fit für YouTube Shorts, TikTok, Instagram Reels.',
        'Claims mit Quelle/Risiko.',
        'AI Disclosure je Plattform: yes/no/unclear.',
        'Risks: Policy, Brand, Saturation, Repetition.',
        'Experiment Hypothesis und Expected Winning Metric.',
    ])
    para('Neue Approval-Kommandos als Zielbild: APPROVE CANDIDATE_ID VERSION HASH; REJECT CANDIDATE_ID REASON; REVISE CANDIDATE_ID FIELD "requested change"; BLOCK_TOPIC TOPIC REASON.')

    h2('14.13 Analytics früher einführen')
    para('Analytics darf nicht erst nach Publishing-Automation kommen. Ohne Analytics optimiert der Bot auf interne Scores statt auf echtes Zuschauerverhalten.')
    bullets([
        'Manuelle Phase-1-Erfassung nach jedem Post: platform, video_id, post_time, series_id, hook_type, topic_cluster, duration, first_frame_type, caption_style, voice_style, visual_template, CTA type.',
        'Messzeitpunkte: 1h, 24h, 72h, 7d.',
        'Metriken: views, likes, comments, shares, saves, follows, average watch time, completion rate.',
        'YouTube zusätzlich: Shown in feed, Viewed vs. swiped away / chose to view, Engaged views, durchschnittliche Wiedergabedauer, durchschnittlicher Prozentwert.',
    ])
    h3('Diagnose-Regeln')
    bullets([
        'Hohe View-vs-Swipe-Rate, niedrige Completion → Hook stark, Body schwach: schneller zum Mechanismus.',
        'Niedrige View-vs-Swipe-Rate, hohe Completion → Inhalt gut, erster Frame schwach: Hook/Visual neu testen.',
        'Hohe Completion, wenig Follows → nützlich, aber kein Serienversprechen: CTA und Serienbranding stärken.',
        'Viele Saves, wenig Shares → praktisch, aber nicht sozial aufgeladen: „send this to …“-Kontext ergänzen.',
        'Viele Shares, wenig Saves → relatable, aber wenig Nutzen: konkreteren Takeaway ergänzen.',
        'Viele Views, keine Follows → zu generisch oder nicht markenprägend: Format/Positionierung schärfen.',
    ])

    h2('14.14 30-Tage-Testplan')
    bullets([
        '30 kontrollierte Experimente statt 100 zufällige Videos.',
        '5 Serien × 6 Videos.',
        'Je Serie 2 Hook-Typen testen.',
        'Je Serie 2 Längen testen: 25–35 Sekunden und 40–55 Sekunden.',
        'Pro Tag 3 Kandidaten generieren, aber nur 1 veröffentlichen.',
        'Serien für Test 1: AI Output Autopsy, Digital Red Flags, Decision Design, Workflow Teardown, Attention Traps.',
        'Erfolg nicht nur über Views messen, sondern Follow/View, Saves/View, Shares/View, Completion, echte Problemresonanz in Kommentaren und Wiederholbarkeit.',
    ])

    h2('14.15 Technische Roadmap nach Neuausrichtung')
    h3('Sprint 1: Strategie-Refactor')
    bullets(['Content-Pillars erweitern.', 'AI-Anteil auf 30–40 % begrenzen.', 'Audience Need als Pflichtfeld.', 'Save/Share/Follow Reason als Pflichtfelder.', 'Hard Blocker für generischen AI-Slop.'])
    h3('Sprint 2: Research & Claim Gate')
    bullets(['Trend- und Search-Signale sammeln.', 'Claims klassifizieren: Meinung, Erfahrung, belegbare Tatsache, riskanter Claim.', 'Quellenpflicht für Fakten.', 'Asset-Provenance speichern.'])
    h3('Sprint 3: Visual Grammar & Render Quality')
    bullets(['Mechanismus-Typen erkennen.', 'Passende Motion Templates wählen.', 'First Frame als eigenes Scoring-Objekt.', 'Template-Wiederholung blockieren.'])
    h3('Sprint 4: Audio/Subtitle Stabilisierung')
    bullets(['Forced Alignment stabilisieren.', 'Caption-Modi: word-by-word, phrase-by-phrase, keyword-pulse.', 'QA: Caption Drift, Lesegeschwindigkeit, Safe-Zone, Zeilenlänge.'])
    h3('Sprint 5: Analytics Feedback Loop')
    bullets(['Manuelle Performance-Erfassung.', 'Videoattribute speichern.', 'Diagnose-Regeln anwenden.', 'Nächste Ideen aus Gewinner-/Verlierer-Mustern ableiten.'])
    h3('Sprint 6: Publishing Queue ohne Auto-Posting')
    bullets(['Upload-Pakete versionieren.', 'Freigaben unveränderbar speichern.', 'Plattform-Metadaten finalisieren.', 'Auto-Posting bleibt deaktiviert.'])
    h3('Sprint 7: Plattformadapter')
    bullets(['Erst nach 30–60 getesteten Videos.', 'API-Anbindung, Rate Limits, Fehlerbehandlung, Audit Logs, Rollback/Retry und manuelle Notbremse.'])

    h2('14.16 Neue No-go-Regeln gegen AI-Müll')
    bullets([
        'Blockiere Titel wie „Top 5 AI tools“, „This AI tool will change your life“, „Make money with AI“, „Nobody is talking about“, „Unlock your potential“, „You won’t believe“.',
        'Blockiere Scripts ohne konkrete Szene, Before/After, Mechanismus, testbare Regel, Human Texture oder Save/Share/Follow Reason.',
        'Blockiere Visual Plans mit nur generischem Stock-/AI-Hintergrund, ohne sichtbaren First-Frame-Konflikt, mit zu häufiger Template-Wiederholung oder AI-generiertem Text im Bild.',
    ])

    h2('14.17 Aktualisierte Hashtag- und Caption-Strategie')
    para('Hashtags sollen Kategorie + Problem + Serie kombinieren. Generische Hashtags wie #AI #ChatGPT #Productivity sind nicht falsch, aber stark umkämpft und wenig differenziert.')
    bullets([
        'AI Output Autopsy: #ChatGPT #AITips #WorkflowDesign #ProductivitySystems #AIForWork.',
        'Digital Red Flags: #DigitalSafety #ScamAwareness #OnlineSafety #WorkLife #TechTips.',
        'Attention Traps: #FocusTips #DigitalMinimalism #ProductivitySystems #WorkLife #Attention.',
    ])
    para('Noch wichtiger als Hashtags sind sprechende Captions und On-Screen-Keywords, weil Plattformen Videoinformationen und Interaktionen zur Einordnung nutzen.')

    h2('14.18 Beispielpaket nach neuer Logik')
    h3('AI Output Autopsy: Meeting Summary')
    para('Hook: “Your AI summary is useless because it has no decision target.”')
    para('First Frame: Split-Screen — links Meeting transcript: 47 minutes; rechts AI summary: “Great discussion. Several ideas were mentioned.”; roter Stempel: USELESS.')
    para('Voiceover-Kern: “Your AI summary is not bad because the AI is stupid. It is bad because you gave it no decision to protect. If you ask, ‘summarize this meeting,’ AI compresses everything equally. But meetings are not equal. One sentence changes the next step. Ten sentences are just noise. Before the summary, add: ‘I need to decide whether we should launch this next week. Extract only what changes that decision: blockers, owners, risks, and next steps.’ Now the output stops being a summary. It becomes decision evidence.”')
    bullets([
        'Takeaway: “Don’t ask for a summary. Ask for decision evidence.”',
        'Save Reason: Zuschauer kann die Formulierung sofort kopieren.',
        'Share Reason: Jeder kennt schlechte Meeting-Zusammenfassungen.',
        'Follow Reason: Mehr Regeln für bessere digitale Arbeit.',
        'Visual Mechanism: Transcript → Compression Funnel → wichtiges Detail fällt raus → Decision Target erscheint → Funnel sortiert nach Relevanz.',
    ])

    h2('14.19 Aktualisiertes Fazit')
    para('TrueTraceShorts soll kein AI-Tipp-Kanal werden. Die stärkere Chance ist ein Kanal, der Menschen in einer überladenen digitalen Welt zeigt, warum Dinge schiefgehen — und welche kleine Systemregel sie wieder kontrollierbar macht. Der Bot optimiert deshalb nicht auf maximale Automatisierung, sondern auf bessere Themenauswahl, stärkere Hooks, echte Zuschauerbedürfnisse, sichtbare Mechanismen, weniger generische AI-Ästhetik, mehr menschliche Glaubwürdigkeit, harte Qualitätsgates und einen Analytics-Loop aus echten Plattformdaten.')

# Save and replace existing Drive file.
updated=work/'AutoShortsBot_Businessplan_Content-Konzept_v3_neuausrichtung.docx'
doc.save(str(updated))
sha=hashlib.sha256(updated.read_bytes()).hexdigest()
run(['gog','-a',ACCOUNT,'drive','upload',str(updated),'--replace',PLAN_FILE_ID,'--name','AutoShortsBot_Businessplan_Content-Konzept.docx','--mime-type','application/vnd.openxmlformats-officedocument.wordprocessingml.document','--json','--results-only'])
meta=json.loads(run(['gog','-a',ACCOUNT,'drive','get',PLAN_FILE_ID,'--json','--results-only']))
ls=json.loads(run(['gog','-a',ACCOUNT,'drive','ls','--parent',FOLDER_ID,'--max','50','--json','--results-only']))
verified=any(i.get('id')==PLAN_FILE_ID for i in ls)
# Verify doc text locally
check_doc=Document(str(updated)); text='\n'.join(p.text for p in check_doc.paragraphs)
checks=['14. Strategische Neuausrichtung nach Input-Dokument','Trace the hidden system. Fix the outcome.','AI Output Autopsy','Digital Red Flags','Neues 100-Punkte-Scoring','30-Tage-Testplan']
print(json.dumps({
 'source_doc_id': INPUT_DOC_ID,
 'updated_file_id': PLAN_FILE_ID,
 'updated_file_link': meta.get('webViewLink') or f'https://drive.google.com/file/d/{PLAN_FILE_ID}/view',
 'folder_id': FOLDER_ID,
 'verified_in_folder': verified,
 'sha256': sha,
 'paragraphs': len(check_doc.paragraphs),
 'checks_present': all(c in text for c in checks),
 'missing_checks': [c for c in checks if c not in text]
}, ensure_ascii=False, indent=2))


Output:
{
  "source_doc_id": "1xRfaxLTc78r9NXbibu2NbK-6FLwh1ESU_1n49nEyPSk",
  "updated_file_id": "16EZvrK2WEzqs1ZovaKroqzEghp6tJQQR",
  "updated_file_link": "https://docs.google.com/document/d/16EZvrK2WEzqs1ZovaKroqzEghp6tJQQR/edit?usp=drivesdk&ouid=107742912849201648496&rtpof=true&sd=true",
  "folder_id": "1OT4_apbaFZcx9TnlfhAKacI_guCCEC2T",
  "verified_in_folder": true,
  "sha256": "c18a2257b49cef2fea5ae06619dccae3833d6d425c17c02d510c3f66d0163123",
  "paragraphs": 483,
  "checks_present": true,
  "missing_checks": []
}


memory

AutoShorts: TrueTraceShorts; manual approval/posting. Previews DE, finals EN. Style: motion-led mechanism reveal, beginner-friendly examples; word-by-word subtitle highlight tightly synced to VO; end with clear solution/takeaway/fazit. No public JARVIS/user/collab, politics, legal/moral/lawbreaking.

AutoShorts/TrueTraceShorts: manual approval/posting; previews DE, finals EN. Positioning: hidden digital mechanisms, not generic AI tips; AI only ~30–40%. Format: visible fail→mechanism→fix→takeaway; sync captions tightly. No public JARVIS/user/collab, politics, legal/moral/lawbreaking.


**Voice preference:** de-DE-KillianNeural (German male voice, natural/clear) — default for all TTS output

**Language:** Deutsch mit englischen Fachbegriffen

Kommunikationspräferenzen: **Sprachnachricht → Antwort per Sprachnachricht**

Kommunikationspräferenzen: **Textnachricht → Antwort per Text**

Health advisor role: consolidate labs/clinical reports/YAZIO/daily health email/symptoms/events into dashboards/reports; lab extraction requires 4-eyes review before values are confirmed.

Telegram topic Health-Med: only medical strategy/Behçet/Major Vessel Disease/thrombosis/meds/nutrition/symptoms/labs/doctor questions; health system scripts/data models go to Health-Tech.

Finance/Grocery: no real amounts/IDs/API keys in chat; credentials via runtime files; no DB/CSV/keys/reports in Git/frontend; backups+audit; Preview→Confirm→Audit; no fake prices/buttons; OpenFIGI never show/store; never auto-book; grocery provider calls explicit/cache-first.

AutoShorts/TrueTraceShorts: manual approval/posting; previews DE, finals EN. Positioning: hidden digital mechanisms, not generic AI tips; AI only ~30–40%. Format: visible fail→mechanism→fix→takeaway; sync captions tightly. No public JARVIS/user/collab, politics, legal/moral/lawbreaking.

Entry replaced.


Erledigt, Sir.

Ich habe das neue Google-Drive-Dokument **„AutoShortsBot_Strategische neuausrichtung und Inputs“** im Ordner **AutoShortsBot** geprüft und die wertvollen Punkte in unseren bestehenden Businessplan / Konzeptplan integriert.

Aktualisierte Datei bleibt dieselbe:

[AutoShortsBot_Businessplan_Content-Konzept.docx öffnen](https://docs.google.com/document/d/16EZvrK2WEzqs1ZovaKroqzEghp6tJQQR/edit?usp=drivesdk&ouid=107742912849201648496&rtpof=true&sd=true)

## Integriert wurde die strategische Neuausrichtung

Kernänderung:

**Alt:** TrueTraceShorts als AI-/Prompt-Tipp-Kanal.
**Neu:** TrueTraceShorts als Kanal für **versteckte digitale Alltagsmechanismen**.

Neues Leitversprechen:

> **Trace the hidden system. Fix the outcome.**

Deutsch:

> Wir zeigen, warum digitale Dinge im Alltag schiefgehen — und welche kleine Systemregel sie repariert.

Damit bleibt **„Systems over prompts“** erhalten, aber der Kanal wird breiter und weniger austauschbar. AI bleibt wichtig, aber nicht mehr das ganze Produkt. Sehr vernünftig. Der Markt braucht in der Tat keinen weiteren „Top 5 ChatGPT Hacks“-Friedhof.

## Neu im Konzept ergänzt

- **Neue Positionierung**
  - weg von reinem AI-Tipp-Kanal
  - hin zu digitalen Mechanismen:
    - AI
    - Arbeit
    - Aufmerksamkeit
    - Entscheidungen
    - Scams
    - Produktivität
    - Workflows
    - Social Search / Algorithm Literacy

- **Neuer Content-Mix**
  - 35 % AI That Actually Helps / AI Output Autopsy
  - 20 % Digital Self-Defense
  - 20 % Attention & Decision Systems
  - 15 % Workflow Teardowns
  - 10 % Algorithm & Social Search Literacy

- **Neue Serienlogik**
  - AI Output Autopsy
  - Digital Red Flags
  - One Broken Workflow / Workflow Teardown
  - Decision Design
  - Attention Traps
  - Search Smarter
  - Worklife Systems

- **Neues Standardformat**
  - sichtbarer Fail
  - Identifikation
  - Mechanismus
  - Fix
  - Before/After
  - merkbarer Takeaway

- **Erweiterter ContentBrief**
  - audience_need
  - job_to_be_done
  - viewer_identity
  - emotion_before / emotion_after
  - save_reason
  - share_reason
  - follow_reason
  - search_intent_phrase
  - series_id
  - saturation_risk
  - human_texture
  - claim_risk
  - ai_disclosure_required

- **Neues 100-Punkte-Scoring**
  - Problem Urgency
  - First-Frame Clarity
  - Hook Curiosity
  - Mechanism Value
  - Practical Payoff
  - Retention Path
  - Share/Save Potential
  - Trust/Human Texture
  - Series Fit
  - Saturation Defense

- **Neue harte Blocker**
  - keine generischen AI-Tool-Listen
  - keine Hype-Hooks
  - keine Videos ohne konkreten Fail
  - keine Scripts ohne Before/After
  - keine Visuals ohne sichtbaren First-Frame-Konflikt
  - keine ungeprüften Claims
  - keine AI-Disclosure-Unklarheit vor Publishing

- **Research-Layer vor Script-Layer**
  - Signal → Hypothese → Brief → Script → Candidate → Score → Render
  - geplante Module:
    - `autoshorts.research.trend_signals`
    - `autoshorts.research.social_search`
    - `autoshorts.research.topic_saturation`
    - `autoshorts.claims.fact_gate`
    - `autoshorts.strategy.experiment`
    - `autoshorts.compliance.ai_disclosure`

- **Visual Grammar**
  - Motion soll Bedeutung haben, nicht nur zappeln.
  - Mechanismus-Typen wie:
    - missing_boundary
    - false_confidence
    - decision_gap
    - urgency_trap
    - exception_path
    - attention_capture
    - hidden_cost

- **Caption-/Voice-Update**
  - Forced Alignment als Top-Priorität
  - drei Caption-Modi:
    - word-by-word
    - phrase-by-phrase
    - keyword-pulse
  - mehr Human Texture, damit es nicht wirkt wie:
    > „Eine AI erklärt mit AI-Stimme einen AI-Tipp über AI.“

- **Telegram Review Package v2**
  - Candidate ID
  - Version
  - Media Hash
  - Script Hash
  - Series
  - Audience Need
  - Hook
  - First Frame
  - Mechanism
  - Takeaway
  - Save/Share/Follow Reason
  - Claims
  - AI Disclosure
  - Risks
  - Experiment Hypothesis
  - Expected Winning Metric

- **Analytics früher**
  - nicht erst nach Auto-Publishing
  - manuelle Phase-1-Erfassung nach jedem Post
  - Metriken:
    - Views
    - Completion
    - Saves
    - Shares
    - Follows/View
    - View-vs-Swipe
    - Average Watch Time
    - Kommentare mit echter Problemresonanz

- **30-Tage-Testplan**
  - 30 kontrollierte Experimente
  - 5 Serien × 6 Videos
  - pro Tag 3 Kandidaten generieren
  - nur 1 veröffentlichen
  - Gewinner nicht nach Views allein, sondern nach:
    - Follow/View
    - Saves/View
    - Shares/View
    - Completion
    - Wiederholbarkeit des Formats

## Wichtigster aktualisierter Entscheid

Der Bot ist künftig nicht als **Content-Automat** definiert, sondern als:

> **lernendes Redaktionssystem**

Also:

- Hypothesen erzeugen
- Formate testen
- Müll blockieren
- Lernen dokumentieren
- nur starke Videos zur Freigabe vorschlagen

Ich habe diese Neuausrichtung außerdem dauerhaft in meiner Erinnerung zum AutoShorts-Projekt aktualisiert.

Explanation:
**Updating project documentation**

I think I need to update the local project documentation. Since there might be changes in memory, I'm feeling like it's almost ready. However, it seems like "adaptiere bzw. integriere" could use an update in the business plan document. It's good to mention that the source document was reviewed, but I don't need to bring up any secrets. I should keep it concise and ensure there's no table, especially since it's a final version in German.


[M G] JARVIS, fahre jetzt mit AutoShortsBot nicht mit weiterer Konzeptarbeit fort, sondern starte Sprint 1: Strategic Spine Refactor.

Ziel: Die neue TrueTraceShorts-Strategie muss jetzt in Code, Datenmodelle, Quality Gates, Review Packages und Tests übersetzt werden.

Bitte gehe exakt so vor:

1. Erstelle einen sauberen Projektstatus:

* git status
* aktueller Branch
* pytest Ergebnis
* kurze Liste der betroffenen Module
* kurze Einschätzung, welche bestehenden Tests/Modelle angepasst werden müssen

2. Lege einen neuen Arbeitsbranch an:
   strategy-refactor-v2

3. Implementiere oder erweitere die Kernmodelle:

* ContentBriefV2
* VideoCandidateV2
* StrategyScoreV2
* ReviewPackageV2
* ExperimentHypothesis
* ClaimRisk
* AIDisclosureDecision
* SeriesRegistry
* AudienceNeed
* ViewerEmotion
* SaturationRisk
* HumanTexture

4. Mache folgende Felder für neue Kandidaten verpflichtend:

* series_id
* audience_need
* job_to_be_done
* viewer_identity
* emotion_before
* emotion_after
* save_reason
* share_reason
* follow_reason
* search_intent_phrase
* saturation_risk
* human_texture
* claim_risk
* ai_disclosure_required
* experiment_hypothesis
* expected_winning_metric

5. Implementiere harte Quality Gates:
   Ein Kandidat darf nicht renderbar sein, wenn eines davon fehlt:

* konkreter Fail
* sichtbarer First-Frame-Konflikt
* Mechanismus
* Fix/Regel
* Before/After
* merkbarer Takeaway
* Save Reason
* Share Reason
* Follow Reason
* Series Fit
* Claim Risk Bewertung
* AI Disclosure Entscheidung

6. Implementiere Anti-AI-Slop-Blocker:
   Blockiere generische Themen/Hooks wie:

* Top 5 AI Tools
* Make money with AI
* This AI tool will change your life
* Nobody talks about this
* generischer AI-Hype
* Videos ohne konkretes Beispiel
* Videos ohne sichtbaren Mechanismus
* Videos mit reiner Slideshow/Textkarten-Struktur

7. Baue Review Package v2 für Telegram:
   Es muss enthalten:

* Candidate ID
* Version
* Script Hash
* Media Hash, falls vorhanden
* Series
* Audience Need
* Viewer Emotion Before/After
* Hook
* First Frame
* Visible Fail
* Mechanism
* Fix
* Before/After
* Takeaway
* Save Reason
* Share Reason
* Follow Reason
* Claims
* Claim Risk
* AI Disclosure
* Platform Fit
* Risks
* Experiment Hypothesis
* Expected Winning Metric
* Approval Command

8. Erstelle Tests für:

* neue Pflichtfelder
* neue Quality Gates
* Anti-AI-Slop-Blocker
* ReviewPackageV2
* Approval Commands
* ScoreV2
* SeriesRegistry

9. Danach generiere noch keine finalen Videos. Erstelle nur 5 Beispiel-Kandidaten, je einen aus:

* AI Output Autopsy
* Digital Red Flags
* Decision Design
* Workflow Teardown
* Attention Traps

10. Gib mir am Schluss:

* geänderte Dateien
* pytest Ergebnis
* 5 Beispiel-Review-Packages
* offene Punkte
* Vorschlag für Sprint 2

Wichtig:
Kein Auto-Posting.
Keine Plattform-API.
Keine Massenproduktion.
Keine finalen Renderings vor stabilen Gates.
Der Bot soll jetzt als lernendes Redaktionssystem aufgebaut werden, nicht als blinder Content-Automat.


Explanation:
**Planning development skills**

I need to act on the user's request. It seems I should focus on software development skills, particularly in test-driven development and maybe look into social dynamics here. I need to load relevant information, especially about test-driven development and GitHub's pull request workflow. Since the user mentions branching and tests, I'll want to ensure I address those areas specifically. It's about being systematic in my approach!


test-driven-development

---
name: test-driven-development
description: "TDD: enforce RED-GREEN-REFACTOR, tests before code."
version: 1.1.0
author: Hermes Agent (adapted from obra/superpowers)
license: MIT
platforms: [linux, macos, windows]
metadata:
  hermes:
    tags: [testing, tdd, development, quality, red-green-refactor]
    related_skills: [systematic-debugging, writing-plans, subagent-driven-development]
---

# Test-Driven Development (TDD)

## Overview

Write the test first. Watch it fail. Write minimal code to pass.

**Core principle:** If you didn't watch the test fail, you don't know if it tests the right thing.

**Violating the letter of the rules is violating the spirit of the rules.**

## When to Use

**Always:**
- New features
- Bug fixes
- Refactoring
- Behavior changes

**Exceptions (ask the user first):**
- Throwaway prototypes
- Generated code
- Configuration files

Thinking "skip TDD just this once"? Stop. That's rationalization.

## The Iron Law

```
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
```

Write code before the test? Delete it. Start over.

**No exceptions:**
- Don't keep it as "reference"
- Don't "adapt" it while writing tests
- Don't look at it
- Delete means delete

Implement fresh from tests. Period.

## Red-Green-Refactor Cycle

### RED — Write Failing Test

Write one minimal test showing what should happen.

**Good test:**
```python
def test_retries_failed_operations_3_times():
    attempts = 0
    def operation():
        nonlocal attempts
        attempts += 1
        if attempts < 3:
            raise Exception('fail')
        return 'success'

    result = retry_operation(operation)

    assert result == 'success'
    assert attempts == 3
```
Clear name, tests real behavior, one thing.

**Bad test:**
```python
def test_retry_works():
    mock = MagicMock()
    mock.side_effect = [Exception(), Exception(), 'success']
    result = retry_operation(mock)
    assert result == 'success'  # What about retry count? Timing?
```
Vague name, tests mock not real code.

**Requirements:**
- One behavior per test
- Clear descriptive name ("and" in name? Split it)
- Real code, not mocks (unless truly unavoidable)
- Name describes behavior, not implementation

### Verify RED — Watch It Fail

**MANDATORY. Never skip.**

```bash
# Use terminal tool to run the specific test
pytest tests/test_feature.py::test_specific_behavior -v
```

Confirm:
- Test fails (not errors from typos)
- Failure message is expected
- Fails because the feature is missing

**Test passes immediately?** You're testing existing behavior. Fix the test.

**Test errors?** Fix the error, re-run until it fails correctly.

### GREEN — Minimal Code

Write the simplest code to pass the test. Nothing more.

**Good:**
```python
def add(a, b):
    return a + b  # Nothing extra
```

**Bad:**
```python
def add(a, b):
    result = a + b
    logging.info(f"Adding {a} + {b} = {result}")  # Extra!
    return result
```

Don't add features, refactor other code, or "improve" beyond the test.

**Cheating is OK in GREEN:**
- Hardcode return values
- Copy-paste
- Duplicate code
- Skip edge cases

We'll fix it in REFACTOR.

### Verify GREEN — Watch It Pass

**MANDATORY.**

```bash
# Run the specific test
pytest tests/test_feature.py::test_specific_behavior -v

# Then run ALL tests to check for regressions
pytest tests/ -q
```

Confirm:
- Test passes
- Other tests still pass
- Output pristine (no errors, warnings)

**Test fails?** Fix the code, not the test.

**Other tests fail?** Fix regressions now.

### REFACTOR — Clean Up

After green only:
- Remove duplication
- Improve names
- Extract helpers
- Simplify expressions

Keep tests green throughout. Don't add behavior.

**If tests fail during refactor:** Undo immediately. Take smaller steps.

### Repeat

Next failing test for next behavior. One cycle at a time.

## Why Order Matters

**"I'll write tests after to verify it works"**

Tests written after code pass immediately. Passing immediately proves nothing:
- Might test the wrong thing
- Might test implementation, not behavior
- Might miss edge cases you forgot
- You never saw it catch the bug

Test-first forces you to see the test fail, proving it actually tests something.

**"I already manually tested all the edge cases"**

Manual testing is ad-hoc. You think you tested everything but:
- No record of what you tested
- Can't re-run when code changes
- Easy to forget cases under pressure
- "It worked when I tried it" ≠ comprehensive

Automated tests are systematic. They run the same way every time.

**"Deleting X hours of work is wasteful"**

Sunk cost fallacy. The time is already gone. Your choice now:
- Delete and rewrite with TDD (high confidence)
- Keep it and add tests after (low confidence, likely bugs)

The "waste" is keeping code you can't trust.

**"TDD is dogmatic, being pragmatic means adapting"**

TDD IS pragmatic:
- Finds bugs before commit (faster than debugging after)
- Prevents regressions (tests catch breaks immediately)
- Documents behavior (tests show how to use code)
- Enables refactoring (change freely, tests catch breaks)

"Pragmatic" shortcuts = debugging in production = slower.

**"Tests after achieve the same goals — it's spirit not ritual"**

No. Tests-after answer "What does this do?" Tests-first answer "What should this do?"

Tests-after are biased by your implementation. You test what you built, not what's required. Tests-first force edge case discovery before implementing.

## Common Rationalizations

| Excuse | Reality |
|--------|---------|
| "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
| "I'll test after" | Tests passing immediately prove nothing. |
| "Tests after achieve same goals" | Tests-after = "what does this do?" Tests-first = "what should this do?" |
| "Already manually tested" | Ad-hoc ≠ systematic. No record, can't re-run. |
| "Deleting X hours is wasteful" | Sunk cost fallacy. Keeping unverified code is technical debt. |
| "Keep as reference, write tests first" | You'll adapt it. That's testing after. Delete means delete. |
| "Need to explore first" | Fine. Throw away exploration, start with TDD. |
| "Test hard = design unclear" | Listen to the test. Hard to test = hard to use. |
| "TDD will slow me down" | TDD faster than debugging. Pragmatic = test-first. |
| "Manual test faster" | Manual doesn't prove edge cases. You'll re-test every change. |
| "Existing code has no tests" | You're improving it. Add tests for the code you touch. |

## Red Flags — STOP and Start Over

If you catch yourself doing any of these, delete the code and restart with TDD:

- Code before test
- Test after implementation
- Test passes immediately on first run
- Can't explain why test failed
- Tests added "later"
- Rationalizing "just this once"
- "I already manually tested it"
- "Tests after achieve the same purpose"
- "Keep as reference" or "adapt existing code"
- "Already spent X hours, deleting is wasteful"
- "TDD is dogmatic, I'm being pragmatic"
- "This is different because..."

**All of these mean: Delete code. Start over with TDD.**

## Verification Checklist

Before marking work complete:

- [ ] Every new function/method has a test
- [ ] Watched each test fail before implementing
- [ ] Each test failed for expected reason (feature missing, not typo)
- [ ] Wrote minimal code to pass each test
- [ ] All tests pass
- [ ] Output pristine (no errors, warnings)
- [ ] Tests use real code (mocks only if unavoidable)
- [ ] Edge cases and errors covered

Can't check all boxes? You skipped TDD. Start over.

## When Stuck

| Problem | Solution |
|---------|----------|
| Don't know how to test | Write the wished-for API. Write the assertion first. Ask the user. |
| Test too complicated | Design too complicated. Simplify the interface. |
| Must mock everything | Code too coupled. Use dependency injection. |
| Test setup huge | Extract helpers. Still complex? Simplify the design. |

## Hermes Agent Integration

### Running Tests

Use the `terminal` tool to run tests at each step:

```python
# RED — verify failure
terminal("pytest tests/test_feature.py::test_name -v")

# GREEN — verify pass
terminal("pytest tests/test_feature.py::test_name -v")

# Full suite — verify no regressions
terminal("pytest tests/ -q")
```

### CLI Entry Points

For new `python -m package.cli.command` style entry points, keep the TDD loop boring and side-effect free:

1. Write a test that imports `main` from the missing CLI module and calls `main([])`.
2. Capture stdout/stderr with the project test framework (`capsys` in pytest) or inject a `stdout` file-like object if supported.
3. RED should usually be an import failure for the missing CLI module/package, not a vague end-to-end shell failure.
4. Implement `main(argv: Sequence[str] | None = None, *, stdout: TextIO | None = None) -> int` so tests can call it without spawning a subprocess.
5. Add the `if __name__ == "__main__": raise SystemExit(main())` guard only after the callable path is green.
6. Verify both the unit test and the real module invocation, e.g. `python -m package.cli.command`, before committing.

This catches command wiring while avoiding accidental network calls, publishing actions, or other theatrical nonsense masquerading as a CLI test.

### With delegate_task

When dispatching subagents for implementation, enforce TDD in the goal:

```python
delegate_task(
    goal="Implement [feature] using strict TDD",
    context="""
    Follow test-driven-development skill:
    1. Write failing test FIRST
    2. Run test to verify it fails
    3. Write minimal code to pass
    4. Run test to verify it passes
    5. Refactor if needed
    6. Commit

    Project test command: pytest tests/ -q
    Project structure: [describe relevant files]
    """,
    toolsets=['terminal', 'file']
)
```

### With systematic-debugging

Bug found? Write failing test reproducing it. Follow TDD cycle. The test proves the fix and prevents regression.

Never fix bugs without a test.

## Demo / Fixture Features

When adding a deterministic demo fixture for later integration wiring, still use RED-GREEN-REFACTOR. Write the wished-for import/API in the test first, verify the missing module/API failure, then implement the smallest fixture that proves the real workflow path. Assert stable IDs/order, bucket counts/classifications, and safety invariants such as review text not implying publication. See `references/deterministic-demo-fixtures.md` for the concise pattern.

## Side-Effect-Free Integration Boundaries

When building toward an external integration (Telegram, email, publishing APIs, render farms, payment flows, etc.), add a tested preparation boundary before any real I/O:

1. Write the wished-for pure function in the test first, e.g. `prepare_review_delivery(text) -> DeliveryPlan`.
2. RED should be a missing module/API or missing validation failure, not a real network/send failure.
3. The GREEN implementation should return a typed/dataclass plan object with explicit metadata: destination/topic, delivery type, human-approval requirement, and `side_effects=()`.
4. Validate safety constraints at the boundary: non-empty content, platform size limits, no forbidden action language, no implicit approval, no credentials or generated media unless explicitly expected.
5. Add a demo CLI only after the pure boundary is green. The CLI should print metadata first, then payload, and still perform no external I/O.
6. Verify both the unit tests and a real `python -m package.cli.demo_*` invocation before committing.

This pattern lets later sending/rendering/publishing adapters consume a boring, audited object instead of smuggling side effects into formatting code. Boring is how we avoid building a content catapult with a moustache.

### Media / Rendering Pipeline Boundaries

When building toward image/video generation or renderer integration, add deterministic planning artifacts before any GPU/API work:

1. Write tests for the wished-for pure API first, e.g. `create_shot_plan(script)`, `build_render_manifest(plan)`, `build_local_preview_plan(manifest)`, or `build_ffmpeg_concat_plan(plan, frames, output_path)`.
2. RED should be a missing module/API or missing validation behavior — never a failed ComfyUI/Wan/Qwen/API invocation.
3. Keep each stage inspectable and side-effect-free until the explicit adapter layer: `ScriptDraft -> ShotPlan -> RenderManifest -> PreviewPlan/PreviewArtifact -> renderer adapter`.
4. Assert stable IDs/order, scene counts, timing continuity, vertical settings (`1080x1920`, `30fps` when building Shorts/Reels/TikTok), reduced preview settings (`540x960`, `24fps` when building fast local timing previews), and placeholder/runtime paths before generating media.
5. Add guardrail tests that reject static slideshows, baked-in/generated text inside assets, non-renderer-owned captions/labels, unsafe render settings, missing fields, bad timings, non-PNG frame paths, non-MP4 output paths, and mismatched frame counts.
6. Split artifact-writing/rendering into explicit boundaries after the pure plans are green: frame writer returns `side_effects=("write_png",)`, concat planning remains side-effect-free, and the FFmpeg renderer returns `side_effects=("write_concat", "call_ffmpeg", "write_mp4")` plus `external_calls=("ffmpeg",)`.
7. Only after the manifest/preview boundary is green should a later adapter call local GPU tools or external services. Planning first; GPU roulette later.

This prevents wasting render time on unclear direction and keeps expensive media generation behind a small, audited boundary.

### Approval-First Media/Social Pipelines

When a feature crosses from content planning toward media/social delivery, prefer many small RED-GREEN-README-COMMIT slices instead of one large integration jump:

1. typed artifact/model (`SocialMediaDraft`, `RenderManifest`, etc.)
2. renderer/formatter for human review text
3. side-effect-free delivery/preparation boundary
4. demo CLI that prints metadata first, then payload

For each slice, write the missing import/API test first, verify the expected import/API failure, implement only that slice, run the focused test, run the full suite, update docs, and commit. Keep invariant tests explicit: `requires_human_approval=True`, `side_effects=()`, no external calls, no credential access, no file writes unless that adapter is the explicit feature, and no accidental action language such as `publish`/`post` in review/delivery text.

This staged approach keeps approval semantics auditable and prevents a later renderer, Telegram sender, or platform adapter from being smuggled into formatting code.

## Testing Anti-Patterns

- **Testing mock behavior instead of real behavior** — mocks should verify interactions, not replace the system under test
- **Testing implementation details** — test behavior/results, not internal method calls
- **Happy path only** — always test edge cases, errors, and boundaries
- **Brittle tests** — tests should verify behavior, not structure; refactoring shouldn't break them
- **Substring sentinels that collide with generated IDs** — when asserting that amounts or fixture values are excluded from a result, assert the full formatted token (e.g. `999.00`) or a typed field, not a short substring like `999` that can appear inside UUIDs/hash-like IDs.
- **Domain classes named `Test*` trigger pytest collection warnings** — if a production dataclass/model must be named like `TestBatch`, set `__test__ = False` on the class or choose a non-`Test` prefix. Keep the fix in production code when the name is part of the domain language, and verify the warning is gone before committing.
- **Defaulting with `x or default` hides invalid explicit inputs** — when a factory/test helper accepts optional overrides, use `x if x is not None else default` so tests can pass intentionally blank strings (`""`) or zero values and watch validation reject them. Otherwise invalid-input tests may silently receive defaults and give false confidence.

## Final Rule

```
Production code → test exists and failed first
Otherwise → not TDD
```

No exceptions without the user's explicit permission.

To view linked files, call skill_view(name, file_path) where file_path is e.g. 'references/api.md' or 'assets/config.yaml'