Use when complete novel and fiction writing skill covering story structure, character creation, world-building, dialogue, pacing, and chapter craft. Adopts Chinese novelist patterns (show-don't-tell, conflict, cliffhanger) plus Western frameworks. Includes kids books (picture book, middle grade) and Buku Bahasa Indonesia for Indonesian fiction. Use when writing novels, short stories, or children's fiction.
This is a complete fiction writing system that adopts the proven patterns from the popular chinese-novelist skill (penglonghuang, 4.9K installs) and extends them with Western novel craft frameworks, character creation systems, world-building methodology, genre conventions, and code-backed workflows.
Three Golden Rules (adopted from chinese-novelist)
#
Rule
Meaning
1
Show, Don't Tell
Dramatize emotions through action, dialogue, and sensory detail — never state feelings flatly
2
Conflict Drives Plot
Every scene must contain tension between opposing forces (character vs. character, self, nature, society)
3
Cliffhanger Chapters
End each chapter at a decision point or revelation — make readers turn the page
Key Features (adopted & expanded)
Feature
From Reference
Expansion
Interrupted Continuation
Resume from any text prompt
Also: scene-stub, outline, or character note
Auto-Validation
Chapter quality & self-refine
Also: continuity checker, character voice checker, pacing analyzer
Parallel Writing
Multiple chapters, one prompt
Also: multiple POVs, parallel timelines
Multi-Language
Adapts to user language
Bilingual: English + Chinese web novel patterns
Quick Start — Minimal Viable Process
For small-context models or when you need the minimum to start writing:
Pick a story structure — Three-Act, Hero's Journey, or Save the Cat (see Story Structure below)
Define each major character's GMC — Goal, Motivation, Conflict (see Character Creation)
Write chapters as Entry → Escalation → Exit Hook (see Chapter Craft)
Run auto-validation after each chapter (see Auto-Validation)
Three-pass revision: structure → scene craft → line edit (see Revision Workflow)
Genre-specific templates (Fantasy, Mystery, Chinese Web Novel, Kids Books, Buku Indonesia) are in Genre Templates below. Skip them unless they apply to your project.
Story Structure
1. Three-Act Structure
ACT I (Setup) — 25% ACT II (Confrontation) — 50% ACT III (Resolution) — 25%
┌──────────────┐ ┌──────────────────────┐ ┌──────────────────┐
│ • Inciting │ │ • Rising action │ │ • Climax │
│ Incident │───→ │ • Midpoint twist │───→ │ • Falling action │
│ • First │ │ • "All is lost" │ │ • Denouement │
│ Plot Point │ │ • Darkest moment │ │ • Final state │
│ • Key Q: │ │ • Q: Can they win? │ │ • Q: What changed?│
│ "Who is │ │ │ │ │
│ the hero?" │ │ │ │ │
└──────────────┘ └──────────────────────┘ └──────────────────┘
2. Hero's Journey (Campbell / Vogler)
beat = {
"ordinary_world": "Hero in their normal life",
"call_to_adventure": "Something disrupts the normal",
"refusal_of_call": "Hero hesitates or refuses",
"meeting_mentor": "Guide provides wisdom/tool",
"crossing_threshold": "Hero commits to the journey",
"tests_allies_enemies": "Learning the new world's rules",
"approach_inmost_cave": "Preparing for greatest challenge",
"ordeal": "Hero faces their biggest fear — often a death/rebirth",
"reward": "Hero gains what they sought",
"road_back": "Return journey, not yet safe",
"resurrection": "Final test — transformed, they face one last trial",
"return_elixir": "Hero returns with wisdom to share",
}
# Check: does your story map to at least 8 of 12 beats?
assert sum(1 for b, v in beat.items() if v != "") >= 8
3. Save the Cat! (Blake Snyder)
Beat
Page %
What Happens
Opening Image
1%
A snapshot of the hero's flawed world
Theme Stated
5%
What the hero needs to learn (stated by someone else)
Set-Up
1–10%
Hero's flaw, supporting cast, stakes
Catalyst
10%
Inciting event — everything changes
Debate
10–20%
Should I go? Doubt and weighing options
Break into Two
20%
Hero chooses the new world
B Story
22%
A relationship that teaches the theme
Fun and Games
20–55%
The promise of the premise — the fun part
Midpoint
55%
False victory OR false defeat — stakes escalate
Bad Guys Close In
55–75%
Pressure mounts; hero loses allies, confidence, or ground
All Is Lost
75%
A death, betrayal, or failure — no way out
Dark Night of the Soul
75–85%
Grief, reflection, and finding the real answer
Break into Three
85%
Hero discovers the actual solution
Finale
85–99%
Hero applies the lesson — climax
Final Image
99–100%
Mirror of opening image — shows transformation
4. Kishōtenketsu (Classical Four-Act Structure — No Conflict Required)
Stage
Japanese
Function
Introduction
起 (ki)
Present a scene, setting, or normal state
Development
承 (shō)
Deepen or expand — add new element
Twist
転 (ten)
Unexpected turn: something doesn't fit
Resolution
結 (ketsu)
Connect, reveal harmony, show deeper meaning
Best for: literary fiction, slice-of-life, and stories where discovery displaces conflict.
5. Chinese Web Novel (网文) — Three Golden Chapters (黄金三章)
The first three chapters must:
Chapter 1 — The Hook (开篇) : Introduce protagonist with a clear flaw or misfortune → hint at cheat/counterattack coming
Chapter 2 — The System (金手指) : Reveal the unique advantage (cheat skill, system, transmigration knowledge, hidden inheritance)
Chapter 3 — The Payoff (打脸) : First satisfying face-slap moment — protagonist uses their advantage to overcome an early opposer
Pacing formula: Small victory every 3–5 chapters (小爽点), medium victory every 10–15 chapters (中爽点), arc climax every 30–50 chapters (大高潮).
Character Creation
GMC (Goal / Motivation / Conflict)
Every character needs a clear GMC per story arc:
@dataclass
class CharacterGMC:
goal: str # What they want
motivation: str # Why they want it (emotional need)
conflict: str # What stops them (internal + external)
@dataclass
class CharacterArc:
beginning_gmc: CharacterGMC
midpoint_shift: str # How GMC changes at midpoint
ending_gmc: CharacterGMC # How GMC resolves
inner_flaw: str # The lie they believe
truth_to_learn: str # What accepting the truth looks like
def validate_character_arc(arc: CharacterArc) -> list[str]:
"""Check arc coherence — does the character actually change?"""
issues = []
if arc.beginning_gmc.goal == arc.ending_gmc.goal:
issues.append("Goal didn't change — flat arc without intentional design")
if arc.beginning_gmc.motivation == arc.ending_gmc.motivation:
issues.append("No motivational shift — missing emotional growth")
return issues
Character Voice Profile
@dataclass
class CharacterVoice:
name: str
archetype: str # hero, mentor, trickster, shadow, herald, etc.
speech_pattern: str # e.g. "formal, uses full sentences" | "halting, with filler words"
vocabulary_tier: int # 1 (simple) to 5 (erudite)
pet_phrases: list[str] = None
tells_lie_when: str = "" # Under what pressure they lie
emotional_giveaway: str = "" # Body language that betrays them
def sample_dialogue(self, emotion: str, topic: str) -> str:
"""Generate in-character dialogue sample for consistency checking"""
# Used to validate dialogue attribution scenes
return f"[{self.name} speaking about '{topic}' with {emotion} — style: {self.speech_pattern}]"
Archetype Galaxy
Archetype
Core Drive
Best For
Example
Hero
Prove worth / protect
Protagonist
Katniss Everdeen
Mentor
Pass on wisdom
Guide figure
Haymitch, Obi-Wan
Shadow
Impose will / destroy
Villain
Voldemort, Sauron
Trickster
Disrupt norms / expose truth
Comic relief, chaos agent
Tyrion, Loki
Herald
Announce change
Catalyst character
Fiver in Watership Down
Guardian
Test worthiness
Gatekeeper
The Sphinx at Thebes
Shape-Shifter
Keep identity hidden
Unreliable ally
Snape
Ally
Support / sacrifice
Companion
Samwise Gamgee
World-Building
Sanderson's Three Laws of Magic
First Law: An author's ability to resolve conflict with magic is directly proportional to how well the reader understands that magic
Second Law: Limitations > Powers — what magic CAN'T do is more interesting than what it can
Third Law: Expand before adding — deepen an existing system before adding a new one
Checklist per Fictional Element
def check_world_consistency(element: str, properties: dict) -> list[str]:
"""
Validate a world-building element for internal consistency.
"""
issues = []
if "cost" not in properties:
issues.append(f"'{element}' has no cost — free abilities lack narrative tension")
if "limitation" not in properties:
issues.append(f"'{element}' has no limitations — readers will ask 'why not use X for everything?'")
if "impact" not in properties:
issues.append(f"'{element}' has no shown impact on daily life — magic shouldn't be background wallpaper")
return issues
The Iceberg Principle (Tolkein)
Reveal 10% of your world; know the other 90%. Every reference to history, geography, or culture should feel like it sits on a foundation of real knowledge — even if only the author sees the whole iceberg.
Dialogue Craft
Mechanics Checklist
Subtext: Do characters say what they mean, or what they NEED to say? (Good dialogue: they need to say something else.)
Beats: Action beats replace dialogue tags and reveal character — "She traced the rim of her glass." vs. She said nervously.
Distinct voices: Cover the character names and read — can you tell who's speaking?
Exposition delivery: Information revealed through argument, not through "As you know, Bob..."
Rhythm: Short exchanges for tension; longer sentences for reflection or intimacy
Silence: What characters DON'T say is louder than what they do
On-the-Nose vs. Subtext
ON THE NOSE:
"I'm angry at you for forgetting my birthday."
"Oh, I'm sorry, I was busy with work."
SUBTEXT:
"You remembered the Stark account's anniversary."
"...Was there something else I should have remembered?"
Pacing & Tension
Scene / Sequel (Dwight Swain)
Scene (Proactive)
→
Sequel (Reactive)
Goal
Reaction
Conflict
Dilemma
Disaster
Decision → new goal
Micro-Tension Checklist
Every paragraph: is there a question the reader wants answered?
Exit Hook — Why read the NEXT chapter? (cliffhanger, revelation, decision point, question)
Chapter-Ending Techniques
Technique
Effect
Example
Door slam
Scene ends with bad news
"The king is dead."
Revelation
New info changes everything
"She's your sister."
Question
Reader must find the answer
"What if the monster is real?"
Decision point
Protagonist must choose
The clock read 11:59.
Ironic reversal
Expectation inverted
The hero found the sword — and sold it.
Incoming threat
Danger approaching
"They know where we live."
Parallel Writing (adopted from chinese-novelist)
When writing multiple chapters in one turn:
PROMPT FORMAT:
Write Chapters 4, 5, and 6 of my novel.
For each chapter:
1. Identify the POV character
2. State the scene goal
3. Write complete chapter text
4. End with a hook pointing to the next chapter
5. Count words
VALIDATE each chapter after writing:
- ✓ Word count within target (±500 words)
- ✓ Scene goal achieved or subverted meaningfully
- ✓ At least one Show-Don't-Tell beat
- ✓ Chapter ends with hook
- ✓ POV consistent throughout
Interrupted Continuation (adopted from chinese-novelist)
When resuming from any state — a saved draft, a scene stub, a character note — use:
PROMPT FORMAT:
[Current state: paste what exists — any text]
[Goal: what should happen next in the story]
Continue from the provided text. Do not repeat it.
Identify: what is the next scene's goal?
Write the scene.
Then auto-validate: does it connect logically to what came before?
Auto-Validation (adopted & expanded from chinese-novelist)
After each writing cycle, run validation:
@dataclass
class ValidationResult:
passed: bool
issues: list[str]
def validate_chapter(chapter_text: str, chapter_num: int, prev_hook: str = "") -> ValidationResult:
issues = []
# 1. Word count
wc = len(chapter_text.split())
if wc < 1500 or wc > 6000:
issues.append(f"Word count {wc} outside 1500–6000 range")
# 2. Show-Don't-Tell check — look for telling emotion words
tell_words = {"felt", "felt that", "felt like", "knew that", "realized that", "was angry",
"was sad", "was happy", "was scared", "was excited"}
for word in tell_words:
if word in chapter_text.lower():
issues.append(f"Possible telling: '{word}' — dramatize instead")
break # one warning per chapter
# 3. Cliffhanger check — does last paragraph end with a hook?
final_para = chapter_text.split("\n\n")[-1].strip()
question_markers = ["?" in final_para, "..." in final_para,
any(w in final_para.lower() for w in ["sudden", "reveal", "found", "discover", "then"])]
if not any(question_markers):
issues.append("Chapter may lack a strong exit hook")
# 4. Conflict check — does the chapter have tension?
conflict_words = {"but", "however", "yet", "refused", "fight", "argue",
"struggle", "trap", "betray", "choice", "cost"}
if not any(w in chapter_text.lower() for w in conflict_words):
issues.append("No clear conflict signal detected — ensure tension exists")
# 5. Continuity check (if previous hook provided)
if prev_hook and prev_hook not in chapter_text:
issues.append("Previous chapter's hook not addressed in this chapter's opening")
return ValidationResult(passed=len(issues) == 0, issues=issues)
Self-Refine Loop
def write_with_refine(outline: dict, max_refinements: int = 3) -> str:
"""
Write chapter then auto-validate and refine until clean.
"""
chapter = generate_chapter(outline)
for _ in range(max_refinements):
result = validate_chapter(chapter, outline["chapter_num"], outline.get("prev_hook", ""))
if result.passed:
return chapter # Good enough — ship it
# Fix the most critical issue
fix = identify_fix(result.issues, chapter)
chapter = refine_chapter(chapter, fix)
return chapter # Best effort after max_refinements
Genre Templates
Fantasy
fantasy_epic = {
"world_scope": "multiple continents, distinct cultures",
"magic_system": "defined rules with costs and limitations",
"scale": "the fate of a kingdom or world",
"typical_length": "100,000–150,000 words",
"key_beats": [
"Hero in ordinary/magical world",
"Call to quest (world-threat)",
"Gathering the party",
"Learning the magic rules",
"Confrontation with dark lord",
"Sacrifice and return"
],
"avoid": "info-dumping history in chapter 1; show the world through action"
}
Mystery / Thriller
Beat
Detective Novel
Thriller
Hook
Body is found
Bomb is ticking
Investigation
Suspects interviewed
Chase begins
Twist
Clue points wrong way
Ally betrays
Darkest moment
Case seems unsolvable
All seems lost
Reveal
Identity of killer
Truth exposed
Resolution
Justice served
World restored (changed)
Chinese Web Novel (网文) — 爽文 (Power Fantasy)
爽文 Key Mechanics:
1. 打脸 (Face-Slapping) — The protagonist is underestimated, then decisively proves superiority.
Pattern: Mock → Reveal power → Public humiliation of mocker → Face-slap
2. 扮猪吃虎 (Playing Pig to Eat Tiger) — Protagonist pretends to be weak, then crushes the strong.
Pattern: Disguised weakness → Arrogant antagonist takes bait → Devastating counterattack
3. 装逼打脸 (Show-Off Face-Slap) — Protagonist deliberately provokes to invoke face-slapping chain.
Pattern: Antagonist provokes → Protagonist pretends to be scared → Spring the trap
4. 升级 (Leveling Up) — Clear progression markers with visible power increases.
Each level shows concrete improvement that matters to current conflict.
5. 后宫 (Harem) — Multiple romantic interests (optional, genre-dependent).
Critical: each interest should have distinct personality and role.
Avoid: Protagonist achieving everything easily — tension requires REAL threat.
If protagonist can solve everything, there's no conflict.
Kids Book Writing
Complete guide for children's fiction — from board books to middle grade novels.
Category
Age
Word Count
Format
Key Feature
Board Books
0–3
0–100 words
Thick pages, durable
Sensory, rhythm, simple bold images
Picture Books
3–7
300–800 words
32 pages standard
Illustration-text dance, must be read-aloud
Early Readers
5–8
500–2,500 words
Short chapters, large font
Simple vocab, sight words, short sentences
Chapter Books
7–10
5,000–15,000 words
Short chapters, few illustrations
Simple plots, fast pacing, series-ready
Middle Grade
8–12
25,000–50,000 words
Full novel format
Growing independence, school/friendship stakes
YA (Young Adult)
13–18
50,000–90,000 words
Standard novel
Identity, first love, larger world questions
Picture Book — The 32-Page Standard (Danny G's No-Fail Format)
Practically every picture book naturally follows this arc:
Pages
Beat
Function
1–20
Problem
Establish character, want, obstacle; build through 4–6 spread sequences
21–24
Climax
The BIG moment — character faces the problem directly
25–28
Resolution
Problem solved through character's own action
29–32
Closing
Final page turn — satisfying visual/verbal finish
PAGE TURN = REVEAL. The text on page N must make the reader NEED to turn to page N+1.
Good picture book text has a "curtain" word at each spread break — the word that creates the turn.
Kids Book Craft Essentials
Read-aloud test: Read every draft ALOUD. Every word must earn its place when spoken.
Illustration partnership: What the picture shows, the text doesn't tell — and vice versa. Let the illustrator's half of the story breathe.
Repetition with variation: Pattern → pattern break → pattern return. Kids expect the pattern; the break creates the tension.
Age-appropriate vocabulary: 1–2 challenge words per spread (guessable from context). For early readers, sight words + phonetic decoding.
Refrain / running gag: A repeating line or joke that kids can chant along with (e.g., "I do not like green eggs and ham").
Adult off-stage: If the kid character can solve the problem themselves, the story empowers. If an adult rescues them, it doesn't.
Middle Grade Novel Craft
MG novels look like adult novels but follow different rules:
Criterion
Middle Grade
Adult
Protagonist age
9–12
20+
Stakes
Personal/social — friendship, family, justice
Life/death, career, relationships
Voice
Authentic kid — not an adult remembering childhood
Mature perspective
Adult involvement
Adults present but NOT solving the problem
Adults fully engaged
Ending
Hopeful, earned — often bittersweet OK
Any resolution
def check_mg_compatibility(story: dict) -> list[str]:
"""Screen an outline for MG novel compatibility."""
issues = []
if story.get("protagonist_age", 0) > 14:
issues.append("Protagonist should be 9–12 for true MG voice")
if not story.get("kid_solves_problem", True):
issues.append("Adult rescue invalidates MG empowerment contract")
if story.get("romance_amount", "none") not in ("none", "crush-only"):
issues.append("MG romance stays at crush/awkward-dance level — no consummation")
themes = story.get("themes", [])
kid_friendly = {"friendship", "family", "justice", "identity", "bravery",
"belonging", "curiosity", "difference", "loss"}
if not any(t in kid_friendly for t in themes):
issues.append("Themes should be accessible to 8–12 year old readers")
return issues
Series Architecture for Kids
Kids are series readers. Design for series from the start:
Standalone with series potential — Book 1 tells a complete story but leaves world/characters wanting more
Rising series arc — Each book raises the stakes; a multi-book thread runs underneath
Episodic series — Same characters, same formula, different setting each book (Magic Tree House model)
Middle Grade & Chapter Book Series Models:
• Boxcar Children: Episodic — solve mystery in each book
• Harry Potter: Rising arc — each book bigger threat
• Diary of a Wimpy Kid: Episodic — school year vignettes
• Percy Jackson: Rising arc — quest per book + prophecy thread
• Magic Tree House: Episodic — historical adventure per book
Buku Bahasa Indonesia (Indonesian-Language Fiction)
Panduan lengkap menulis fiksi dalam bahasa Indonesia — untuk pasar penerbitan nasional dan platform digital.
Pasar Buku Indonesia
Indonesia memiliki pasar penerbitan terbesar di Asia Tenggara. Karakteristik utama:
Platform digital → buku cetak: Banyak novel populer berawal dari Wattpad atau Cabaca sebelum diterbitkan secara fisik
Pembaca setia genre: Roman remaja, fiksi Islami, dan horor memiliki basis pembaca yang loyal
Pengaruh media: Adaptasi film/series (Dilan, Ayat-Ayat Cinta, Rindu) mendorong penjualan buku secara signifikan
Harga jual: IDR 50.000–150.000 per buku; margin tipis — volume penjualan adalah kunci
Genre Populer di Pasar Indonesia
Genre
Deskripsi
Target Pembaca
Roman Remaja
Kisah cinta dengan drama sekolah/keluarga; voice ringan, emosional
Remaja 13–18
Fiksi Islami
Novel dengan nilai-nilai Islam, sering mengandung romance/keluarga; ending moral
Dewasa muda 18–35
Horor / Misteri
Kisah mistis berdasarkan urban legend Indonesia; atmosfer lokal yang kuat
16+
Sastra Serius
Novel kontemporer dengan tema sosial, politik, budaya; gaya sastra
20+
Cerita Anak
Dongeng modern, petualangan, nilai moral; bahasa sederhana
4–12
Fiksi Pengembangan Diri
Novel yang menyampaikan pelajaran hidup melalui cerita (inspiratif)
16+
Bahasa Indonesia untuk Penulisan Kreatif
Baku vs. sehari-hari: Narasi menggunakan bahasa baku (formal) tetapi dialog menggunakan bahasa sehari-hari (natural). Jangan tulis dialog seperti buku tata bahasa.
Tingkat kesopanan: Pilih sapaan sesuai hubungan karakter — Anda (formal), Kak/Mas/Mbak (semi-formal akrab), lo/gue (sangat santai, Jabodetabek).
Kata serapan regional: Gunakan kata daerah dengan bijak — beri konteks agar pembaca di luar daerah tetap mengerti. Contoh: siger (Lampung) bisa dijelaskan melalui narasi.
Pantun dan pribahasa: Alat puitis yang kuat untuk dialog karakter bijak atau narasi tematik. Jangan berlebihan.
@dataclass
class NovelIndonesia:
"""Parameter template for an Indonesian novel."""
judul: str
genre: str # roman, fiksi-islami, horor, sastra, cerita-anak
target_kata: int # 40000–80000
setting_lokasi: str # kota/daerah di Indonesia
suasana: str # segar, mistis, haru, tegang
narasi_baku: bool = True
dialog_sehari_hari: bool = True
moral_ending: bool = False
def cek_konsistensi(self) -> list[str]:
masalah = []
if self.genre == "fiksi-islami" and not self.moral_ending:
masalah.append("Fiksi Islami umumnya memiliki pesan moral — pertimbangkan tambahkan")
if self.target_kata < 40000:
masalah.append("Novel Indonesia biasanya 40.000+ kata — terlalu pendek")
if self.narasi_baku and self.dialog_sehari_hari:
masalah.append("Kombinasi baku + sehari-hari benar — pastikan tidak tercampur dalam satu paragraf")
return masalah
Perbedaan dengan Novel Barat
Aspek
Novel Barat
Novel Indonesia
Gaya prosa
Deskriptif, banyak narasi internal
Lebih ringkas, banyak dialog
Emosi
Subtext, implied
Langsung, eksplisit
Moral/pesan
Opsional, sering ambiguous
Diharapkan (kecuali sastra kontemporer)
Ending
Bisa bittersweet atau gelap
Happy ending atau hopeful sangat disukai
Setting
Imajinatif atau berdasarkan lokasi nyata
Sangat lokal — pembaca suka mengenali tempat
Serial
Trilogi atau stand-alone
Series panjang (5–10+ buku) jika sukses
Platform Digital Indonesia
Platform
Keunggulan
Model
Wattpad
Basis pembaca besar, banyak dieksplor penerbit
Gratis → kontrak penerbitan
Cabaca
Pembaca berbayar, penulis dapat royalti
Langganan / per-bab
Storial
Komunitas penulis aktif, ada kelas menulis
Gratis + premium
Karyarsa
Fokus pada cerita pendek dan puisi
Komunitas
Word Count per Format (Pasar Indonesia)
Format
Halaman
Kata
Cerita Anak Bergambar
24–32 halaman
200–600 kata
Novel Remaja (YA)
200–300 halaman
40,000–60,000 kata
Novel Dewasa
250–400 halaman
50,000–80,000 kata
Kumpulan Cerpen
150–250 halaman
25,000–40,000 kata
Novel Horor
200–350 halaman
45,000–70,000 kata
Web Serial (bab per bab)
200–1000+ bab
1,000–3,000 per bab
Tips Menulis Bab Pembuka (for Indonesian Market)
Language setting: Tentukan level bahasa di bab 1 — pembaca langsung tahu apakah ini roman ringan atau sastra serius
Halaman 1 = hook: Pembaca Indonesia tidak sabar — beri konflik atau misteri di 3 paragraf pertama
Karakter relatable: Gunakan nama, setting, dan situasi yang dikenal pembaca (sekolah Indonesia, kos, kampus, warung kopi)
Emosi langsung: Jangan terlalu subtle — pembaca Indonesia ingin MERASAKAN emosi karakter
Dialog alami: Baca dialog dengan suara keras — jika kedengarannya seperti buku pelajaran, tulis ulang
Revision Workflow
Three-Pass Revision
PASS 1: STRUCTURE (10,000 ft view)
- Does the plot make logical sense?
- Does every scene advance the story?
- Are act breaks at the right place?
- Does the ending resolve the central question?
- Action: Move, cut, or merge scenes. DON'T fix prose yet.
PASS 2: SCENE CRAFT (1,000 ft view)
- Does each scene have: goal, conflict, disaster / decision?
- Is POV consistent?
- Does dialogue have subtext?
- Is pacing right? (Fast for action, slow for reflection)
- Action: Rewrite weak scenes. Enhance tension.
PASS 3: LINE EDIT (street level)
- Kill adverbs (-ly words) — use stronger verbs instead
- Remove filter words (saw, heard, noticed, felt, seemed)
- Vary sentence length for rhythm
- Read ALOUD for awkward phrasing
- Check for repeated words on the same page
- Action: Cut 10% of word count.
Filter Words to Kill
Weak
Strong
He saw the dog run
The dog bolted
She heard footsteps
Footsteps thudded
He felt cold
Cold bit his fingers
She seemed angry
She slammed the door
He noticed the door was open
The door stood open
She thought he was lying
The lie hung between them
Anti-Rationalization Table
Rationalization
Reality
"AI can't write novels, so why try?"
AI is a co-pilot — outlines, character profiles, pacing analysis, and revision suggestions all amplify the human writer's craft
"Just start writing and see what happens"
A novel is a 60K–150K word system. Without structure, you'll hit the soggy middle and stall. Plan beats pants.
"Show-don't-tell is for beginners"
Every published novel that works uses the iceberg principle. Readers FEEL the emotion; they don't read a report of it.
"Cliffhangers are cheap/trite"
A hook isn't a gimmick — it's narrative momentum. A chapter without a reason to turn the page is a break point where the reader puts the book down forever.
"Character profiles are a waste of time"
A character who sounds like every other character is a flat character. Profiles ensure distinct voices, consistent arcs, and meaningful growth.
"World-building means 50 pages of history"
The iceberg: 10% shows, 90% is known by the author. If you're explaining instead of experiencing, you're telling, not showing.
"Web novels have no literary merit"
The best web novels (Lord of the Mysteries, Reverend Insanity) are masterclasses in pacing, chapter hooks, and reward systems.
"Kids books are easy — just short words and rhymes"
A successful picture book is a 32-page poem with a dramatic arc — every word earns its place, the page turn creates suspense, and the read-aloud test is merciless. It's hard.
"Indonesian novels are just translations of Western ones"
Pasar Indonesia memiliki ekspektasi sendiri: ending happy/hopeful, emosi langsung, dialog mendominasi narasi, dan moral/pesan sering diharapkan. Indonesian readers want a different reading experience.
"Picture books are for the parent, not the child"
The best picture books work on two levels — the child enjoys the story and repetition; the parent appreciates the wit, irony, or deeper theme. Both must be satisfied.
Verification
Checklist
Story structure chosen and mapped (Three-Act / Hero's Journey / Save the Cat / Kishōtenketsu / Web Novel)
Each major character has GMC documented and an arc planned
Each chapter ends with a hook (question, revelation, or incoming threat)
Every scene contains conflict (even subtle internal tension)
World is shown through character experience, not narrative info-dumps
Dialogue passes the "cover the names" test — voices are distinct
Auto-validation run on each chapter: word count, conflict, cliffhanger, show-don't-tell
At least 3 face-slap / tension-release moments per arc (web novel) or comparable dramatic beats
Revision plan: structural pass → scene pass → line pass
Continuity: character traits, setting details, and timeline are consistent
(Picture Book) Read-aloud test passed — every word earns its place when spoken aloud
(Picture Book) Page turn creates a reveal — text on page N makes reader NEED page N+1
(Middle Grade) Protagonist is 9–12 and solves the core problem themselves
(Middle Grade) Themes accessible to 8–12 year olds (friendship, family, justice, identity)
(Bahasa Indonesia) Narasi baku + dialog natural — tidak tercampur dalam satu paragraf
(Bahasa Indonesia) Setting dan situasi relatable untuk pembaca Indonesia
(Bahasa Indonesia) Moral ending atau hopeful ending sesuai genre
(Bahasa Indonesia) Bab pertama: hook dalam 3 paragraf pertama — pembaca Indonesia tidak sabar
When to Use
Use this skill when writing novels, short stories, or any fiction. Covers the full pipeline: outlining → character creation → world-building → drafting (with interrupt-resume and parallel writing) → auto-validation → revision. Best suited for novel-length fiction (40K–150K words), web serials, picture books (300–800 words), middle grade novels (25K–50K words), and Indonesian-language fiction for the pasar penerbitan Indonesia. For kids books, follow the Kids Book Writing section for age-appropriate craft. For Indonesian fiction, follow the Buku Bahasa Indonesia section for market-specific conventions.
Process
See the parent skill for authoritative workflow documentation.
1---2name: novel-writing3description: Use when complete novel and fiction writing skill covering story structure, character creation, world-building, dialogue, pacing, and chapter craft. Adopts Chinese novelist patterns (show-don't-tell, conflict, cliffhanger) plus Western frameworks. Includes kids books (picture book, middle grade) and Buku Bahasa Indonesia for Indonesian fiction. Use when writing novels, short stories, or children's fiction.4license: MIT5---678# Novel & Fiction Writing — Complete Craft System910## Overview1112This is a complete fiction writing system that **adopts the proven patterns** from the popular chinese-novelist skill (penglonghuang, 4.9K installs) and **extends them** with Western novel craft frameworks, character creation systems, world-building methodology, genre conventions, and code-backed workflows.1314### Three Golden Rules (adopted from chinese-novelist)1516| # | Rule | Meaning |17|---|------|---------|18| 1 | **Show, Don't Tell** | Dramatize emotions through action, dialogue, and sensory detail — never state feelings flatly |19| 2 | **Conflict Drives Plot** | Every scene must contain tension between opposing forces (character vs. character, self, nature, society) |20| 3 | **Cliffhanger Chapters** | End each chapter at a decision point or revelation — make readers turn the page |2122### Key Features (adopted & expanded)2324| Feature | From Reference | Expansion |25|---------|---------------|-----------|26| **Interrupted Continuation** | Resume from any text prompt | Also: scene-stub, outline, or character note |27| **Auto-Validation** | Chapter quality & self-refine | Also: continuity checker, character voice checker, pacing analyzer |28| **Parallel Writing** | Multiple chapters, one prompt | Also: multiple POVs, parallel timelines |29| **Multi-Language** | Adapts to user language | Bilingual: English + Chinese web novel patterns |3031## Quick Start — Minimal Viable Process3233For small-context models or when you need the minimum to start writing:34351. **Pick a story structure** — Three-Act, Hero's Journey, or Save the Cat (see Story Structure below)362. **Define each major character's GMC** — Goal, Motivation, Conflict (see Character Creation)373. **Write chapters as Entry → Escalation → Exit Hook** (see Chapter Craft)384. **Run auto-validation after each chapter** (see Auto-Validation)395. **Three-pass revision**: structure → scene craft → line edit (see Revision Workflow)4041Genre-specific templates (Fantasy, Mystery, Chinese Web Novel, Kids Books, Buku Indonesia) are in Genre Templates below. Skip them unless they apply to your project.4243---4445## Story Structure4647### 1. Three-Act Structure4849```50ACT I (Setup) — 25% ACT II (Confrontation) — 50% ACT III (Resolution) — 25%51┌──────────────┐ ┌──────────────────────┐ ┌──────────────────┐52│ • Inciting │ │ • Rising action │ │ • Climax │53│ Incident │───→ │ • Midpoint twist │───→ │ • Falling action │54│ • First │ │ • "All is lost" │ │ • Denouement │55│ Plot Point │ │ • Darkest moment │ │ • Final state │56│ • Key Q: │ │ • Q: Can they win? │ │ • Q: What changed?│57│ "Who is │ │ │ │ │58│ the hero?" │ │ │ │ │59└──────────────┘ └──────────────────────┘ └──────────────────┘60```6162### 2. Hero's Journey (Campbell / Vogler)6364```python65beat = {66 "ordinary_world": "Hero in their normal life",67 "call_to_adventure": "Something disrupts the normal",68 "refusal_of_call": "Hero hesitates or refuses",69 "meeting_mentor": "Guide provides wisdom/tool",70 "crossing_threshold": "Hero commits to the journey",71 "tests_allies_enemies": "Learning the new world's rules",72 "approach_inmost_cave": "Preparing for greatest challenge",73 "ordeal": "Hero faces their biggest fear — often a death/rebirth",74 "reward": "Hero gains what they sought",75 "road_back": "Return journey, not yet safe",76 "resurrection": "Final test — transformed, they face one last trial",77 "return_elixir": "Hero returns with wisdom to share",78}7980# Check: does your story map to at least 8 of 12 beats?81assert sum(1 for b, v in beat.items() if v != "") >= 882```8384### 3. Save the Cat! (Blake Snyder)8586| Beat | Page % | What Happens |87|------|--------|-------------|88| Opening Image | 1% | A snapshot of the hero's flawed world |89| Theme Stated | 5% | What the hero needs to learn (stated by someone else) |90| Set-Up | 1–10% | Hero's flaw, supporting cast, stakes |91| Catalyst | 10% | Inciting event — everything changes |92| Debate | 10–20% | Should I go? Doubt and weighing options |93| Break into Two | 20% | Hero chooses the new world |94| B Story | 22% | A relationship that teaches the theme |95| Fun and Games | 20–55% | The promise of the premise — the fun part |96| Midpoint | 55% | False victory OR false defeat — stakes escalate |97| Bad Guys Close In | 55–75% | Pressure mounts; hero loses allies, confidence, or ground |98| All Is Lost | 75% | A death, betrayal, or failure — no way out |99| Dark Night of the Soul | 75–85% | Grief, reflection, and finding the real answer |100| Break into Three | 85% | Hero discovers the actual solution |101| Finale | 85–99% | Hero applies the lesson — climax |102| Final Image | 99–100% | Mirror of opening image — shows transformation |103104### 4. Kishōtenketsu (Classical Four-Act Structure — No Conflict Required)105106| Stage | Japanese | Function |107|-------|----------|----------|108| Introduction | 起 (ki) | Present a scene, setting, or normal state |109| Development | 承 (shō) | Deepen or expand — add new element |110| Twist | 転 (ten) | Unexpected turn: something doesn't fit |111| Resolution | 結 (ketsu) | Connect, reveal harmony, show deeper meaning |112113Best for: literary fiction, slice-of-life, and stories where discovery displaces conflict.114115### 5. Chinese Web Novel (网文) — Three Golden Chapters (黄金三章)116117The first three chapters must:1181191. **Chapter 1 — The Hook (开篇)** : Introduce protagonist with a clear flaw or misfortune → hint at cheat/counterattack coming1202. **Chapter 2 — The System (金手指)** : Reveal the unique advantage (cheat skill, system, transmigration knowledge, hidden inheritance)1213. **Chapter 3 — The Payoff (打脸)** : First satisfying face-slap moment — protagonist uses their advantage to overcome an early opposer122123**Pacing formula:** Small victory every 3–5 chapters (小爽点), medium victory every 10–15 chapters (中爽点), arc climax every 30–50 chapters (大高潮).124125---126127## Character Creation128129### GMC (Goal / Motivation / Conflict)130131Every character needs a clear GMC per story arc:132133```python134@dataclass135class CharacterGMC:136 goal: str # What they want137 motivation: str # Why they want it (emotional need)138 conflict: str # What stops them (internal + external)139140@dataclass141class CharacterArc:142 beginning_gmc: CharacterGMC143 midpoint_shift: str # How GMC changes at midpoint144 ending_gmc: CharacterGMC # How GMC resolves145 inner_flaw: str # The lie they believe146 truth_to_learn: str # What accepting the truth looks like147148def validate_character_arc(arc: CharacterArc) -> list[str]:149 """Check arc coherence — does the character actually change?"""150 issues = []151 if arc.beginning_gmc.goal == arc.ending_gmc.goal:152 issues.append("Goal didn't change — flat arc without intentional design")153 if arc.beginning_gmc.motivation == arc.ending_gmc.motivation:154 issues.append("No motivational shift — missing emotional growth")155 return issues156```157158### Character Voice Profile159160```python161@dataclass162class CharacterVoice:163 name: str164 archetype: str # hero, mentor, trickster, shadow, herald, etc.165 speech_pattern: str # e.g. "formal, uses full sentences" | "halting, with filler words"166 vocabulary_tier: int # 1 (simple) to 5 (erudite)167 pet_phrases: list[str] = None168 tells_lie_when: str = "" # Under what pressure they lie169 emotional_giveaway: str = "" # Body language that betrays them170171 def sample_dialogue(self, emotion: str, topic: str) -> str:172 """Generate in-character dialogue sample for consistency checking"""173 # Used to validate dialogue attribution scenes174 return f"[{self.name} speaking about '{topic}' with {emotion} — style: {self.speech_pattern}]"175```176177### Archetype Galaxy178179| Archetype | Core Drive | Best For | Example |180|-----------|-----------|----------|---------|181| **Hero** | Prove worth / protect | Protagonist | Katniss Everdeen |182| **Mentor** | Pass on wisdom | Guide figure | Haymitch, Obi-Wan |183| **Shadow** | Impose will / destroy | Villain | Voldemort, Sauron |184| **Trickster** | Disrupt norms / expose truth | Comic relief, chaos agent | Tyrion, Loki |185| **Herald** | Announce change | Catalyst character | Fiver in Watership Down |186| **Guardian** | Test worthiness | Gatekeeper | The Sphinx at Thebes |187| **Shape-Shifter** | Keep identity hidden | Unreliable ally | Snape |188| **Ally** | Support / sacrifice | Companion | Samwise Gamgee |189190---191192## World-Building193194### Sanderson's Three Laws of Magic1951961. **First Law:** An author's ability to resolve conflict with magic is directly proportional to how well the reader understands that magic1972. **Second Law:** Limitations > Powers — what magic CAN'T do is more interesting than what it can1983. **Third Law:** Expand before adding — deepen an existing system before adding a new one199200### Checklist per Fictional Element201202```python203def check_world_consistency(element: str, properties: dict) -> list[str]:204 """205 Validate a world-building element for internal consistency.206 """207 issues = []208 if "cost" not in properties:209 issues.append(f"'{element}' has no cost — free abilities lack narrative tension")210 if "limitation" not in properties:211 issues.append(f"'{element}' has no limitations — readers will ask 'why not use X for everything?'")212 if "impact" not in properties:213 issues.append(f"'{element}' has no shown impact on daily life — magic shouldn't be background wallpaper")214 return issues215```216217### The Iceberg Principle (Tolkein)218219Reveal 10% of your world; know the other 90%. Every reference to history, geography, or culture should feel like it sits on a foundation of real knowledge — even if only the author sees the whole iceberg.220221---222223## Dialogue Craft224225### Mechanics Checklist226227- [ ] **Subtext:** Do characters say what they mean, or what they NEED to say? (Good dialogue: they need to say something else.)228- [ ] **Beats:** Action beats replace dialogue tags and reveal character — "She traced the rim of her glass." vs. She said nervously.229- [ ] **Distinct voices:** Cover the character names and read — can you tell who's speaking?230- [ ] **Exposition delivery:** Information revealed through argument, not through "As you know, Bob..."231- [ ] **Rhythm:** Short exchanges for tension; longer sentences for reflection or intimacy232- [ ] **Silence:** What characters DON'T say is louder than what they do233234### On-the-Nose vs. Subtext235236```237ON THE NOSE:238"I'm angry at you for forgetting my birthday."239"Oh, I'm sorry, I was busy with work."240241SUBTEXT:242"You remembered the Stark account's anniversary."243"...Was there something else I should have remembered?"244```245246---247248## Pacing & Tension249250### Scene / Sequel (Dwight Swain)251252| Scene (Proactive) | → | Sequel (Reactive) |253|-------------------|---|-------------------|254| Goal | | Reaction |255| Conflict | | Dilemma |256| Disaster | | Decision → new goal |257258### Micro-Tension Checklist259260- [ ] Every paragraph: is there a question the reader wants answered?261- [ ] Every page: is there a reason to turn it?262- [ ] After each revelation: what NEW question arises?263- [ ] Dialogue: do the characters want opposite things?264265### Word Count by Genre (Novel)266267| Genre | Typical Length | Chapter Avg | Scene Avg |268|-------|---------------|-------------|-----------|269| Literary | 60,000–100,000 | 3,000–5,000 | 1,000–2,500 |270| Fantasy / Sci-Fi | 90,000–150,000 | 4,000–6,000 | 1,500–3,000 |271| Mystery / Thriller | 70,000–95,000 | 2,500–4,000 | 1,000–2,000 |272| Romance | 50,000–90,000 | 2,000–4,000 | 1,000–2,000 |273| YA / Middle Grade | 40,000–80,000 | 2,000–3,500 | 800–1,500 |274| Chinese Web Novel (网文) | 500,000–3,000,000 | 2,000–3,000 | 1,500–2,500 |275276---277278## Chapter Craft279280### Chapter Anatomy281282Every chapter should contain:2831. **Entry Hook** — Why start reading this chapter NOW? (sensory detail, intriguing statement, action beat)2842. **Escalation** — The scene's tension rises or twists2853. **Exit Hook** — Why read the NEXT chapter? (cliffhanger, revelation, decision point, question)286287### Chapter-Ending Techniques288289| Technique | Effect | Example |290|-----------|--------|---------|291| Door slam | Scene ends with bad news | "The king is dead." |292| Revelation | New info changes everything | "She's your sister." |293| Question | Reader must find the answer | "What if the monster is real?" |294| Decision point | Protagonist must choose | The clock read 11:59. |295| Ironic reversal | Expectation inverted | The hero found the sword — and sold it. |296| Incoming threat | Danger approaching | "They know where we live." |297298### Parallel Writing (adopted from chinese-novelist)299300When writing multiple chapters in one turn:301302```303PROMPT FORMAT:304305Write Chapters 4, 5, and 6 of my novel.306307For each chapter:3081. Identify the POV character3092. State the scene goal3103. Write complete chapter text3114. End with a hook pointing to the next chapter3125. Count words313314VALIDATE each chapter after writing:315- ✓ Word count within target (±500 words)316- ✓ Scene goal achieved or subverted meaningfully317- ✓ At least one Show-Don't-Tell beat318- ✓ Chapter ends with hook319- ✓ POV consistent throughout320```321322### Interrupted Continuation (adopted from chinese-novelist)323324When resuming from any state — a saved draft, a scene stub, a character note — use:325326```327PROMPT FORMAT:328329[Current state: paste what exists — any text]330[Goal: what should happen next in the story]331332Continue from the provided text. Do not repeat it.333Identify: what is the next scene's goal?334Write the scene.335Then auto-validate: does it connect logically to what came before?336```337338---339340## Auto-Validation (adopted & expanded from chinese-novelist)341342After each writing cycle, run validation:343344```python345@dataclass346class ValidationResult:347 passed: bool348 issues: list[str]349350def validate_chapter(chapter_text: str, chapter_num: int, prev_hook: str = "") -> ValidationResult:351 issues = []352353 # 1. Word count354 wc = len(chapter_text.split())355 if wc < 1500 or wc > 6000:356 issues.append(f"Word count {wc} outside 1500–6000 range")357358 # 2. Show-Don't-Tell check — look for telling emotion words359 tell_words = {"felt", "felt that", "felt like", "knew that", "realized that", "was angry",360 "was sad", "was happy", "was scared", "was excited"}361 for word in tell_words:362 if word in chapter_text.lower():363 issues.append(f"Possible telling: '{word}' — dramatize instead")364 break # one warning per chapter365366 # 3. Cliffhanger check — does last paragraph end with a hook?367 final_para = chapter_text.split("\n\n")[-1].strip()368 question_markers = ["?" in final_para, "..." in final_para,369 any(w in final_para.lower() for w in ["sudden", "reveal", "found", "discover", "then"])]370 if not any(question_markers):371 issues.append("Chapter may lack a strong exit hook")372373 # 4. Conflict check — does the chapter have tension?374 conflict_words = {"but", "however", "yet", "refused", "fight", "argue",375 "struggle", "trap", "betray", "choice", "cost"}376 if not any(w in chapter_text.lower() for w in conflict_words):377 issues.append("No clear conflict signal detected — ensure tension exists")378379 # 5. Continuity check (if previous hook provided)380 if prev_hook and prev_hook not in chapter_text:381 issues.append("Previous chapter's hook not addressed in this chapter's opening")382383 return ValidationResult(passed=len(issues) == 0, issues=issues)384```385386### Self-Refine Loop387388```python389def write_with_refine(outline: dict, max_refinements: int = 3) -> str:390 """391 Write chapter then auto-validate and refine until clean.392 """393 chapter = generate_chapter(outline)394 for _ in range(max_refinements):395 result = validate_chapter(chapter, outline["chapter_num"], outline.get("prev_hook", ""))396 if result.passed:397 return chapter # Good enough — ship it398 # Fix the most critical issue399 fix = identify_fix(result.issues, chapter)400 chapter = refine_chapter(chapter, fix)401 return chapter # Best effort after max_refinements402```403404---405406## Genre Templates407408### Fantasy409410```python411fantasy_epic = {412 "world_scope": "multiple continents, distinct cultures",413 "magic_system": "defined rules with costs and limitations",414 "scale": "the fate of a kingdom or world",415 "typical_length": "100,000–150,000 words",416 "key_beats": [417 "Hero in ordinary/magical world",418 "Call to quest (world-threat)",419 "Gathering the party",420 "Learning the magic rules",421 "Confrontation with dark lord",422 "Sacrifice and return"423 ],424 "avoid": "info-dumping history in chapter 1; show the world through action"425}426```427428### Mystery / Thriller429430| Beat | Detective Novel | Thriller |431|------|----------------|----------|432| Hook | Body is found | Bomb is ticking |433| Investigation | Suspects interviewed | Chase begins |434| Twist | Clue points wrong way | Ally betrays |435| Darkest moment | Case seems unsolvable | All seems lost |436| Reveal | Identity of killer | Truth exposed |437| Resolution | Justice served | World restored (changed) |438439### Chinese Web Novel (网文) — 爽文 (Power Fantasy)440441```442爽文 Key Mechanics:4434441. 打脸 (Face-Slapping) — The protagonist is underestimated, then decisively proves superiority.445 Pattern: Mock → Reveal power → Public humiliation of mocker → Face-slap4464472. 扮猪吃虎 (Playing Pig to Eat Tiger) — Protagonist pretends to be weak, then crushes the strong.448 Pattern: Disguised weakness → Arrogant antagonist takes bait → Devastating counterattack4494503. 装逼打脸 (Show-Off Face-Slap) — Protagonist deliberately provokes to invoke face-slapping chain.451 Pattern: Antagonist provokes → Protagonist pretends to be scared → Spring the trap4524534. 升级 (Leveling Up) — Clear progression markers with visible power increases.454 Each level shows concrete improvement that matters to current conflict.4554565. 后宫 (Harem) — Multiple romantic interests (optional, genre-dependent).457 Critical: each interest should have distinct personality and role.458459Avoid: Protagonist achieving everything easily — tension requires REAL threat.460If protagonist can solve everything, there's no conflict.461```462463---464465### Kids Book Writing466467Complete guide for children's fiction — from board books to middle grade novels.468469| Category | Age | Word Count | Format | Key Feature |470|----------|-----|-----------|--------|-------------|471| **Board Books** | 0–3 | 0–100 words | Thick pages, durable | Sensory, rhythm, simple bold images |472| **Picture Books** | 3–7 | 300–800 words | 32 pages standard | Illustration-text dance, must be read-aloud |473| **Early Readers** | 5–8 | 500–2,500 words | Short chapters, large font | Simple vocab, sight words, short sentences |474| **Chapter Books** | 7–10 | 5,000–15,000 words | Short chapters, few illustrations | Simple plots, fast pacing, series-ready |475| **Middle Grade** | 8–12 | 25,000–50,000 words | Full novel format | Growing independence, school/friendship stakes |476| **YA (Young Adult)** | 13–18 | 50,000–90,000 words | Standard novel | Identity, first love, larger world questions |477478#### Picture Book — The 32-Page Standard (Danny G's No-Fail Format)479480Practically every picture book naturally follows this arc:481482| Pages | Beat | Function |483|-------|------|----------|484| 1–20 | **Problem** | Establish character, want, obstacle; build through 4–6 spread sequences |485| 21–24 | **Climax** | The BIG moment — character faces the problem directly |486| 25–28 | **Resolution** | Problem solved through character's own action |487| 29–32 | **Closing** | Final page turn — satisfying visual/verbal finish |488489```490PAGE TURN = REVEAL. The text on page N must make the reader NEED to turn to page N+1.491Good picture book text has a "curtain" word at each spread break — the word that creates the turn.492```493494#### Kids Book Craft Essentials495496- **Read-aloud test**: Read every draft ALOUD. Every word must earn its place when spoken.497- **Illustration partnership**: What the picture shows, the text doesn't tell — and vice versa. Let the illustrator's half of the story breathe.498- **Repetition with variation**: Pattern → pattern break → pattern return. Kids expect the pattern; the break creates the tension.499- **Age-appropriate vocabulary**: 1–2 challenge words per spread (guessable from context). For early readers, sight words + phonetic decoding.500- **Refrain / running gag**: A repeating line or joke that kids can chant along with (e.g., "I do not like green eggs and ham").501- **Adult off-stage**: If the kid character can solve the problem themselves, the story empowers. If an adult rescues them, it doesn't.502503#### Middle Grade Novel Craft504505MG novels look like adult novels but follow different rules:506507| Criterion | Middle Grade | Adult |508|-----------|-------------|-------|509| Protagonist age | 9–12 | 20+ |510| Stakes | Personal/social — friendship, family, justice | Life/death, career, relationships |511| Voice | Authentic kid — not an adult remembering childhood | Mature perspective |512| Adult involvement | Adults present but NOT solving the problem | Adults fully engaged |513| Ending | Hopeful, earned — often bittersweet OK | Any resolution |514515```python516def check_mg_compatibility(story: dict) -> list[str]:517 """Screen an outline for MG novel compatibility."""518 issues = []519 if story.get("protagonist_age", 0) > 14:520 issues.append("Protagonist should be 9–12 for true MG voice")521 if not story.get("kid_solves_problem", True):522 issues.append("Adult rescue invalidates MG empowerment contract")523 if story.get("romance_amount", "none") not in ("none", "crush-only"):524 issues.append("MG romance stays at crush/awkward-dance level — no consummation")525 themes = story.get("themes", [])526 kid_friendly = {"friendship", "family", "justice", "identity", "bravery",527 "belonging", "curiosity", "difference", "loss"}528 if not any(t in kid_friendly for t in themes):529 issues.append("Themes should be accessible to 8–12 year old readers")530 return issues531```532533#### Series Architecture for Kids534535Kids are series readers. Design for series from the start:5365371. **Standalone with series potential** — Book 1 tells a complete story but leaves world/characters wanting more5382. **Rising series arc** — Each book raises the stakes; a multi-book thread runs underneath5393. **Episodic series** — Same characters, same formula, different setting each book (Magic Tree House model)540541```542Middle Grade & Chapter Book Series Models:543544• Boxcar Children: Episodic — solve mystery in each book545• Harry Potter: Rising arc — each book bigger threat546• Diary of a Wimpy Kid: Episodic — school year vignettes547• Percy Jackson: Rising arc — quest per book + prophecy thread548• Magic Tree House: Episodic — historical adventure per book549```550551---552553### Buku Bahasa Indonesia (Indonesian-Language Fiction)554555Panduan lengkap menulis fiksi dalam bahasa Indonesia — untuk pasar penerbitan nasional dan platform digital.556557#### Pasar Buku Indonesia558559Indonesia memiliki pasar penerbitan terbesar di Asia Tenggara. Karakteristik utama:560561- **Platform digital** → **buku cetak**: Banyak novel populer berawal dari Wattpad atau Cabaca sebelum diterbitkan secara fisik562- **Pembaca setia genre**: Roman remaja, fiksi Islami, dan horor memiliki basis pembaca yang loyal563- **Pengaruh media**: Adaptasi film/series (Dilan, Ayat-Ayat Cinta, Rindu) mendorong penjualan buku secara signifikan564- **Harga jual**: IDR 50.000–150.000 per buku; margin tipis — volume penjualan adalah kunci565566#### Genre Populer di Pasar Indonesia567568| Genre | Deskripsi | Target Pembaca |569|-------|-----------|---------------|570| **Roman Remaja** | Kisah cinta dengan drama sekolah/keluarga; voice ringan, emosional | Remaja 13–18 |571| **Fiksi Islami** | Novel dengan nilai-nilai Islam, sering mengandung romance/keluarga; ending moral | Dewasa muda 18–35 |572| **Horor / Misteri** | Kisah mistis berdasarkan urban legend Indonesia; atmosfer lokal yang kuat | 16+ |573| **Sastra Serius** | Novel kontemporer dengan tema sosial, politik, budaya; gaya sastra | 20+ |574| **Cerita Anak** | Dongeng modern, petualangan, nilai moral; bahasa sederhana | 4–12 |575| **Fiksi Pengembangan Diri** | Novel yang menyampaikan pelajaran hidup melalui cerita (inspiratif) | 16+ |576577#### Bahasa Indonesia untuk Penulisan Kreatif578579- **Baku vs. sehari-hari**: Narasi menggunakan bahasa baku (formal) tetapi dialog menggunakan bahasa sehari-hari (natural). Jangan tulis dialog seperti buku tata bahasa.580- **Tingkat kesopanan**: Pilih sapaan sesuai hubungan karakter — *Anda* (formal), *Kak/Mas/Mbak* (semi-formal akrab), *lo/gue* (sangat santai, Jabodetabek).581- **Kata serapan regional**: Gunakan kata daerah dengan bijak — beri konteks agar pembaca di luar daerah tetap mengerti. Contoh: *siger* (Lampung) bisa dijelaskan melalui narasi.582- **Pantun dan pribahasa**: Alat puitis yang kuat untuk dialog karakter bijak atau narasi tematik. Jangan berlebihan.583584```python585@dataclass586class NovelIndonesia:587 """Parameter template for an Indonesian novel."""588 judul: str589 genre: str # roman, fiksi-islami, horor, sastra, cerita-anak590 target_kata: int # 40000–80000591 setting_lokasi: str # kota/daerah di Indonesia592 suasana: str # segar, mistis, haru, tegang593 narasi_baku: bool = True594 dialog_sehari_hari: bool = True595 moral_ending: bool = False596597 def cek_konsistensi(self) -> list[str]:598 masalah = []599 if self.genre == "fiksi-islami" and not self.moral_ending:600 masalah.append("Fiksi Islami umumnya memiliki pesan moral — pertimbangkan tambahkan")601 if self.target_kata < 40000:602 masalah.append("Novel Indonesia biasanya 40.000+ kata — terlalu pendek")603 if self.narasi_baku and self.dialog_sehari_hari:604 masalah.append("Kombinasi baku + sehari-hari benar — pastikan tidak tercampur dalam satu paragraf")605 return masalah606```607608#### Perbedaan dengan Novel Barat609610| Aspek | Novel Barat | Novel Indonesia |611|-------|-----------|----------------|612| **Gaya prosa** | Deskriptif, banyak narasi internal | Lebih ringkas, banyak dialog |613| **Emosi** | Subtext, implied | Langsung, eksplisit |614| **Moral/pesan** | Opsional, sering ambiguous | Diharapkan (kecuali sastra kontemporer) |615| **Ending** | Bisa bittersweet atau gelap | Happy ending atau hopeful sangat disukai |616| **Setting** | Imajinatif atau berdasarkan lokasi nyata | Sangat lokal — pembaca suka mengenali tempat |617| **Serial** | Trilogi atau stand-alone | Series panjang (5–10+ buku) jika sukses |618619#### Platform Digital Indonesia620621| Platform | Keunggulan | Model |622|----------|-----------|-------|623| **Wattpad** | Basis pembaca besar, banyak dieksplor penerbit | Gratis → kontrak penerbitan |624| **Cabaca** | Pembaca berbayar, penulis dapat royalti | Langganan / per-bab |625| **Storial** | Komunitas penulis aktif, ada kelas menulis | Gratis + premium |626| **Karyarsa** | Fokus pada cerita pendek dan puisi | Komunitas |627628#### Word Count per Format (Pasar Indonesia)629630| Format | Halaman | Kata |631|--------|--------|------|632| Cerita Anak Bergambar | 24–32 halaman | 200–600 kata |633| Novel Remaja (YA) | 200–300 halaman | 40,000–60,000 kata |634| Novel Dewasa | 250–400 halaman | 50,000–80,000 kata |635| Kumpulan Cerpen | 150–250 halaman | 25,000–40,000 kata |636| Novel Horor | 200–350 halaman | 45,000–70,000 kata |637| Web Serial (bab per bab) | 200–1000+ bab | 1,000–3,000 per bab |638639#### Tips Menulis Bab Pembuka (for Indonesian Market)6406411. **Language setting**: Tentukan level bahasa di bab 1 — pembaca langsung tahu apakah ini roman ringan atau sastra serius6422. **Halaman 1 = hook**: Pembaca Indonesia tidak sabar — beri konflik atau misteri di 3 paragraf pertama6433. **Karakter relatable**: Gunakan nama, setting, dan situasi yang dikenal pembaca (sekolah Indonesia, kos, kampus, warung kopi)6444. **Emosi langsung**: Jangan terlalu subtle — pembaca Indonesia ingin MERASAKAN emosi karakter6455. **Dialog alami**: Baca dialog dengan suara keras — jika kedengarannya seperti buku pelajaran, tulis ulang646647## Revision Workflow648649### Three-Pass Revision650651```652PASS 1: STRUCTURE (10,000 ft view)653- Does the plot make logical sense?654- Does every scene advance the story?655- Are act breaks at the right place?656- Does the ending resolve the central question?657- Action: Move, cut, or merge scenes. DON'T fix prose yet.658659PASS 2: SCENE CRAFT (1,000 ft view)660- Does each scene have: goal, conflict, disaster / decision?661- Is POV consistent?662- Does dialogue have subtext?663- Is pacing right? (Fast for action, slow for reflection)664- Action: Rewrite weak scenes. Enhance tension.665666PASS 3: LINE EDIT (street level)667- Kill adverbs (-ly words) — use stronger verbs instead668- Remove filter words (saw, heard, noticed, felt, seemed)669- Vary sentence length for rhythm670- Read ALOUD for awkward phrasing671- Check for repeated words on the same page672- Action: Cut 10% of word count.673```674675### Filter Words to Kill676677| Weak | Strong |678|------|--------|679| He saw the dog run | The dog bolted |680| She heard footsteps | Footsteps thudded |681| He felt cold | Cold bit his fingers |682| She seemed angry | She slammed the door |683| He noticed the door was open | The door stood open |684| She thought he was lying | The lie hung between them |685686---687688## Anti-Rationalization Table689690| Rationalization | Reality |691|----------------|---------|692| "AI can't write novels, so why try?" | AI is a co-pilot — outlines, character profiles, pacing analysis, and revision suggestions all amplify the human writer's craft |693| "Just start writing and see what happens" | A novel is a 60K–150K word system. Without structure, you'll hit the soggy middle and stall. Plan beats pants. |694| "Show-don't-tell is for beginners" | Every published novel that works uses the iceberg principle. Readers FEEL the emotion; they don't read a report of it. |695| "Cliffhangers are cheap/trite" | A hook isn't a gimmick — it's narrative momentum. A chapter without a reason to turn the page is a break point where the reader puts the book down forever. |696| "Character profiles are a waste of time" | A character who sounds like every other character is a flat character. Profiles ensure distinct voices, consistent arcs, and meaningful growth. |697| "World-building means 50 pages of history" | The iceberg: 10% shows, 90% is known by the author. If you're explaining instead of experiencing, you're telling, not showing. |698| "Web novels have no literary merit" | The best web novels (Lord of the Mysteries, Reverend Insanity) are masterclasses in pacing, chapter hooks, and reward systems. |699| "Kids books are easy — just short words and rhymes" | A successful picture book is a 32-page poem with a dramatic arc — every word earns its place, the page turn creates suspense, and the read-aloud test is merciless. It's hard. |700| "Indonesian novels are just translations of Western ones" | Pasar Indonesia memiliki ekspektasi sendiri: ending happy/hopeful, emosi langsung, dialog mendominasi narasi, dan moral/pesan sering diharapkan. Indonesian readers want a different reading experience. |701| "Picture books are for the parent, not the child" | The best picture books work on two levels — the child enjoys the story and repetition; the parent appreciates the wit, irony, or deeper theme. Both must be satisfied. |702703704## Verification705706### Checklist707708- [ ] Story structure chosen and mapped (Three-Act / Hero's Journey / Save the Cat / Kishōtenketsu / Web Novel)709- [ ] Each major character has GMC documented and an arc planned710- [ ] Each chapter ends with a hook (question, revelation, or incoming threat)711- [ ] Every scene contains conflict (even subtle internal tension)712- [ ] World is shown through character experience, not narrative info-dumps713- [ ] Dialogue passes the "cover the names" test — voices are distinct714- [ ] Auto-validation run on each chapter: word count, conflict, cliffhanger, show-don't-tell715- [ ] At least 3 face-slap / tension-release moments per arc (web novel) or comparable dramatic beats716- [ ] Revision plan: structural pass → scene pass → line pass717- [ ] Continuity: character traits, setting details, and timeline are consistent718- [ ] (Picture Book) Read-aloud test passed — every word earns its place when spoken aloud719- [ ] (Picture Book) Page turn creates a reveal — text on page N makes reader NEED page N+1720- [ ] (Middle Grade) Protagonist is 9–12 and solves the core problem themselves721- [ ] (Middle Grade) Themes accessible to 8–12 year olds (friendship, family, justice, identity)722- [ ] (Bahasa Indonesia) Narasi baku + dialog natural — tidak tercampur dalam satu paragraf723- [ ] (Bahasa Indonesia) Setting dan situasi relatable untuk pembaca Indonesia724- [ ] (Bahasa Indonesia) Moral ending atau hopeful ending sesuai genre725- [ ] (Bahasa Indonesia) Bab pertama: hook dalam 3 paragraf pertama — pembaca Indonesia tidak sabar726727## When to Use728729Use this skill when writing novels, short stories, or any fiction. Covers the full pipeline: outlining → character creation → world-building → drafting (with interrupt-resume and parallel writing) → auto-validation → revision. Best suited for novel-length fiction (40K–150K words), web serials, picture books (300–800 words), middle grade novels (25K–50K words), and Indonesian-language fiction for the pasar penerbitan Indonesia. For kids books, follow the Kids Book Writing section for age-appropriate craft. For Indonesian fiction, follow the Buku Bahasa Indonesia section for market-specific conventions.730731## Process732733734See the parent skill for authoritative workflow documentation.
Run npx skillmds add oyi77/novel-writing in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Use when complete novel and fiction writing skill covering story structure, character creation, world-building, dialogue, pacing, and chapter craft. Adopts Chinese novelist patterns (show-don't-tell, conflict, cliffhanger) plus Western frameworks. Includes kids books (picture book, middle grade) and Buku Bahasa Indonesia for Indonesian fiction. Use when writing novels, short stories, or children's fiction. It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Capability flags: docs only. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
oyi77 (@oyi77) published this skill. Their other Agent Skills are listed on their SkillMD profile.