Zurück zur StoryForge-Hauptseite
Das Autorenprofil ist der Kern von StoryForge. Ohne Profil schreibt das Plugin nicht. Das ist Absicht — ein Autorenprofil ist das, was verhindert, dass dein Text wie generischer KI-Output klingt.
Ein Autorenprofil ist keine Marketing-Persona. Es ist ein Satz von Parametern, der bestimmt, wie Prosa auf Satz-, Absatz- und Dialog-Ebene gebaut wird. Die Qualität deines Buchs hängt direkt an der Qualität deines Autorenprofils.
Sprint-1-Update: Die
vocabulary.mdeines Autors ist seit Sprint 1 nicht mehr nur eine Soft-Reference für den Voice-Checker — sie wird vom PostToolUse-Hook live beim Schreiben als Hard-Block-Quelle gelesen. Jedes Wort aus den### Forbidden ...-Sektionen blockt den Schreib-Vorgang perexit 2. Siehe Hook-Integration weiter unten.
Autoren-weite Don'ts: Neben
vocabulary.mdliest der Hook jetzt auch die Sektion## Writing Discoveries / ### Don'tsausprofile.md. Patterns die du dort als Backtick-Regex (`\bthe (room|silence) (received|held)\b`) oder kursive Beispielphrasen (*The room received it.*) hinterlegst, blocken den Write für jedes Buch dieses Autors. Zusätzlich scannt dermanuscript-checkerdieselbe Sektion plusvocabulary.md— Author-Level-Regeln müssen nicht mehr in jede einzelne Buch-CLAUDE.mddupliziert werden.
KI-Modelle haben einen "Default-Stil": leichte Eleganz, abstrakt-poetische Nomen, variante-arme Sätze, dialogbeats statt Subtext. Dieser Default klingt überall gleich — egal ob Horror oder Romance. Der Voice-Checker nennt das "AI-Tells".
Autorenprofile sind die Gegenmaßnahme:
Wenn der chapter-writer läuft, lädt er immer zuerst das Profil. Jeder Prompt-Kontext enthält die Profil-Parameter. Wenn der Write versucht wird, prüft der PostToolUse-Hook zusätzlich gegen die vocabulary.md — Banned Words werden hart abgelehnt.
Autorenprofile liegen außerhalb des Plugin-Verzeichnisses, damit sie Plugin-Updates überleben:
~/.storyforge/authors/{slug}/
├── profile.md # Haupt-Profil (YAML Frontmatter + Prosa)
├── vocabulary.md # Forbidden Sections (Hook-Banlist) + Preferred + Signature
├── studied-works/ # Analyse-Ergebnisse aus importierten PDFs/EPUBs
│ ├── my-novel-2023.md
│ └── short-story-collection.md
└── examples/ # Manuelle Beispieltexte (optional)
└── voice-sample-1.md
---
name: "Maja Sundberg"
slug: "maja-sundberg"
created: "2026-04-24"
updated: "2026-04-24"
primary_genres: ["contemporary", "mystery", "literary-fiction"]
narrative_voice: "third-person-limited"
tense: "past"
tone: ["melancholic", "understated", "coastal"]
sentence_style: "varied-short-to-long"
vocabulary_level: "moderate-with-regional-terms"
dialog_style: "naturalistic-with-dialect-markers"
pacing: "slow-build-with-occasional-sharp-accelerations"
themes: ["memory", "loss", "the-sea-as-character"]
influences: ["Jon Fosse", "Siri Hustvedt", "Per Petterson"]
avoid:
- "purple-prose"
- "info-dumps"
- "deus-ex-machina"
- "therapist-speak"
- "epiphany-moments"
author_writing_mode: "outliner"
native_language: "sv" # ISO 639-1: Muttersprache (für Erklärungen im chapter-proofreader)
preferred_writing_language: "sv" # ISO 639-1: Fallback wenn kein book_language gesetzt
---
Pflicht-Felder:
| Feld | Werte |
|---|---|
name |
Menschlicher Name des Autors/Persona |
slug |
URL-sicherer Slug (Dateisystem-Name) |
narrative_voice |
first-person, third-person-limited, third-person-omniscient, second-person |
tense |
past, present, mixed |
author_writing_mode |
outliner, plantser, discovery |
Wichtige optionale Felder:
tone — Array von Deskriptoren (3-5 empfohlen)sentence_style — "varied", "short-terse", "long-flowing", "mixed"vocabulary_level — "sparse", "moderate", "rich", "dense"dialog_style — "naturalistic", "stylized", "minimal", "dialectal"pacing — "tension-driven", "meditative", "action-heavy", "slow-build"themes — Zentrale thematische Obsessioneninfluences — Literarische Vorbilderavoid — Was dieser Autor nie machtnative_language — Muttersprache des Autors (ISO 639-1, z.B. de, fr, sv) — bestimmt die Sprache der Erklärungen im chapter-proofreaderpreferred_writing_language — Standardmäßige Schriftsprache (ISO 639-1) — Fallback wenn kein book_language im Buch-Frontmatter gesetzt istNach dem Frontmatter folgen strukturierte Prosa-Abschnitte:
## Writing Style
Maja schreibt mit der Ökonomie einer Dichterin und dem Rhythmus eines Songs.
Ihre Sätze wechseln zwischen 6-Wörter-Fragmenten und 40-Wörter-Bögen.
Sie beschreibt nie direkt eine Emotion — sie zeigt sie durch Objekte,
Landschaft, Körperhaltung.
## Narrative Approach
- **POV:** Third-person limited, stark in der POV-Figur verankert
- **Tense:** Past, außer in Erinnerungen — dann kursive Präsens-Inserts
- **Sentence style:** Variant. Kurze Stakkato-Sätze in Konflikt-Momenten.
Lange Schachtel-Sätze in reflektiven Passagen.
- **Dialog approach:** Naturalistisch mit regionalen Markern (Nordsee-Dialekt).
## 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.
- **Silence-heavy dialog:** Lange Pausen im Dialog, markiert durch "—"
oder Handlung zwischen zwei Zeilen.
## Tone & Atmosphere
Melancholisch, aber nicht depressiv. Das Meer ist immer präsent — als
Trost, Bedrohung, Spiegel. Humor nur trocken, nie albern.
## Strengths
- Atmosphäre durch Auslassung
- Dialog, der mehr zeigt als sagt
- Regionale Authentizität ohne Pastiche
## Deliberate Imperfections
- Wiederholt gerne "später" und "wieder" — keine stilistische Fehler,
sondern Rhythmus-Marker
- Kurze Sätze am Absatz-Ende sind häufig: "Das war alles."
- Fragmente als Stilmittel: "Ein Boot. Weit draußen. Kein Licht."
## Influences & Comparable Authors
- Jon Fosse (Septologie) — für Repetition und langsames Tempo
- Siri Hustvedt — für intellektuelle Tiefe ohne Didaktik
- Per Petterson — für nordische Kühle und Landschafts-Prosa
## Anti-Patterns
- **Keine inneren Monologe**, die das erklären, was gerade passiert ist
- **Keine Therapie-Sprache** ("Ich fühle mich ausgeliefert")
- **Keine Epiphany-Momente** — Figuren erkennen nie "plötzlich alles"
- **Keine rhetorischen Fragen** im Erzähler-Text
- **Keine abstrakten Nomen**: journey, tapestry, realm, essence
Das ist die operativ wichtigste Datei. Hier werden konkrete Wörter definiert, die blockiert oder bevorzugt werden. Seit Sprint 1 wird sie vom PostToolUse-Hook live als Hard-Block-Quelle gelesen.
Damit der Hook die Banned Words findet, müssen sie unter genau einer dieser vier ### Forbidden ...-Subsections stehen (innerhalb eines beliebigen ## Banned Words ...-Headers):
# Vocabulary — Maja Sundberg
## Banned Words — AI Tells
### Absolutely Forbidden
- delve / delve into
- tapestry (metaphorical)
- nuanced
- vibrant
- pivotal
- realm
- testament
- journey (metaphorical)
### Forbidden Hedging Phrases
- it's worth noting that
- arguably
- broadly speaking
- one might say
- to put it simply
### Forbidden Emotional Tells
- her heart raced
- a wave of emotion
- he felt the weight of
- she felt safe
- held space
### Forbidden Structural Patterns
- in essence
- at its core
- this underscores the importance of
- a key takeaway is
- from a broader perspective
## Preferred Words
Wörter, die diese Autorin aktiv nutzt. Wird bei Wort-Wahl-Konflikten
bevorzugt eingesetzt.
### Alltag
- Tasse (nie Becher)
- Boot (nie Schiff, wenn klein)
- Weg (nie Pfad)
### Regionale Marker (Nordsee)
- Schiet (mild)
- moin (Gruß)
- fierern (locker lassen)
- büschen (ein bisschen)
## Signature Phrases
Wendungen, die typisch für diese Autorin sind. Maximal 2x pro Buch
verwendet (sonst wird es Manier).
- "...und dann war es still."
- "So war das."
- "Nicht heute."
Wichtig: Sektionen außerhalb der vier offiziellen
### Forbidden ...-Subheadings werden vom Hook nicht als Banlist erkannt. Eine## Preferred Vocabulary-Section neben## Banned Wordsist sicher — Wörter dort werden nicht versehentlich geblockt.
Der Hook unterstützt zwei Konventionen pro Bullet:
delve / delve into → wird in zwei separate Patterns gesplittet (delve und delve into)tapestry (metaphorical) → wird gestrippt, das Pattern ist nur tapestry### Don'ts und ### Recurring TicsZwei weitere Subsections unter ## Writing Discoveries in der profile.md füttern Hook und Manuscript-Checker mit autoren-weiten Banlists:
### Recurring TicsPhrasen, die das Skill /storyforge:harvest-author-rules aus fertigen Büchern extrahiert hat. Jeder Bullet hat einen Bold-Titel mit gequoteter Phrase als scannbarem Pattern:
## Writing Discoveries
### Recurring Tics
- **Vague-noun "thing" als Fallback** — "doing a thing with his hand"
oder ähnliche Konstruktionen sofort konkretisieren.
- **"count" als Zeitmarker-Tic** — *for a count of X*, *a long count* —
Max. 2–3 pro Kapitel.
Der Hook extrahiert die Phrase in doppelten Anführungszeichen (oder fällt zurück auf den Bold-Titel selbst, wenn keine Quotes da sind). Das Skill /storyforge:harvest-author-rules schreibt automatisch in dieser Form.
### Don'tsForbidden Shapes, die für alle Bücher dieses Autors gelten. Format-Konvention:
### Don'ts
- **Never use word-count meta-commentary** — *Two words. He had not used them often.* /
*One word. The same way he texted.* The narrator must not count spoken syllables.
- **Never personify rooms or silences as receivers** —
`\bthe (room|silence|quiet) (received|held|carried|absorbed)\b`
Pattern-Quellen pro Bullet (Reihenfolge der Auswertung):
| Form | Wann extrahiert | Beispiel |
|---|---|---|
| Backtick-Regex | immer | `\bthe room received\b` |
| Backtick-Literal | immer | `Two words.` |
| Doppelte Quotes | nur bei Ban-Cue (Never, Avoid, ...) |
"totally landed" |
Italic (*...*) |
nur bei Ban-Cue | *The room received it.* |
Trailing Satzzeichen (., ,, !, ?, ;, :) werden bei kursiven Patterns automatisch gestrippt, damit *The room received it.* auch The room received it without complaint matched.
Format-Tipp: Der Anti-Pattern-Katalog
reference/craft/anti-ai-patterns.md(Sektion 11 — Elegant Abstraction Register) liefert fertige Backtick-Regexes für die fünf häufigsten AI-Tells. Direkt copy-paste in deine### Don'tsund schon scannen Hook + Manuscript-Checker für jedes Buch dieses Autors.
| Quelle | Hook (Write-Block) | Manuscript-Checker (Post-Draft) |
|---|---|---|
vocabulary.md ### Forbidden ... |
ja, severity block |
ja, category author_vocab_violation |
profile.md ### Recurring Tics |
ja, severity block |
ja, category writing_discovery_violation |
profile.md ### Don'ts |
ja, severity block |
ja, category author_rule_violation |
profile.md ### Style Principles |
nein (Prosa-Regel) | nein (Prosa-Regel) |
Katalog anti-ai-patterns.md Sektion 11 (Shape-Regex) |
ja, severity warn (auto, alle Autoren) |
ja, category global_shape_violation, severity medium |
Style Principles sind absichtlich nicht maschinell scannbar — sie sind narrative Anweisungen für chapter-writer und chapter-reviewer, keine Phrase-Banlists.
Globale Shape-Bans: Die fünf+1 elegant-abstraction-Shapes aus
reference/craft/anti-ai-patterns.mdSektion 11 (Word-Count-Meta, Sentence-as-Projectile, Room-as-Receiver, Economic-Metaphor, Near-Miss-Body, Body-Part-Anthropomorphisierung) sind automatisch für jeden Autor aktiv — keine Kopie in### Don'tsnötig. Severity istwarn(Hook) bzw. medium (manuscript-report). Wer einen Shape hart blocken will (Writeschlägt fehl), kopiert die Regex aus Sektion 11 in### Don'ts— dann gilt sie als user-asserted und blockt für diesen Autor.
Write auf chapters/22-the-night-before/draft.md- **Author:** Ethan Coleethan-cole~/.storyforge/authors/ethan-cole/:
vocabulary.md → alle ### Forbidden ...-Sektionenprofile.md ## Writing Discoveries / ### Recurring Tics → Bold-Title-Bullets mit gequoteten Phrasenprofile.md ## Writing Discoveries / ### Don'ts → Backtick-Regex und kursive Phrasen (unter Ban-Cue) aus jedem BulletDamit der Hook den richtigen Autor findet, muss die Buch-CLAUDE.md eine ## Book Facts-Section haben:
## Book Facts
- **Author:** Ethan Cole (Eddings-humor with Twilight-stakes)
- **POV:** Theo Wilkons (third-person limited)
- **Tense:** Past
Der Hook regex'd auf - **Author:** <name> und slugifiziert dann den Namen. Beispiele:
| Display-Name | Slug |
|---|---|
| Ethan Cole | ethan-cole |
| Maja Sundberg | maja-sundberg |
| Henri Delacroix | henri-delacroix |
| Ursula K. Le Guin | ursula-k-le-guin |
Die Klammer-Annotation hinter dem Namen wird ignoriert.
Single-Words (kein Leerzeichen, kein Bindestrich) matchen automatisch Inflektionen:
| Pattern | Matched in Prose |
|---|---|
delve |
delve, delved, delving, delves |
embark |
embark, embarked, embarking, embarks, embarkment |
vibrant |
vibrant, vibrants, vibrantly |
Logik: Single-Words mit silent-e (delve, embrace) verwenden den Stem ohne e (delv, embrac) plus \w*. Andere Single-Words verwenden Pattern + \w*. Leading word-boundary in beiden Fällen — redelve matched nicht das delve-Pattern.
Multi-Word-Phrasen werden exakt gematcht:
| Pattern | Matched? |
|---|---|
it's worth noting that |
nur die ganze Phrase |
her heart raced |
nur die ganze Phrase |
Theo schreibt im Draft She delved into the box.:
StoryForge linter blocked this write:
[BLOCK] draft.md line 8: Banned by author voice
(author-vocab (Absolutely Forbidden)): 'delve'
Fix the blocking issues and try again. Set `linter_mode: warn` in the
book's CLAUDE.md frontmatter to override.
Das Modell empfängt diese Meldung in stderr und muss delve ersetzen, bevor der nächste Write akzeptiert wird.
Wenn ein vocabulary-Pattern für ein bestimmtes Buch zu aggressiv ist:
### Absolutely Forbidden entfernen und in eine eigene Notiz-Section (z.B. ## Soft Watch) verschieben — Hook ignoriert sie dannlinter_mode: warn in der Buch-CLAUDE.md-Frontmatter setzen — alle Block-Severity-Findings werden zu Soft-Warnings degradiert (nicht selektiv pro Pattern, sondern global)Mehr Details: Quality-System — Pre-Save Hook.
Das Skill /storyforge:study-author importiert eigene Werke (PDF, EPUB, DOCX) und extrahiert Stil-Parameter automatisch.
Satzlänge-Verteilung
Vokabular-Register
Signature Phrases
POV-Patterns
Dialog-Proportion
Absatz-Struktur
# Studied Work: Die Insel bei Nacht (2023)
## Style Parameters Extracted
### Sentence Length
- Mean: 16.3 words
- Median: 14 words
- StdDev: 9.8 words (hoch — human-typical)
- Range: 2-47 words
### Vocabulary
- 8,423 unique content words over 82,000 total
- Top 5 content words: "Meer" (184), "Licht" (142), "Mutter" (127),
"immer" (118), "wieder" (112)
- Dialect markers: "moin" (23x), "Schiet" (8x), "büschen" (11x)
### Filter Word Usage (per 10,000 words)
- saw: 12 (niedrig)
- heard: 8 (niedrig)
- felt: 15 (niedrig)
- → Sehr zurückhaltender Filter-Word-Gebrauch
### Dialog Proportion
- 23% Dialog, 77% Narration
- Dialog-Tags: 78% "sagte", 15% kein Tag, 4% "fragte", 3% andere
### Signature Phrases (>3x)
- "und dann war es still" (6x)
- "So war das" (14x — sehr signature)
- "nicht heute" (4x)
- "das Meer war [X]" (11x)
## Update to profile.md
- Adding signature_phrases
- Setting sentence_style: "varied-high-variance"
- Setting vocabulary_level: "moderate"
- Adding regional markers to preferred words
- Adding "felt"/"saw"/"heard" soft-cap (max 10 per chapter)
Das Skill schreibt diese Erkenntnisse automatisch in profile.md und vocabulary.md.
Ein User kann beliebig viele Profile haben:
~/.storyforge/authors/
├── maja-sundberg/ # Für literary/contemporary
├── maja-sundberg-thriller/ # Für Thriller (andere Kadenz)
├── ghostwriter-1/ # Für Kunden-Aufträge
└── test-voice/ # Experimentier-Profil
Pro Buch wird ein Autor gewählt (author_slug im Buch-Frontmatter, plus **Author:**-Zeile in der Buch-CLAUDE.md für Hook-Integration). Kann bei neuem Buch geändert werden.
Das Feld author_writing_mode steuert, welcher Workflow automatisch vorgeschlagen wird:
| Wert | Effekt |
|---|---|
outliner |
new-book schlägt Full-Outliner-Pipeline vor |
plantser |
plot-architect wechselt in MVO-Modus (6 Beats) |
discovery |
new-book überspringt plot-architect, schlägt rolling-planner vor |
Das Autorenprofil kann den Modus pro Buch überschreiben — z.B. eine Outliner-Autorin schreibt eine experimentelle Novelle im Discovery-Modus.
Zwei Felder steuern die Sprachlogik für sprachbewusste Skills wie chapter-proofreader:
| Feld | Ebene | Zweck |
|---|---|---|
native_language |
Autor | Muttersprache — bestimmt die Erklärungssprache im Proofreader |
preferred_writing_language |
Autor | Standard-Schreibsprache — Fallback wenn kein book_language im Buch gesetzt |
book_language |
Buch | Autoritativ per Buch — überschreibt preferred_writing_language |
Auflösungsreihenfolge für die Schreibsprache:
book_language (Buch-Frontmatter)
→ preferred_writing_language (Autorenprofil-Fallback)
→ "en" (globaler Fallback)
Beispiel: Ethan Cole schreibt normalerweise auf Englisch (preferred_writing_language: en), hat Deutsch als Muttersprache (native_language: de). Der chapter-proofreader prüft die Grammatik nach englischen Regeln und erklärt Fehler auf Deutsch — ohne dass jedes Buch diese Info neu setzen muss.
native_languageundpreferred_writing_languagewerden beim/storyforge:create-author-Workflow in Phase 1 abgefragt und via MCPupdate_author()persistiert. Für bestehende Profile:update_author(slug, "native_language", "de").
Fiktiver Autor "Henri Delacroix" — Historical Mystery, Frankreich, 1920er.
---
name: "Henri Delacroix"
slug: "henri-delacroix"
created: "2026-04-24"
primary_genres: ["historical", "mystery"]
narrative_voice: "first-person"
tense: "past"
tone: ["wry", "world-weary", "ironic", "slightly-cynical"]
sentence_style: "long-flowing-with-sharp-short-punchlines"
vocabulary_level: "rich-period-appropriate"
dialog_style: "formal-with-class-markers"
pacing: "meditative-build-with-sudden-violence"
themes: ["lost-era", "class-tension", "self-deception"]
influences: ["Georges Simenon", "Graham Greene", "Patrick Modiano"]
avoid:
- "modern-slang"
- "anachronistic-references"
- "info-dumps-on-period"
- "first-person-present"
author_writing_mode: "outliner"
native_language: "fr" # ISO 639-1: Muttersprache
preferred_writing_language: "fr" # ISO 639-1: Schreibt auf Französisch
---
# Henri Delacroix
## Writing Style
Erste Person, rückblickend erzählt aus einer späteren Zeit (meist 20 Jahre
danach). Der Erzähler weiß mehr als die Figur in der Szene — aber hält es
bis zum richtigen Moment zurück. Sätze können sich ausbreiten wie Rauch
in einem Bistro, und dann abrupt enden mit einem Beobachtungssatz von
sechs Wörtern.
## Narrative Approach
- **POV:** Erste Person, stark reflexiv
- **Tense:** Präteritum, gelegentlich historisches Präsens bei Spannungs-Szenen
- **Dialog approach:** Formal, mit klaren Klassen-Markern
(Vouvoiement vs. Tutoiement streng beachtet)
## Signature Techniques
- **"Ich hätte wissen müssen..."-Eröffnungen:** Rückblickender Narrator
deutet früh an
- **Objektkataloge:** Szenen beginnen oft mit einer Liste von 3-5 Objekten
im Raum
- **Dialog-Bruch:** Figuren vollenden Sätze anderer Figuren nicht — sondern
werfen plötzlich ein anderes Thema ein
## Tone & Atmosphere
Wryness wie ein alter Cognac. Humor ist da, aber trocken. Die Welt ist
schön, aber unzuverlässig. Gewalt kommt plötzlich, wird aber nicht
zelebriert — sie ist ein Einschnitt, keine Attraktion.
## Deliberate Imperfections
- "Ich weiß nicht, warum ich..." als Phrase, die 2-3x pro Buch vorkommt
- Gedankenstriche (—) häufig für Gedanken-Brüche
- Einzelsatz-Absätze zum Abschluss von Szenen, immer 6-10 Wörter
## Anti-Patterns
- NIEMALS moderne Psychologie-Begriffe (trauma, triggered, boundaries)
- NIEMALS amerikanische Idiome
- NIEMALS "es war das Jahr 1924" (Info-Dump)
→ Stattdessen: Details aus dem Jahr natürlich einstreuen (Preise, Marken,
Zeitungen)
Vocabulary für Henri Delacroix:
# Vocabulary — Henri Delacroix
## Banned Words — AI Tells
### Absolutely Forbidden
- trigger (als Verb)
- realm
- journey (metaphorisch)
- cool (als Adjektiv für Gelassenheit)
- processing (als mentales Verarbeiten)
### Forbidden Hedging Phrases
- arguably
- broadly speaking
- to put it simply
### Forbidden Emotional Tells
- "she was strong" — zu modern
- felt safe (anachronistisch)
- held space (anachronistisch)
### Forbidden Structural Patterns
- in essence
- at its core
## Preferred Words
- Kaffee-Haus (nie Café, wenn Erzähler zurückblickt — zeittypisch)
- Autodroschke (nie Taxi)
- Fernsprecher (für 1920er-Szenen)
## Signature Phrases (max 2x)
- "Ich hätte wissen müssen..."
- "Der Regen war schon gefallen, bevor ich..."
- "Man sagte damals..."
StoryForge kommt mit einem eingebauten Anti-Pattern-Katalog (reference/craft/anti-ai-patterns.md). Der voice-checker vergleicht jeden Text gegen diese Liste (Soft, post-draft), der PostToolUse-Hook scannt sie ebenfalls — als Warn-Severity (AI-tell '<word>' found).
Typische AI-Tells:
Promotion zu Hard-Blocks: Die globalen AI-Tells aus
anti-ai-patterns.mdwerden vom Hook als warn ausgegeben (nicht block). Zwei Wege, sie zu Hard-Blocks zu promoten:
- Vokabel-Bann: Einzelwörter in
vocabulary.md ### Absolutely Forbidden— funktioniert mit Inflektions-Matching (delve→delved,delving).- Shape-Bann: Strukturelle Patterns (z. B. die fünf elegant-abstraction-Shapes aus Sektion 11) in
profile.md ### Don'tsals Backtick-Regex — funktioniert für ganze Phrasen-Familien über Regex-Alternation.Beide Quellen blocken den Write und sind für
manuscript-checkersichtbar. Keine Per-Book-Duplikation mehr nötig.
Spezifität > Generik. "Melancholic tone" ist schwach. "Melancholic, nordisch-kühl, mit Fokus auf das Meer als dritte Figur" ist stark.
### Absolutely Forbidden immer füllen. Ein leeres vocabulary.md ist so gut wie kein Profil — und der Hook hat dann nichts zum Blocken.
Studied Works sind der Booster. Ein Autorenprofil ohne studied works ist wie ein Schauspieler ohne Proben. Importiere mindestens 1-2 eigene oder stilistisch verwandte Werke.
Signature Phrases nicht erfinden — erst wenn sie in studied works tatsächlich vorkommen. Künstliche Signature Phrases werden manieriert.
Ein Profil pro Genre. Wenn du Horror und Romance schreibst, mach zwei Profile. Sogar wenn es dich selbst abbildet — der Schreibstil unterscheidet sich signifikant.
Profile leben. Nach jedem Buch: Update. Neue Signature Phrases? Preferred Words, die sich eingeschlichen haben? Rein damit. Neue Banned Words aus Beta-Feedback? Direkt in ### Absolutely Forbidden.
Vorsicht mit zu kurzen Banned-Patterns. Ein-Wort-Banns wie like, thing, way haben legitime Verwendungen. Wenn du sie in ### Absolutely Forbidden einträgst, blockt der Hook bei jedem dialect-üblichen like — was schnell nervt. Solche Wörter besser im manuscript-checker als Soft-Pattern halten (per-Buch CLAUDE.md mit Quote statt Backtick).
Symptom: Chapter-writer produziert generischen Text mit delve, tapestry etc., obwohl Profil existiert.
Mögliche Ursachen:
- **Author:** ...-Zeile → Hook findet keinen Slug~/.storyforge/authors/{slug}/ übereinvocabulary.md hat keine ### Absolutely Forbidden-Section (oder anderen Subheading-Namen)Diagnose:
# Slug-Auflösung prüfen
~/.storyforge/venv/bin/python3 -c "
from pathlib import Path
import sys
sys.path.insert(0, '/home/<user>/projekte/storyforge')
from tools.banlist_loader import author_slug_from_book, load_author_vocab
book = Path('/pfad/zum/buch')
slug = author_slug_from_book(book)
print(f'Slug: {slug}')
patterns = load_author_vocab(slug) if slug else []
print(f'Patterns geladen: {len(patterns)}')
for p in patterns[:5]:
print(f' → {p.label!r}')
"
Fix je nach Ursache:
## Book Facts + - **Author:** <Name>vocabulary.md Section-Headings auf ### Absolutely Forbidden etc. anpassen/storyforge:setup neu laufen lassenSymptom: Write schlägt fehl mit Banned by author voice (...), aber die Phrase ist Teil der gewollten Voice.
Lösungen:
### Absolutely Forbidden entfernen## Soft Watch-Section verschieben (Hook ignoriert)linter_mode: warn in Buch-CLAUDE.md-Frontmatter (Notfall-Override für ganze Buch)Symptom: Voice-Checker meldet hohe AI-Tell-Dichte, obwohl Profil und Hook stark sind.
Ursache: Scene-by-scene-Mode war aus, User hat "full chapter" gewählt. Bei langen Passagen rutscht mehr durch (Hook blockt nur Pattern-Treffer, Voice-Checker prüft auch Strukturen).
Fix: