Anfuehrungszeichen: 199 falsche Schlusszeichen im sichtbaren Text
Deutsch oeffnet mit „ und schliesst mit “. An 199 Stellen, die ein
Mensch liest, stand als Schlusszeichen ein GERADES " -- „Nächstes"
statt „Nächstes“. Auf sechzehn oeffentlichen Seiten, in vierzig
Dateien des Workspace und in zwoelf Servermodulen, die Texte
verschicken.
Auf dem Bildschirm sieht man den Unterschied sofort. Beim Schreiben
nicht: Das gerade " liegt auf der Tastatur, die anderen nicht.
WARUM EIN ERSTER ANLAUF ZURUECKGENOMMEN WURDE
Ein gerades " ist an vielen Stellen SYNTAX und kein Schriftzeichen --
Grenze einer Zeichenkette, Grenze eines HTML-Attributs, Zeichen in
einem regulaeren Ausdruck. Wer stumpf ersetzt, macht aus
„<a href="https://… ein kaputtes Attribut
/^["'„»\s]+|["'“«.\s]+$/ einen kaputten Ausdruck
"… nichts „mal " + "eben …" eine kaputte Zeichenkette
DIE UNTERSCHEIDUNG LAEUFT AN MERKMALEN, NICHT AN EINER LISTE
< > = dazwischen -> HTML-Marke oder Attribut
endet auf Leerzeichen -> die Zeichenkette hoert hier auf, der
Satz geht in der naechsten Zeile weiter.
Ein deutsches Schlusszeichen steht NIE
hinter einem Leerzeichen.
Rueckstrich mittendrin -> regulaerer Ausdruck
${ ohne } -> mitten in einem Ausdruck
Eine Liste erlaubter Ausnahmen waere die naechste, die niemand
pflegt. Zwoelf Stellen bleiben dadurch stehen, alle zwoelf einzeln
angesehen und alle zwoelf zu Recht -- dort steht das richtige
Schlusszeichen ohnehin weiter unten im Satz.
Fuenf davon waren allerdings ECHTE Fehler HINTER dem Link
(`…>HasiDog</a>".`) -- die erste Regel hatte nur das Attribut
gesehen, nicht den Satz danach. Gezielt nachgezogen.
Ein maskiertes `\"` in workspace-vorlagen.js (28 Hooks) wird zu “ --
ohne Rueckstrich, denn “ begrenzt nichts.
KOMMENTARE BLEIBEN, WIE SIE SIND. Dort liest es niemand ausser mir;
eine Wache, die auch Kosmetik anmahnt, wird weggeklickt. Beim ersten
Messen fielen ausserdem acht Stellen aus buehne.html faelschlich an,
weil `/* */` in HTML (in <style> und <script>) nicht ausgeblendet
war -- jetzt schon.
DIE WACHE DAZU
pruef-struktur prueft es ab sofort mit derselben Regel: 322 Dateien
mit sichtbarem Text, 0 Funde, und die zwoelf bewussten Ausnahmen
werden GEZAEHLT und genannt (erlaubt: 12). Eine Ausnahme, die niemand
sieht, waechst -- und irgendwann steht der echte Fall darin.
GEPRUEFT
pruef-struktur 59 -> 68 Pruefungen, 0 Fehler
node --check auf allen geaenderten JS-Dateien
nachgemessen: 199 geaendert, 12 mit Grund stehen geblieben
gruen geblieben: bewerbung-aufgaben 163, nachwuchs 262,
reaktion 421, support 63, content 45, terminregel 35, treff 85
Und nachgesehen, ob eine Pruefung noch die alte Schreibweise
ERWARTET: 13 Fundstellen, alle dreizehn nur Text in ihrer eigenen
Ausgabe, keine einzige ein Vergleich mit dem Seitentext.
GEGENPROBE: In reaktion.html ein Schlusszeichen zurueckgedreht ->
„workspace/reaktion.html:546 „Nächstes"", mit Datei und Zeile. Und
die Erkennung einzeln gegen HTML-Attribut, fortgesetzte
Zeichenkette, regulaeren Ausdruck und eingesetzten Wert geprueft.
Stempel gesetzt: workspace 670 Verweise in 45 Dateien, oeffentlich
554 in 48 Seiten.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -86,65 +86,65 @@ const BEREICH_PUNKTE = {};
|
||||
export const CONTENT_IDEEN = [
|
||||
/* ---- Wert (70 %) ---------------------------------------------------- */
|
||||
{ schluessel: "das-haette-ich-am-anfang-gern-gewusst", titel: "Das hätte ich am Anfang gern gewusst",
|
||||
hook: "„Ich hab drei Monate gebraucht, um das zu kapieren – du brauchst 30 Sekunden.\"",
|
||||
hook: "„Ich hab drei Monate gebraucht, um das zu kapieren – du brauchst 30 Sekunden.“",
|
||||
format: "Talking Head", saeule: "Wert", stufe: "anfaenger",
|
||||
text: "Ein Fehler, den du selbst gemacht hast, und was du heute anders machst. "
|
||||
+ "Konkret bleiben: ein Fehler, eine Lösung. Wer drei Dinge sagt, sagt nichts." },
|
||||
{ schluessel: "mein-setup-fuer-unter-100", titel: "Mein Setup für unter 100 €",
|
||||
hook: "„Alle sagen, du brauchst teure Technik. Hier ist meins für 87 Euro.\"",
|
||||
hook: "„Alle sagen, du brauchst teure Technik. Hier ist meins für 87 Euro.“",
|
||||
format: "Zeigen & Erklären", saeule: "Wert", stufe: "anfaenger",
|
||||
text: "Was du wirklich benutzt, mit Preisen. Ehrlich sein, wo es hakt – "
|
||||
+ "das ist der Teil, den niemand sonst zeigt." },
|
||||
{ schluessel: "drei-einstellungen-die-sofort-was-bringe", titel: "Drei Einstellungen, die sofort was bringen",
|
||||
hook: "„Wenn dein Stream unscharf aussieht, liegt es an einer davon.\"",
|
||||
hook: "„Wenn dein Stream unscharf aussieht, liegt es an einer davon.“",
|
||||
format: "Bildschirmaufnahme", saeule: "Wert", stufe: "fort",
|
||||
text: "Nicht mehr als drei. Jede in unter 15 Sekunden erklärt, mit Vorher/Nachher." },
|
||||
{ schluessel: "was-ich-in-einer-woche-gelernt-habe", titel: "Was ich in einer Woche gelernt habe",
|
||||
hook: "„Sieben Tage, eine Erkenntnis – die hier hat alles verändert.\"",
|
||||
hook: "„Sieben Tage, eine Erkenntnis – die hier hat alles verändert.“",
|
||||
format: "Talking Head", saeule: "Wert", stufe: "anfaenger",
|
||||
text: "Rückblick auf eine echte Woche. Funktioniert nur mit einer konkreten Zahl "
|
||||
+ "oder einem konkreten Moment." },
|
||||
{ schluessel: "antwort-auf-die-frage-die-immer-kommt", titel: "Antwort auf die Frage, die immer kommt",
|
||||
hook: "„Das werde ich jeden Tag gefragt – hier einmal in Ruhe.\"",
|
||||
hook: "„Das werde ich jeden Tag gefragt – hier einmal in Ruhe.“",
|
||||
format: "Talking Head", saeule: "Wert", stufe: "fort",
|
||||
text: "Aus dem Chat sammeln, welche Frage sich wiederholt. Die Antwort einmal "
|
||||
+ "gut aufnehmen und immer wieder verwenden." },
|
||||
{ schluessel: "so-bereite-ich-einen-stream-vor", titel: "So bereite ich einen Stream vor",
|
||||
hook: "„Zwei Stunden vor LIVE mache ich immer dasselbe.\"",
|
||||
hook: "„Zwei Stunden vor LIVE mache ich immer dasselbe.“",
|
||||
format: "Vlog", saeule: "Wert", stufe: "fort",
|
||||
text: "Der Ablauf hinter der Sendung. Zeigt Verlässlichkeit und gibt Anfängern "
|
||||
+ "eine Vorlage." },
|
||||
{ schluessel: "fehler-die-ich-bei-anderen-sehe", titel: "Fehler, die ich bei anderen sehe",
|
||||
hook: "„Bitte mach das nicht – ich sehe es jeden Tag.\"",
|
||||
hook: "„Bitte mach das nicht – ich sehe es jeden Tag.“",
|
||||
format: "Talking Head", saeule: "Wert", stufe: "profi",
|
||||
text: "Niemanden bloßstellen. Das Verhalten beschreiben, nicht die Person." },
|
||||
|
||||
/* ---- Community (20 %) ------------------------------------------------ */
|
||||
{ schluessel: "der-beste-moment-aus-dem-letzten-live", titel: "Der beste Moment aus dem letzten LIVE",
|
||||
hook: "„Das ist gestern passiert, und ich rede immer noch davon.\"",
|
||||
hook: "„Das ist gestern passiert, und ich rede immer noch davon.“",
|
||||
format: "Zusammenschnitt", saeule: "Community", stufe: "anfaenger",
|
||||
text: "Ein Ausschnitt, keine Zusammenfassung. Wer alles zeigt, zeigt nichts." },
|
||||
{ schluessel: "ich-beantworte-eure-kommentare", titel: "Ich beantworte eure Kommentare",
|
||||
hook: "„Ihr habt gefragt – jetzt rede ich.\"",
|
||||
hook: "„Ihr habt gefragt – jetzt rede ich.“",
|
||||
format: "Talking Head", saeule: "Community", stufe: "anfaenger",
|
||||
text: "Drei bis fünf echte Kommentare, sichtbar eingeblendet. Auch die kritischen." },
|
||||
{ schluessel: "danke-an-die-die-immer-da-sind", titel: "Danke an die, die immer da sind",
|
||||
hook: "„Ihr seid seit dem ersten Stream dabei. Das hier ist für euch.\"",
|
||||
hook: "„Ihr seid seit dem ersten Stream dabei. Das hier ist für euch.“",
|
||||
format: "Talking Head", saeule: "Community", stufe: "fort",
|
||||
text: "Namen nennen, wenn die Leute einverstanden sind. Sonst allgemein bleiben – "
|
||||
+ "aber ehrlich." },
|
||||
{ schluessel: "eine-entscheidung-bei-der-ihr-mitredet", titel: "Eine Entscheidung, bei der ihr mitredet",
|
||||
hook: "„Ich kann mich nicht entscheiden. Ihr habt 24 Stunden.\"",
|
||||
hook: "„Ich kann mich nicht entscheiden. Ihr habt 24 Stunden.“",
|
||||
format: "Umfrage", saeule: "Community", stufe: "fort",
|
||||
text: "Echte Wahl, keine Scheinfrage. Das Ergebnis danach auch wirklich umsetzen." },
|
||||
|
||||
/* ---- Eigenwerbung (10 %) --------------------------------------------- */
|
||||
{ schluessel: "wann-und-wo-ich-streame", titel: "Wann und wo ich streame",
|
||||
hook: "„Immer dienstags und donnerstags – und ich fange pünktlich an.\"",
|
||||
hook: "„Immer dienstags und donnerstags – und ich fange pünktlich an.“",
|
||||
format: "Kurzclip", saeule: "Eigenwerbung", stufe: "anfaenger",
|
||||
text: "Fester Sendeplan als eigener Clip. Wiederholbar, sobald sich etwas ändert." },
|
||||
{ schluessel: "was-diese-woche-ansteht", titel: "Was diese Woche ansteht",
|
||||
hook: "„Drei Sachen, und eine davon habe ich noch nie gemacht.\"",
|
||||
hook: "„Drei Sachen, und eine davon habe ich noch nie gemacht.“",
|
||||
format: "Kurzclip", saeule: "Eigenwerbung", stufe: "anfaenger",
|
||||
text: "Vorschau auf die Woche. Kurz halten, sonst wird es eine Ankündigung "
|
||||
+ "statt einer Einladung." },
|
||||
@@ -168,81 +168,81 @@ export const CONTENT_IDEEN = [
|
||||
|
||||
/* ---- Wert (70 %) ---- */
|
||||
{ schluessel: "vorher-nachher-an-meinem-kanal", titel: "Vorher / Nachher an meinem Kanal",
|
||||
hook: "„So sah mein Stream vor drei Monaten aus. Und so heute.\"",
|
||||
hook: "„So sah mein Stream vor drei Monaten aus. Und so heute.“",
|
||||
format: "Vorher / Nachher", saeule: "Wert", stufe: "anfaenger",
|
||||
text: "Zwei Ausschnitte nebeneinander, dazwischen die eine Sache, die du geändert hast. "
|
||||
+ "Das Format funktioniert, weil der Zuschauer den Unterschied SIEHT und nicht glauben muss." },
|
||||
{ schluessel: "drei-sachen-die-dir-keiner-sagt", titel: "Drei Sachen, die dir keiner sagt",
|
||||
hook: "„Drei Sachen über Streaming, die dir keiner sagt – die dritte hat mich am meisten gekostet.\"",
|
||||
hook: "„Drei Sachen über Streaming, die dir keiner sagt – die dritte hat mich am meisten gekostet.“",
|
||||
format: "Nummerierte Liste", saeule: "Wert", stufe: "fort",
|
||||
text: "Eine Zahl im Aufhänger verspricht ein Ende – deshalb bleiben Leute dran. "
|
||||
+ "Die stärkste Nummer kommt zuletzt, und sie wird im Aufhänger angekündigt." },
|
||||
{ schluessel: "ich-teste-was-alle-empfehlen", titel: "Ich teste, was alle empfehlen",
|
||||
hook: "„Jeder empfiehlt das. Ich habe es zwei Wochen gemacht – hier ist das Ergebnis.\"",
|
||||
hook: "„Jeder empfiehlt das. Ich habe es zwei Wochen gemacht – hier ist das Ergebnis.“",
|
||||
format: "Selbstversuch", saeule: "Wert", stufe: "fort",
|
||||
text: "Ein verbreiteter Ratschlag, von dir selbst überprüft, mit Zahlen davor und danach. "
|
||||
+ "Widerspruch zieht Aufmerksamkeit – aber nur, wenn du wirklich getestet hast." },
|
||||
{ schluessel: "so-lese-ich-meine-zahlen", titel: "So lese ich meine Zahlen",
|
||||
hook: "„Diese eine Zahl sagt mir mehr als die Zuschauerzahl.\"",
|
||||
hook: "„Diese eine Zahl sagt mir mehr als die Zuschauerzahl.“",
|
||||
format: "Bildschirm & Erklären", saeule: "Wert", stufe: "profi",
|
||||
text: "Zeig deine eigene Auswertung: durchschnittliche Verweildauer, Anteil neuer Zuschauer, "
|
||||
+ "Wiederkehrer. Erklär, was du daraufhin geändert hast. Wenige machen das – deshalb wirkt es." },
|
||||
{ schluessel: "die-erste-sekunde-entscheidet", titel: "Die erste Sekunde entscheidet",
|
||||
hook: "„Sag das in Sekunde eins – oder der Zuschauer ist weg.\"",
|
||||
hook: "„Sag das in Sekunde eins – oder der Zuschauer ist weg.“",
|
||||
format: "Zerlegung", saeule: "Wert", stufe: "profi",
|
||||
text: "Nimm ein eigenes Video auseinander: Was hast du in Sekunde eins gesagt, was würdest du "
|
||||
+ "heute sagen? Über 70 Prozent entscheiden in den ersten drei Sekunden. Zeig beides." },
|
||||
{ schluessel: "mein-ablauf-als-vorlage", titel: "Mein Ablauf als Vorlage zum Mitnehmen",
|
||||
hook: "„Hier ist der Ablauf, nach dem ich jeden Stream fahre. Nimm ihn.\"",
|
||||
hook: "„Hier ist der Ablauf, nach dem ich jeden Stream fahre. Nimm ihn.“",
|
||||
format: "Zeigen & Weitergeben", saeule: "Wert", stufe: "meister",
|
||||
text: "Etwas herzugeben, das bei dir funktioniert, kostet nichts und bringt Vertrauen. "
|
||||
+ "Meisterschaft zeigt sich daran, dass es auch ohne dich funktioniert." },
|
||||
{ schluessel: "was-hundert-streams-mir-beigebracht-h", titel: "Was hundert Streams mir beigebracht haben",
|
||||
hook: "„Hundert Streams. Drei Sachen sind übrig geblieben.\"",
|
||||
hook: "„Hundert Streams. Drei Sachen sind übrig geblieben.“",
|
||||
format: "Rückblick", saeule: "Wert", stufe: "meister",
|
||||
text: "Kein Best-of, sondern das, was du heute anders machst als am Anfang. "
|
||||
+ "Wer lange dabei ist, hat den einen Vorteil, den niemand abkürzen kann." },
|
||||
|
||||
/* ---- Community (20 %) ---- */
|
||||
{ schluessel: "ein-insider-den-nur-ihr-versteht", titel: "Ein Insider, den nur ihr versteht",
|
||||
hook: "„Wenn du weißt, was das bedeutet, bist du schon länger dabei.\"",
|
||||
hook: "„Wenn du weißt, was das bedeutet, bist du schon länger dabei.“",
|
||||
format: "Kurzclip", saeule: "Community", stufe: "anfaenger",
|
||||
text: "Ein Spruch, ein Emote, ein Moment aus dem Stream. Wer ihn versteht, fühlt sich zugehörig – "
|
||||
+ "und wer nicht, will dazugehören. Beides hilft." },
|
||||
{ schluessel: "eure-clips-mein-kommentar", titel: "Eure Clips, mein Kommentar",
|
||||
hook: "„Ihr habt das aufgenommen. Ich sag euch, was da wirklich los war.\"",
|
||||
hook: "„Ihr habt das aufgenommen. Ich sag euch, was da wirklich los war.“",
|
||||
format: "Reaction", saeule: "Community", stufe: "fort",
|
||||
text: "Clips, die Zuschauer selbst geschnitten haben, mit deinem Kommentar. "
|
||||
+ "Das belohnt die, die mitmachen – und wer belohnt wird, macht weiter." },
|
||||
{ schluessel: "die-regel-die-ihr-euch-gewuenscht-hab", titel: "Die Regel, die ihr euch gewünscht habt",
|
||||
hook: "„Ihr habt gefragt, ich habe es geändert. Ab heute gilt:\"",
|
||||
hook: "„Ihr habt gefragt, ich habe es geändert. Ab heute gilt:“",
|
||||
format: "Talking Head", saeule: "Community", stufe: "profi",
|
||||
text: "Eine Änderung, die aus der Community kam, mit Nennung derer, die sie angestoßen haben. "
|
||||
+ "Mitreden zu dürfen ist der stärkste Grund zu bleiben." },
|
||||
{ schluessel: "wir-machen-das-zusammen", titel: "Wir machen das zusammen",
|
||||
hook: "„Wenn wir das diese Woche schaffen, mache ich Folgendes:\"",
|
||||
hook: "„Wenn wir das diese Woche schaffen, mache ich Folgendes:“",
|
||||
format: "Gemeinsames Ziel", saeule: "Community", stufe: "profi",
|
||||
text: "Ein Ziel mit Frist und einer Belohnung, die du wirklich einlöst. "
|
||||
+ "Ein Versprechen, das nicht gehalten wird, kostet mehr als es gebracht hat." },
|
||||
{ schluessel: "mein-moderator-stellt-sich-vor", titel: "Mein Moderator stellt sich vor",
|
||||
hook: "„Ihr kennt den Namen. Hier ist der Mensch dahinter.\"",
|
||||
hook: "„Ihr kennt den Namen. Hier ist der Mensch dahinter.“",
|
||||
format: "Interview", saeule: "Community", stufe: "meister",
|
||||
text: "Wer im Chat für Ordnung sorgt, bekommt ein Gesicht. Das schützt ihn – "
|
||||
+ "gegen einen Namen schimpft man leichter als gegen einen Menschen." },
|
||||
|
||||
/* ---- Eigenwerbung (10 %) ---- */
|
||||
{ schluessel: "dreissig-minuten-vorher", titel: "30 Minuten vorher",
|
||||
hook: "„In einer halben Stunde geht es los – und heute passiert Folgendes:\"",
|
||||
hook: "„In einer halben Stunde geht es los – und heute passiert Folgendes:“",
|
||||
format: "Ankündigung", saeule: "Eigenwerbung", stufe: "anfaenger",
|
||||
text: "Ein kurzes Video 30 bis 60 Minuten vor dem Start. Es bündelt die, die ohnehin kommen "
|
||||
+ "wollten – und ein voller Start zieht neue Zuschauer nach. Eine Sache nennen, nicht drei." },
|
||||
{ schluessel: "warum-ich-heute-live-gehe", titel: "Warum ich heute live gehe",
|
||||
hook: "„Heute ist ein Grund da, und der ist nicht ‚weil Dienstag ist‘.\"",
|
||||
hook: "„Heute ist ein Grund da, und der ist nicht ‚weil Dienstag ist‘.“",
|
||||
format: "Talking Head", saeule: "Eigenwerbung", stufe: "fort",
|
||||
text: "Ein Anlass macht aus einem Termin ein Ereignis. Auch ein kleiner reicht: "
|
||||
+ "ein neues Spiel, ein Gast, eine offene Frage von letzter Woche." },
|
||||
{ schluessel: "mein-kanal-in-fuenfzehn-sekunden", titel: "Mein Kanal in fünfzehn Sekunden",
|
||||
hook: "„Fünfzehn Sekunden, dann weißt du, ob das hier für dich ist.\"",
|
||||
hook: "„Fünfzehn Sekunden, dann weißt du, ob das hier für dich ist.“",
|
||||
format: "Kurzvorstellung", saeule: "Eigenwerbung", stufe: "profi",
|
||||
text: "Für wen, worum, wann. Fest angeheftet, damit neue Zuschauer nicht raten müssen. "
|
||||
+ "Alle paar Monate neu drehen – ein Kanal von vor einem Jahr bist du nicht mehr." },
|
||||
|
||||
Reference in New Issue
Block a user