StoryForge Autorenprofile - Anti-AI-Engine
Autorenprofile in StoryForge: Aufbau von profile.md, Writing Discoveries in der Datenbank, wie verbotene Phrasen und Tics im Prosa-Hook durchgesetzt werden, study-author, Sprachfelder und Fehlerbehebung.
StoryForge Autorenprofile
Zurück zur StoryForge-Hauptseite
Überblick
Das Autorenprofil ist der Kern von StoryForge. Der chapter-writer lädt es nach dem Chapter Writing Brief als Pflicht-Kontext, bevor er ein Wort schreibt. Ein technisches Gate gibt es dafür nicht: Existiert noch kein Autor, schlägt new-book lediglich vor, zuerst create-author zu nutzen. Ohne Profil fällt die Prosa auf den generischen KI-Stil zurück. Das Profil verhindert, dass dein Text so klingt.
Ein Autorenprofil ist keine Marketing-Persona. Es ist ein Satz von Parametern, der bestimmt, wie Prosa auf Satz-, Absatz- und Dialogebene gebaut wird. Die Qualität deines Buchs hängt direkt an der Qualität deines Profils.
Ein Profil besteht aus zwei Teilen:
- Dateien unter
~/.storyforge/authors/{slug}/: das Profilprofile.mdmit Frontmatter und Stilbeschreibung, dazu Referenzmaterial. - Writing Discoveries in der Datenbank
~/.storyforge/db/authors.db: verbotene Phrasen, wiederkehrende Tics, Don'ts und Style Principles. Der Prosa-Hook und der Manuscript-Checker lesen sie von dort. Der Chapter Writing Brief führt unterbanned_phrasesnur Buchregeln, flache Don'ts, Tics und Katalog-Tells. Backtick- und Kursiv-Don'ts sowie Style Principles erreichen denchapter-writerüberget_author.
vocabulary.mdist reine Referenz. Der Hook liest diese Datei nicht. Verbotene Phrasen legst du mitwrite_author_banned_phraseoderadd_vocabulary_entryan, siehe Writing Discoveries.
Warum Autorenprofile?
KI-Modelle haben einen Default-Stil: glatte Eleganz, abstrakt-poetische Nomen, wenig Satzvariation, Dialogbeats statt Subtext. Dieser Default klingt in jedem Genre gleich. Der Voice-Checker nennt das „AI-Tells".
Autorenprofile sind die Gegenmaßnahme:
- Stil-Parameter überschreiben die Defaults.
- Verbotene Phrasen und Muster meldet der Hook sofort nach jedem Schreibvorgang und verlangt die Korrektur, nicht erst ein Check am Ende.
- Style Principles beschreiben positiv, was die Stimme ausmacht.
- Studied Works liefern konkrete Beispiele aus analysierten Texten.
Der chapter-writer lädt nach dem Brief das Profil. Schreibt er oder du eine draft.md, prüft der PostToolUse-Hook den Text gegen die Autoren-Banlist. Details zum Hook stehen auf der Seite Technische Details.
Speicherort
Autorenprofile liegen außerhalb des Plugin-Verzeichnisses und überleben so Plugin-Updates:
~/.storyforge/authors/{slug}/
├── profile.md # Frontmatter und Stilbeschreibung
├── vocabulary.md # Referenz: bevorzugte Wörter, Signature Phrases
├── studied-works/ # Analysen aus study-author
│ └── analysis-{buch-slug}.md
└── examples/ # eigene Beispieltexte (optional)
~/.storyforge/db/authors.db # Writing Discoveries (author_discoveries)
Profile.md: Struktur
Frontmatter
/storyforge:create-author fragt die Werte ab und legt die Datei an. Ein Beispiel:
---
name: "Maja Sundberg"
slug: "maja-sundberg"
created: "2026-04-24"
updated: "2026-04-24"
primary_genres: ["contemporary", "mystery", "literary-fiction"]
narrative_voice: "third-limited"
tense: "past"
tone: ["melancholic", "atmospheric", "terse"]
sentence_style: "varied"
vocabulary_level: "moderate"
dialog_style: "naturalistic"
pacing: "slow-burn"
themes: ["memory", "loss", "the-sea-as-character"]
influences: ["Jon Fosse", "Siri Hustvedt", "Per Petterson"]
avoid: ["purple-prose", "info-dumps", "deus-ex-machina"]
author_writing_mode: "outliner"
native_language: "sv"
preferred_writing_language: "sv"
---
| Feld | Bedeutung |
|---|---|
name, slug |
Anzeigename und Verzeichnisname |
primary_genres |
Genres, in denen der Autor schreibt |
narrative_voice |
first-person, third-limited, third-omniscient oder second-person |
tense |
past oder present (bei Memoir-Autoren auch gemischt) |
tone |
zwei bis vier Werte aus der Liste von create-author: sarcastic, dark-humor, atmospheric, lyrical, terse, warm, cold, irreverent, earnest, melancholic, playful, intense, detached, intimate (bei Memoir eine eigene Liste) |
sentence_style |
short-punchy, long-flowing, varied oder minimalist |
vocabulary_level, dialog_style |
Vokabular-Niveau (simple, moderate, advanced, archaic) und Dialogstil (naturalistic, stylized, minimal, heavy) |
pacing |
slow-burn, tension-driven, breakneck oder literary |
themes, influences, avoid |
Themen, literarische Vorbilder, was dieser Autor nie macht |
author_writing_mode |
outliner, plantser oder discovery, siehe Writing Modes |
native_language, preferred_writing_language |
siehe Sprachfelder |
Weitere Felder, die update_author schreiben darf: pen_name, bio, website, social_media, mood, voice und die vier quantitativen Ziele dialog_ratio_target, fragment_ratio_target, single_line_paragraph_ratio_target und avg_sentence_length_target. study-author setzt Letztere aus dem analysierten Text, author-check nutzt sie statt seiner allgemeinen Standardwerte. Memoir-Autoren haben zusätzlich subject_position, relationship_to_material und off_limits.
Andere Felder weist update_author ab, damit niemand beliebige Schlüssel ins Frontmatter schmuggeln kann.
Schreibmodus
author_writing_mode steuert, welchen Weg new-book und book-conceptualizer vorschlagen und wie ausführlich plot-architect arbeitet. Pro Buch lässt sich der Modus überschreiben, wirksam ist der Override aber nur an manchen Stellen. Alles Weitere steht unter Writing Modes.
Bei Memoir-Autoren fragt create-author mit den Begriffen Structured, Accumulative und Discovery statt Outliner, Plantser und Discovery Writer. Beim Speichern über update_author werden diese Begriffe case-insensitiv auf die kanonischen Werte normalisiert: Structured wird zu outliner, Accumulative zu plantser, Discovery bleibt discovery. Im Profil steht danach der kanonische Wert, den auch alle anderen Skills kennen. Eine Eingabe, die keiner dieser Begriffe ist, wird unverändert gespeichert.
Prosa-Abschnitte
Nach dem Frontmatter folgt freie Prosa. Das Tool create_author legt dafür drei Abschnitte mit Platzhaltertext an: ## Writing Style, ## Signature Techniques und ## Voice Notes. Diese füllst du von Hand oder über study-author. Weitere Abschnitte wie ## Narrative Approach, ## Tone & Atmosphere, ## Strengths, ## Deliberate Imperfections oder ## Influences & Comparable Authors sind eine Empfehlung (die Datei templates/author-profile.md im Plugin zeigt sie), die du bei Bedarf selbst ergänzt. Je konkreter die Beschreibung, desto besser der Output:
## Signature Techniques
- **Objekt-als-Emotion:** Gefühle werden nie benannt, sondern an Objekten
sichtbar (der Kaffee wird kalt, der Schlüssel schneidet in die Hand).
- **Weather-as-Chorus:** Das Wetter kommentiert die Szene, nie reine Kulisse.
Writing Discoveries
Die Writing Discoveries eines Autors liegen in der Tabelle author_discoveries der Datenbank authors.db. Es gibt drei Typen:
| Typ | Inhalt | Wirkung |
|---|---|---|
donts |
verbotene Phrasen und Muster | Hook meldet als block |
recurring_tics |
wiederkehrende Tics, aus fertigen Büchern gesammelt | Hook meldet als block oder warn, je nach Markierung |
style_principles |
positive Stilmuster, bevorzugte Wörter | wird nicht gescannt, sondern von chapter-writer und chapter-reviewer über get_author geladen |
get_author liefert sie unter writing_discoveries. Einträge, die mit write_author_discovery angelegt werden, können eine Herkunft (Buch, Datum), genres, universal und ein example tragen.
Einträge anlegen
| Weg | Wirkung |
|---|---|
write_author_banned_phrase(author_slug, phrase, reason) |
legt einen donts-Eintrag in der Form `phrase` — Grund an, ohne Herkunft. Der Hook sucht die Phrase als reinen Teilstring, siehe unten. |
add_vocabulary_entry(author_slug, entry_type, text, source) |
banned wird zu donts (flacher Eintrag, mit Beugung und Wortgrenze), preferred und phrase werden zu style_principles |
write_author_discovery(author_slug, section, text, book_slug, ...) |
schreibt in recurring_tics, style_principles oder donts; optional mit example, genres, universal; bei einem Memoir-Buch ohne example und ohne Namen einer Person aus dem Buch |
/storyforge:chapter-voice-harvest |
übernimmt bestätigte Stimmmuster aus deinen Review-Korrekturen als style_principles mit Genre-Scope; nie als donts oder recurring_tics |
/storyforge:harvest-author-rules |
übernimmt Erkenntnisse eines fertigen Buchs |
/storyforge:study-author |
schreibt Stilmuster aus analysierten Texten |
Alle Wege sind idempotent: Ein Eintrag mit identischem Text wird nicht doppelt angelegt.
add_vocabulary_entryspeichert den Text unverändert. Ein ganzer Satz ergibt ein Muster in Satzlänge, das praktisch nie trifft. Trage kurze Phrasen ein.
create_author legt zusätzlich bei der Erstellung sofort 19 Standard-Wörter aus dem Anti-Pattern-Katalog (siehe Anti-Pattern-Katalog) als donts an; sie wirken ab diesem Moment wie jede andere flache Phrase und zählen im Manuscript-Checker als author_vocab_violation. vocabulary.md führt diese Wörter nicht mehr auf, nur noch einen Verweis auf die Datenbank. Schlägt das Schreiben in die Datenbank fehl, bleibt der Autor trotzdem angelegt; die Antwort von create_author trägt dann ein warning-Feld mit der Anweisung, die Wörter per add_vocabulary_entry nachzutragen.
Format der Einträge
Verbotene Phrasen (donts) können in vier Formen vorliegen. Wie genau gesucht wird, hängt von der Form ab, und damit vom Weg, auf dem der Eintrag entstand:
| Form (Weg) | Wirkung im Hook | |
|---|---|---|
flache Phrase ohne Backticks und Fettdruck, zum Beispiel delve / delve into (add_vocabulary_entry mit banned, Migration aus vocabulary.md) |
wird an / in Aliase zerlegt, Klammerzusätze wie (metaphorical) werden entfernt. Einzelwörter treffen Beugungen und beginnen an einer Wortgrenze. |
|
Backtick-Eintrag, zum Beispiel `delve` — Grund (write_author_banned_phrase) oder `` `\bthe (room |
silence) received\b` `` | enthält der Text Regex-Zeichen, gilt er als regulärer Ausdruck, sonst als einfacher Teilstring ohne Beugung und ohne Wortgrenze, Groß- und Kleinschreibung egal |
kursive Beispielphrase, zum Beispiel *The room received it.*, in einem Eintrag mit Verbots-Hinweis (Never, Avoid, nie, kein und ähnlich) |
wird als Text gesucht, aber nur im Fenster vor einem Empfehlungs-Marker (Render, Replace, Instead:, → und ähnlich), Satzzeichen am Ende werden abgeschnitten. Dieses Fenster gilt im Hook genauso wie im Manuscript-Checker. |
|
Zeile mit fettem Titel, aber ohne Backtick und ohne kursive Beispielphrase nach einem Verbots-Hinweis, zum Beispiel **word** (Anmerkung) |
steht der Fettdruck am Anfang der Zeile, erzeugt der Bold-Title-Fallback aus dem Text zwischen den Sternchen ein Literal, ein Einzelwort mit Beugung und Wortgrenze wie bei einer flachen Phrase, eine Mehrwortphrase exakt mit Wortgrenzen; stehen im Titel Anführungszeichen-Phrasen, werden nur diese gesucht; ein Zusatz hinter dem Fettdruck, wie die Klammer-Anmerkung im Beispiel, gehört nicht zum Titel und bleibt außen vor |
Der Bold-Title-Fallback greift nur, wenn die Zeile direkt mit dem Fettdruck beginnt. Steht davor noch anderer Text, etwa Avoid **word** entirely, erkennt ihn der Fallback nicht, und der Eintrag bleibt wirkungslos. Das betrifft auch Bullets, die aus einer vocabulary.md migriert wurden und dabei ihren Fettdruck behalten haben: Steht der Fettdruck am Anfang, wirkt so ein migrierter Eintrag jetzt wie eine flache Phrase, steht er nicht am Anfang, bleibt er wirkungslos. Prüfe solche Einträge mit get_author und lege sie bei Bedarf als flache Phrase oder Backtick-Eintrag neu an.
Der Unterschied zwischen den ersten beiden Zeilen ist wichtig:
- Ein flacher Eintrag
delvefindetdelved,delvingunddelves(bei Wörtern auf stummesewird der Stamm ohneegenommen) und trifft nicht mitten im Wort,redelvezählt also nicht. Mehrwortphrasen und Wörter mit Bindestrich werden exakt gesucht. - Ein Backtick-Eintrag, so wie ihn
write_author_banned_phraseschreibt, ist ein reiner Teilstring:`delve`trifftdelveundredelve, aber nichtdelving.`thing`trifft auchsomething. Willst du Wortgrenzen oder Beugungen, schreibst du einen Regex, zum Beispiel`\bthing\b`oder`\bdelv(e|ed|es|ing)\b`.
Alle Treffer von donts haben die Stufe block.
Wiederkehrende Tics (recurring_tics) sind Bullets mit fettem Titel, der die scannbare Phrase in Anführungszeichen trägt:
- **Vague-noun "thing" als Fallback** — "doing a thing with his hand" sofort konkretisieren.
- **"count" als Zeitmarker-Tic** — *for a count of X* — Max. 2–3 pro Kapitel.
Der Hook nimmt die gequoteten Phrasen aus dem Titel, andernfalls Muster aus dem Text des Bullets. Standard ist block. Steht [warn] oder [advisory] im Bullet, wird der Fund nur gemeldet. Ein Zusatz wie Max 2 per chapter, Max 2–3 pro Kapitel oder Max einmal pro Kapitel erlaubt bis zu so viele Treffer je Kapitel. Das Limit wird auf die Länge des aktuellen Entwurfs im Verhältnis zur Ziel-Wortzahl des Kapitels skaliert, ein halb fertiger Entwurf darf also entsprechend weniger Treffer haben. Der Manuscript-Checker wendet dieselbe Unterscheidung an: Ein [warn]-Tic bekommt dort das Gewicht medium statt high, und ein Kapitel, das die erlaubte Zahl an Treffern nicht überschreitet, erzeugt keinen Fund. Anders als beim Hook, der die Länge des Entwurfs gegen die Ziel-Wortzahl skaliert, prüft der Checker das Limit je vollständigem Kapitel.
Style Principles werden nicht maschinell geprüft. Sie sind narrative Anweisungen: chapter-writer wählt je Szene drei passende Principles aus, zitiert deren example und setzt sie um. Einträge mit genres gelten nur in Büchern, die mindestens eines dieser Genres haben. Einträge ohne genres gelten überall, mit universal immer. Bei Memoir-Büchern gilt zusätzlich das Genre-Tag memoir: Einträge mit diesem Tag wirken in Memoir-Büchern des Autors und nicht in dessen Fiction-Büchern. Ob die Principles im Entwurf wirklich vorkommen, prüft /storyforge:author-check.
Wer scannt was?
| Quelle | Prosa-Hook | Manuscript-Checker (Kategorie) |
|---|---|---|
donts, flache Phrasen |
block | author_vocab_violation |
donts, Fettdruck am Zeilenanfang ohne Backtick/Kursiv (Bold-Title-Fallback) |
block | author_vocab_violation |
donts, Backtick und Kursiv |
block | author_rule_violation |
donts, Zitat in Anführungszeichen mit Verbots-Hinweis |
nein | author_rule_violation (nur vor einem Empfehlungs-Marker) |
recurring_tics |
block oder warn, mit Kapitel-Limit | writing_discovery_violation, Gewicht high oder bei [warn] medium, mit Kapitel-Limit pro Kapitel |
style_principles |
nein | nein |
Globale Shape-Bans (anti-ai-patterns.md, Abschnitt 11, sechs Regex-Muster) |
warn, für jeden Autor | global_shape_violation |
Globale AI-Tell-Wörter (anti-ai-patterns.md, Abschnitt 1) |
warn, für jeden Autor (Kategorie ai_tell) |
ai_tell_violation |
Globale Muster warnen nur (Hook) oder gelten als advisory (Checker). Willst du eines hart blockieren, trägst du es als Backtick-Regex in die donts des Autors ein.
Maschinell durchgesetzt werden aus Abschnitt 11 nur die Zeilen, die exakt mit **Banned shape:** beginnen. Das sind sechs: Zähl-und-Kommentier-Fragmente (11.1), Satz als Geschoss (11.2), Raum als Empfänger (11.3), Wirtschafts-Metaphern (11.4), Körperteil-Handlungsmacht (11.6) und Rückwärts-Verneinungsschleifen (11.7). Die Varianten Banned shape (trust-split) und Banned shape (density) sowie 11.5, 11.8 und 11.11 bis 11.13 haben keinen geladenen Regex. Der chapter-humanizer deckt sie zum Teil mit eigenen Dichteregeln und Urteilsprüfung ab, siehe Quality System.
Bestehende vocabulary.md übernehmen
Für die Durchsetzung zählt nur die Datenbank, nicht vocabulary.md. Hast du verbotene Wörter in einer solchen Datei, überträgt scripts/migrate_vocabulary_to_db.py die Banned-Words-Abschnitte in die Datenbank (Vorschau ohne Flag, --execute schreibt, wiederholbar). Siehe Technische Details.
Hook und Autor
Welcher Autor zu einem Buch gehört, findet der Hook zuerst über die Zeile - **Author:** Name in der Buch-CLAUDE.md. Der Name wird zum Slug umgewandelt, und die Klammer-Anmerkung dahinter wird ignoriert:
| Anzeigename | Slug |
|---|---|
| Ethan Cole | ethan-cole |
| Ursula K. Le Guin | ursula-k-le-guin |
Fehlt diese Zeile oder die Datei, fällt der Loader auf das Feld author: im Frontmatter der Buch-README.md zurück. Dort steht bereits der Slug selbst, ohne Umwandlung. create_book_structure schreibt dieses Feld bei jedem neu angelegten Buch, auch wenn kein Autor übergeben wurde; in diesem Fall bleibt es leer und zählt wie eine fehlende Angabe.
Die CLAUDE.md-Zeile schreibt kein Werkzeug: Die Vorlage der Buch-CLAUDE.md enthält unter Book Facts nur POV, Tense, Genre und Writing Mode, und init_book_claudemd übergibt keinen Autor. Du kannst sie trotzdem von Hand ergänzen, etwa im Abschnitt Book Facts; der Loader sucht sie in der ganzen Datei, nicht nur dort, und sie hat Vorrang vor dem Feld in der README.md. Fehlen beide Quellen, gibt es keine Autoren-Banlist. Fehlt authors.db oder schlägt die Abfrage fehl, gilt der Autor ebenfalls als ohne Einträge, bei einem Abfragefehler schreibt der Hook eine Notiz nach stderr.
Der Hook läuft als PostToolUse, also nachdem die Datei geschrieben ist. Ein Fund der Stufe block führt im Modus strict zu Exit-Code 2: Die Meldung geht an Claude zurück, und Claude muss den Fund beheben, bevor es weiterschreibt. Im Modus warn (linter_mode: warn im Frontmatter der Buch-CLAUDE.md) werden Blocker nur ausgegeben, und zwar für das ganze Buch, nicht für einzelne Muster. Mehr dazu: Technische Details und Konfiguration.
Ist ein Muster für ein einzelnes Buch zu scharf, entfernst du den Eintrag aus den Writing Discoveries des Autors, statt den Modus des Buchs zu lockern.
Study Author: Stil-Extraktion
/storyforge:study-author <datei> [autor-slug] analysiert eigene oder fremde Texte (PDF, EPUB, DOCX, TXT, MD) und überträgt Stilmuster ins Profil. Dateien über 50 MB lehnt der Skill ab. Bei Texten über 200.000 Wörtern wird nicht abgelehnt: Dann analysiert er eine Stichprobe aus Anfang, Mitte und Ende. Der Skill verfeinert ein bestehendes Profil. Gibt es noch keines, verweist er zuerst auf create-author, weil ein Profil aus einem einzigen fremden Werk dessen Signatur zu eng kopieren würde.
Der Ablauf im Fiction-Modus:
- Eingabe: Datei, Autor, Quellgenres. Gibt es schon eine
analysis-{buch-slug}.md, warnt der Skill vor doppelten Discoveries. - Checkliste positiver Marker: Aus dem Abschnitt
## study-author: Positive Markersder Genres des Autors und seinentone-Werten stellt der Skill eine Checkliste zusammen. Erst nach deiner Bestätigung beginnt die Analyse. - Analyse: Satzlänge und Varianz, Wortschatz, Dialoganteil und Tags, Absatzstruktur, Stilmarker wie Metaphernhäufigkeit, Filterwörter und Adverbien.
- Analysedatei unter
studied-works/analysis-{buch-slug}.md. - Profil aktualisieren: Frontmatter-Felder und quantitative Ziele über
update_author, gefundene Stilmuster alsstyle_principles, wiederkehrende Eigenheiten alsrecurring_tics, zu meidende Muster überwrite_author_banned_phrase. Bewusste Eigenheiten aus dem Abschnitt „Deliberate Imperfections" speichert der Skill alsstyle_principles, ausdrücklich nicht alsrecurring_tics, weil Tics durchgesetzt werden. Widerspricht ein neuer Fund einem bestehenden, fragt der Skill nach.
Im Memoir-Modus analysiert der Skill deine eigenen Texte (Tagebücher, Briefe, alte Blogeinträge), um die unverstellte Stimme herauszuarbeiten, und überspringt das Profil-Gate.
Für Autoren, die vor der Checkliste studiert wurden, holt /storyforge:backfill-style-principles <autor-slug> positive Muster aus den vorhandenen Analysedateien nach. Der Skill ist idempotent. Mit /storyforge:migrate-source-genres ergänzt du fehlende Genre-Tags.
Mehrere Autorenprofile
Du kannst beliebig viele Profile haben:
~/.storyforge/authors/
├── maja-sundberg/
├── maja-sundberg-thriller/ # anderer Rhythmus für Thriller
└── test-voice/ # Experimentier-Profil
Pro Buch wird ein Autor gewählt: der Slug im Feld author des Buch-Frontmatters, den create_book_structure immer schreibt, oder die Zeile - **Author:**, die du bei Bedarf in der Buch-CLAUDE.md ergänzt und die Vorrang vor dem Frontmatter-Feld hat. Ein Autor lässt sich mit /storyforge:delete-author samt seinen Writing Discoveries entfernen. Der Skill weigert sich, solange noch Bücher auf ihn verweisen, außer du erzwingst es.
Sprachfelder
| Feld | Ebene | Zweck |
|---|---|---|
native_language |
Autor | Muttersprache (ISO 639-1), bestimmt die Sprache der Erklärungen im chapter-proofreader |
preferred_writing_language |
Autor | Standard-Schreibsprache, Fallback wenn das Buch keine Sprache hat |
language |
Buch | Schreibsprache des Buchs, hat Vorrang |
Beispiel: Ethan Cole schreibt meist auf Englisch (preferred_writing_language: en), seine Muttersprache ist Deutsch (native_language: de). Der Proofreader prüft nach englischen Regeln und erklärt Fehler auf Deutsch. Für bestehende Profile setzt du die Felder mit update_author(slug, "native_language", "de").
Anti-Pattern-Katalog
StoryForge bringt unter reference/craft/anti-ai-patterns.md einen Katalog typischer AI-Tells mit. Er dient dreifach:
- Der Prosa-Hook liest daraus die Wortliste „Heavily Flagged Words and Phrases" und die Banned Shapes aus Abschnitt 11 („Elegant Abstraction Register", sechs davon mit Regex), jeweils mit Stufe warn.
- Der
chapter-humanizerund dervoice-checkermessen Texte daran. create_authorübernimmt bei der Erstellung 19 Wörter aus Abschnitt 1 direkt in diedontsdes neuen Autors (ohnenavigate, das innavigation/navigatorfalsch anschlagen würde); dieavoid-Liste im Frontmatter bekommt dabei drei feste, generische Standardwerte (purple-prose,info-dumps,deus-ex-machina) und bleibt vom Katalog unabhängig.
Der Katalog gilt nur für Bücher auf Englisch (Sprache aus language im README-Frontmatter des Buchs); für andere Sprachen entfallen die Katalog-Treffer.
Typische Tells: abstrakte Gefühls-Nomen („tapestry of feelings"), Reise-Metaphorik, Hedging („it's worth noting"), gleiche Satzanfänge in Folge, Therapie-Sprache („held space"), Symphonie-Metaphern, auffällig eloquente Teenager, Beats ohne Funktion und zu saubere Szenenenden.
Tipps für starke Profile
- Konkret statt generisch. Die Listen für
toneund die anderen Stilfelder sind grob. Die Genauigkeit entsteht in den Prosa-Abschnitten: „melancholisch, nordisch kühl, das Meer als dritte Figur" schlägt ein bloßesmelancholic. - Verbote pflegen. Ohne Einträge in den
dontsbleibt dem Hook nur der globale Katalog. Fange mit den Phrasen an, die dich in deinen Entwürfen stören. - Studied Works nutzen. Ein Profil ohne analysierte Werke ist ein Schauspieler ohne Proben. Analysiere ein bis zwei eigene oder verwandte Werke.
- Signature Phrases nicht erfinden. Erst aufnehmen, wenn sie in analysierten Texten wirklich vorkommen, sonst wirken sie manieriert.
- Ein Profil pro Genre. Wer Horror und Romance schreibt, legt zwei Profile an.
- Profile leben.
chapter-voice-harvestlernt schon während des Schreibens aus deinen Korrekturen; nach jedem Buch zusätzlichharvest-author-ruleslaufen lassen, damit Erkenntnisse im nächsten Buch durchgesetzt werden. - Vorsicht mit kurzen Verboten. Ein-Wort-Verbote wie
like,thingoderwayhaben legitime Verwendungen. Als Backtick-Eintrag trifft`thing`sogar mitten insomething. Besser als Tic mit[warn]und Kapitel-Limit anlegen, oder als Regex mit Wortgrenze (`\bthing\b`). - Wirkung prüfen.
/storyforge:author-checkzeigt, ob die positiven Stilmuster im Entwurf ankommen.
Fehlerbehebung
Das Profil greift beim Schreiben nicht
Der Chapter Writer produziert generischen Text mit Wörtern wie delve oder tapestry, obwohl ein Profil existiert.
Mögliche Ursachen:
- Weder die Buch-
CLAUDE.mdnoch die README.md liefern einen Slug: Die Zeile- **Author:** ...fehlt (kein Werkzeug schreibt sie automatisch) und das Feldauthor:im README-Frontmatter ist leer oder fehlt. - Der Slug aus dem Namen stimmt nicht mit dem Verzeichnis
~/.storyforge/authors/{slug}/überein. - Die Wörter stehen nur in
vocabulary.md, aber nicht in den Writing Discoveries. Die Datei wird nicht gelesen. Migriere sie oder trage die Phrasen mitwrite_author_banned_phraseein. - Die Datenbank
~/.storyforge/db/authors.dbfehlt oder ist nicht lesbar. - Der Hook läuft nicht (Setup nicht durchgeführt, Plugin nicht aktiv). Prüfe mit
/hooks. - Ein Backtick-Eintrag trifft die Beugung nicht (
`delve`findetdelvingnicht). Lege einen Regex oder einen flachen Eintrag an. - Ein migrierter Eintrag mit Fettdruck hat weder Backtick noch kursive Beispielphrase, und der Fettdruck steht nicht am Anfang der Zeile — der Bold-Title-Fallback erkennt ihn dann nicht.
Mit get_author(slug) siehst du, welche writing_discoveries tatsächlich gespeichert sind.
Der Hook meldet unerwartet
Die Meldung lautet etwa Banned by author voice, die Phrase gehört aber zur gewollten Stimme. Entferne den Eintrag aus den Writing Discoveries, oder setze für das Buch linter_mode: warn als Notfall-Override.
Der Voice-Check meldet viele AI-Tells trotz Profil
Bei langen Passagen rutscht mehr durch. Der Hook meldet nur Musterfunde, der voice-checker bewertet zusätzlich Strukturen. Schreibe szenenweise und lass nach jeder Szene bei Bedarf den voice-checker oder den chapter-humanizer laufen.