fabricatio_novel.models.draft

Novel draft models for early stage novel design.

Classes

ChapterDraft

Chapter Draft for early stage novel design.

NovelDraft

A draft representing a novel, including its title, genre, characters, chapters, and synopsis.

Module Contents

class fabricatio_novel.models.draft.ChapterDraft(/, **data: Any)

Bases: fabricatio_core.models.generic.Titled

Chapter Draft for early stage novel design.

title: str

Descriptive string without chapter number, chapter number is autogenerated based on how many chapters in total.

synopsis: str

Super detailed summaries for each chapter. Cover: what happens, how characters change, physical interaction, key scenes/dialogue, setting shifts, emotional tone, and hints or themes. Goal: Lock in every important detail so nothing gets lost later — like a mini-script for each chapter.

weight: float

The weight of the chapter. higher values means more words count allocation.

class fabricatio_novel.models.draft.NovelDraft(/, **data: Any)

Bases: fabricatio_core.models.generic.SketchedAble, fabricatio_core.models.generic.Titled, fabricatio_core.models.generic.Language, fabricatio_capabilities.models.generic.PersistentAble, fabricatio_capabilities.models.generic.WordCount

A draft representing a novel, including its title, genre, characters, chapters, and synopsis.

title: str

The title of the novel.

genre: List[str]

The genres of the novel. Comprehensive coverage is preferred than few ones.

synopsis: str

A summary of the novel’s plot.

character_descriptions: List[str]

Super detailed descriptions for each main character. Include: looks, personality, backstory, goals, relationships, inner struggles, and their role in the story. Goal: Make every character feel real, consistent, and fully fleshed out — no vague or shallow summaries.

chapters: List[ChapterDraft]

Ordered chapter drafts with per-chapter synopsis and weight.

expected_word_count: int

The expected word count of the novel.

property total_chapters: int

Return the number of chapters in the draft.

property all_chapters_titles: List[str]

{title}’.

Type:

Return formatted titles for all chapters as ‘Ch-{idx}

iter_chap() Generator[Tuple[int, int, ChapterDraft], None, None]

Iterate through all chapters with metadata.

iter_ft_chap() Generator[Tuple[str, int, ChapterDraft], None, None]

Iterate chapters yielding formatted title, word count, and draft.

property chapter_expected_word_counts: List[int]

Calculate the expected word count for each chapter.