Novel Tools
uu201/character-arc
网文创作工具与生产流程。当用户需要使用AI辅助写作工具、设计提示词模板、规划写作工作流、选择码字工具、制定发布与数据分析策略时触发。覆盖DeepSeek/ChatGPT/Claude/豆包等AI工具应用、提示词工程、工作流设计、发布运营。
Turn a short story idea into a gptauthor story prompt YAML file (prompts-<name.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and…
$ npx skills add dylanhogg/gptauthor --skill create-story-yaml -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dylanhogg/gptauthor create-story-yaml --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dylanhogg/gptauthor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-story-yaml .claude/skills/create-story-yaml && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "create-story-yaml" agent skill from https://github.com/dylanhogg/gptauthor/tree/main/.agents/skills/create-story-yaml into .claude/skills/create-story-yaml/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-story-yaml", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dylanhogg/gptauthor/tree/main/.agents/skills/create-story-yamlType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dylanhogg/gptauthor --skill create-story-yaml -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dylanhogg/gptauthor create-story-yaml --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dylanhogg/gptauthor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/create-story-yaml .agents/skills/create-story-yaml && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-story-yaml" agent skill from https://github.com/dylanhogg/gptauthor/tree/main/.agents/skills/create-story-yaml into .agents/skills/create-story-yaml/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-story-yaml", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dylanhogg/gptauthor --skill create-story-yaml -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dylanhogg/gptauthor create-story-yaml --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dylanhogg/gptauthor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/create-story-yaml .cursor/skills/create-story-yaml && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-story-yaml" agent skill from https://github.com/dylanhogg/gptauthor/tree/main/.agents/skills/create-story-yaml into .cursor/skills/create-story-yaml/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-story-yaml", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dylanhogg/gptauthor.git --path .agents/skills/create-story-yaml--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dylanhogg/gptauthor --skill create-story-yaml -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dylanhogg/gptauthor create-story-yaml --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dylanhogg/gptauthor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/create-story-yaml .gemini/skills/create-story-yaml && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-story-yaml" agent skill from https://github.com/dylanhogg/gptauthor/tree/main/.agents/skills/create-story-yaml into .gemini/skills/create-story-yaml/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-story-yaml", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dylanhogg/gptauthor create-story-yamlInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dylanhogg/gptauthor --skill create-story-yaml -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dylanhogg/gptauthor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/create-story-yaml .github/skills/create-story-yaml && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-story-yaml" agent skill from https://github.com/dylanhogg/gptauthor/tree/main/.agents/skills/create-story-yaml into .github/skills/create-story-yaml/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-story-yaml", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dylanhogg/gptauthor --skill create-story-yaml -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dylanhogg/gptauthor create-story-yaml --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dylanhogg/gptauthor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/create-story-yaml .opencode/skills/create-story-yaml && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-story-yaml" agent skill from https://github.com/dylanhogg/gptauthor/tree/main/.agents/skills/create-story-yaml into .opencode/skills/create-story-yaml/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-story-yaml", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-story-yamlTurn a short story idea into a gptauthor story prompt YAML file (prompts-<name.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and…
Create Story YAML is an agent skill from dylanhogg/gptauthor. Turn a short story idea into a gptauthor story prompt YAML file (prompts-<name.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and expand-chapter-next sections, then validate it. Use when the user wants a new gptauthor story, a new story prompt file, or a yaml like prompts-openai-drama.yaml / prompts-scifi-simulation.yaml / prompts-gptauthor-usage.yaml.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and assets (for example `assets/template.yaml`, `reference.md` and `scripts/validate_story_yaml.py`).
It sits in Writing & Content, covering Creative writing and fiction. It works with OpenAI. The repository describes itself as: GPTAuthor is an AI tool for writing long form, multi-chapter stories given a story prompt. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8d190fd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENAI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create Story YAML loads about 2.3k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 1,285 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from dylanhogg/gptauthor at commit 8d190fd, republished under its MIT licence (© dylanhogg). 1,285 words, ~2,349 tokens.
.claude/skills/create-story-yaml/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Expand a short story idea (a sentence, a paragraph, a premise) into a complete gptauthor
story prompt file, then validate it so gptauthor --story <name> runs without errors.
The human writes the plot; gptauthor writes the prose. This file is the plot — it must contain the whole arc including the ending. Do not leave the ending for the LLM to invent.
AskUserQuestion call, before writing
anything (see Asking about style).assets/template.yaml and fill it in, applying the answers (see Writing the content).python3 .claude/skills/create-story-yaml/scripts/validate_story_yaml.py <path>
Fix every ERROR; treat WARNs as a review checklist.A short premise never settles audience, tone, focus, or ending, and every one of those
changes the whole file. Ask once, up front, in one AskUserQuestion call — do not
write a draft first and revise it afterwards.
Rules:
(Recommended). The user always gets a
free-text "Other", which is where the interesting answers usually come from.| Dimension | header | Options to offer |
|---|---|---|
| Audience age bracket | Audience | Adult (general) / Young adult (13-18) / Middle grade (8-12) / Early readers (5-8) |
| Tone and treatment | Tone | Warm and funny / Dark and tense / Literary and restrained / Fast-paced and plot-driven |
Where the story's weight sits (multiSelect: true) | Focus | Characters and relationships / Puzzle or mystery the reader can solve / World and atmosphere / Ideas and themes |
| How it ends | Ending | Twist that recasts the story / Earned happy resolution / Bittersweet or ambiguous / Bleak or tragic |
Other dimensions worth a slot when they are the open ones: comparable authors to write toward, real people or events to stay faithful to, story length (a 3-chapter run wants ~8 beats, a 15-chapter run wants ~15), and anything the story must avoid.
The most valuable answer is usually free text on key story points to hit — the user's
own beats. Invite it explicitly in the Focus question's phrasing, e.g. "Where should the
story's weight sit? (Pick any, or use Other to list specific beats you want hit.)"
Then use the answers:
The book is written for readers aged 8 to 12: clear sentences, concrete images, no graphic violence.Final chapter: block.All five top-level keys are required, spelled exactly like this. Nothing else is read.
| Key | Shape | Consumed as |
|---|---|---|
common-book-description | block string |- | {book_description} in all three prompts |
common-book-characters | block string |- | {book_characters} in all three prompts |
synopsis | mapping: system, prompt | one call, writes the chapter outline |
expand-chapter-first | mapping: system, prompt | chapter 1 |
expand-chapter-next | mapping: system, prompt | chapters 2..N, one call each |
system is a plain one-line string; prompt is a block string |-. A missing system or
prompt key is an assertion failure at runtime.
prompt values go through Python str.format(). Only these names are supplied — anything
else raises KeyError mid-run:
synopsis.prompt — {total_chapters} {book_description} {book_characters}expand-chapter-first.prompt — the above plus {synopsis_response}expand-chapter-next.prompt — the above plus {previous_chapter_number}
{previous_chapter_text} {chapter_number}Rules that follow from that:
{{ and }}.system is never formatted. Placeholders there are passed to the model verbatim.expand-chapter-next.system is dead — the engine uses expand-chapter-first.system
for every chapter. Keep the two identical so a later edit isn't silently ignored.${...} anywhere in the file; OmegaConf treats it as interpolation and
the run dies on load.--total-chapters.
Always use {total_chapters}.Keep the three prompt bodies close to the existing files (gptauthor/prompts-*.yaml);
they are tuned to parse correctly. Vary the system line and the genre nouns to match the
story, and leave the mechanics alone. assets/template.yaml already has working versions.
Every choice below traces back to an answer from Asking about style. If an answer had no visible effect on the file, it wasn't applied.
common-book-descriptionTwo labelled parts, in this order:
Style of the <adjectives> book: — 6-10 lines: genre, the audience bracket stated in
plain terms, two or three comparable authors, narrative devices matching the chosen
tone, a line requiring rich dialog, a line requiring per-character description, a line
requiring that scene/timeline/travel logic be worked out, and
You must not end a chapter with any variation of 'To be continued...'.Key points of the story: — the actual plot. 8-15 beats covering the full arc in order,
naming characters and locations. Give the beats the user asked to focus on more room than
the rest, and fold any beats they supplied as free text in verbatim in the right place.
State the chosen ending explicitly, including any twist. A Final chapter: sub-block
is a good way to pin down an unusual ending
(see gptauthor/prompts-scifi-simulation.yaml).Write beats, not prose — this is a brief for a writer, not a draft.
common-book-charactersOne line per character: name, gender, role, appearance, personality, quirks. Include minor characters the beats depend on. Mark historical or offstage figures as such. Match the cast to the audience — a middle grade book wants a protagonist near the reader's own age.
system linesOne sentence naming the author persona for the genre, e.g. "You are a clever and creative
hard science fiction book author. You are skilled at weaving stories that are coherent,
logical, and thrilling to read. You are skilled at creating characters that are engaging
and believable." Name the audience here too when it is not adult, e.g. "...a children's
book author writing for readers aged 8 to 12." Use the same one in synopsis and both
expand-chapter-* sections unless the outline genuinely needs a different persona from
the prose.
prompts-<kebab-slug>.yaml, slug derived from the story (e.g. prompts-lighthouse-keeper.yaml).
--story resolves
a local file first, then the installed package's resources.gptauthor/, and note that
pyproject.toml include lists the yaml files that get packaged — it currently ships only
two, so a new file needs adding there if it is meant to be distributed.Do not overwrite an existing file; if the path is taken, pick another slug and say so.
Give the path, one line per style answer showing where it landed in the file (and, for any
dimension the user left to you, what you picked), and the run command with the name minus
the .yaml extension:
gptauthor --story prompts-lighthouse-keeper --total-chapters 5 --llm-model gpt-5.4-mini --llm-temperature 0.1Mention that OPENAI_API_KEY must be set, and that the run pauses after the synopsis so the
user can edit synopsis_response_user_edited.txt before the chapters are written.
reference.md — the engine call sequence, every runtime failure mode with file:line
citations, and a worked short-input-to-yaml example. Read it when a validation error is
unclear or when deviating from the template.
© dylanhogg, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (scripts, assets) in .agents/skills/create-story-yaml of dylanhogg/gptauthor.
Open the folder on GitHubat commit 8d190fd
Create Story YAML next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create Story YAML this skilldylanhogg/gptauthor | 116 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Novel Toolsuu201/character-arc | 583 | 1 repos | ~574 | Automated safety check: Pass | MIT | |
| InkosLeoYeAI/openclaw-master-skills | 2.2k | — | ~5.5k | Automated safety check: Pass | MIT | |
| Zy Cinematic Realismpopopo-99/zy-cinematic-realism | 570 | — | ~4.6k | Automated safety check: Pass | CC-BY-NC-4.0 | |
| Web Novel Cover Generatorzenstory-ai/oh-story-claudecode | 7.4k | — | ~2.9k | Automated safety check: Pass | MIT | |
| Character Refseternityspring/shuohao-skills | 4.3k | — | ~1.7k | Automated safety check: Warn | Apache-2.0 |
uu201/character-arc
网文创作工具与生产流程。当用户需要使用AI辅助写作工具、设计提示词模板、规划写作工作流、选择码字工具、制定发布与数据分析策略时触发。覆盖DeepSeek/ChatGPT/Claude/豆包等AI工具应用、提示词工程、工作流设计、发布运营。
LeoYeAI/openclaw-master-skills
Autonomous novel writing CLI agent - use for creative fiction writing, novel generation, style imitation, chapter continuation/import, EPUB export, AIGC detection, and fan fiction.
popopo-99/zy-cinematic-realism
Develop supplied scripts, short stories, or synopses into scene understanding, director-facing art concepts, and motivated narrative keyframes; compile scene ideas, visual references, or existing…
zenstory-ai/oh-story-claudecode
Generates a finished web novel cover with title and author name from a book title, inferring genre style and sizing the image for the target platform.
eternityspring/shuohao-skills
给任何故事里的角色真出参考图(小说改编、自己原创的故事、单独设计一个角色都行,不需要小说原文): 一段话描述角色,拆成分层字段、补全后确认, 先出一张正面全身锚点,其余视图(大头照、90° 侧面、背面、细节、45° 大头照)都只参考这张锚点, 按需分档出图。每张图带标识、可单独重出,重出后自动标出哪些图过期。
zenstory-ai/oh-story-claudecode
Reviews Chinese web-novel text with several reviewer agents in parallel, falling back to a single-agent pass, and reports structure, character, prose and setting problems with fixes.
Works with
Categories
Turn a short story idea into a gptauthor story prompt YAML file (prompts-<name.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and…. Create Story YAML is an agent skill from dylanhogg/gptauthor.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and expand-chapter-next sections, then validate it.
Create Story YAML fits situations like: the user wants a new gptauthor story; A new story prompt file; A yaml like prompts-openai-drama.yaml / prompts-scifi-simulation.yaml / prompts-gptauthor-usage.yaml.
Run `npx skills add dylanhogg/gptauthor --skill create-story-yaml -a claude-code`. Or copy the skill folder (.agents/skills/create-story-yaml in dylanhogg/gptauthor) into .claude/skills/create-story-yaml in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dylanhogg/gptauthor --skill create-story-yaml -a codex`. Or copy the skill folder (.agents/skills/create-story-yaml in dylanhogg/gptauthor) into .agents/skills/create-story-yaml in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dylanhogg/gptauthor --skill create-story-yaml -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-story-yaml, .gemini/skills/create-story-yaml, .github/skills/create-story-yaml and .opencode/skills/create-story-yaml in your project.
Going by SKILL.md and its folder, Create Story YAML needs Python for the scripts in its folder, the command-line tools its instructions call (python3) and credentials named OPENAI_API_KEY. Our summary lists: Python 3; A credential in OPENAI_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Create Story YAML is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Create Story YAML: Novel Tools (uu201/character-arc, 583 stars), Inkos (LeoYeAI/openclaw-master-skills, 2.2k stars), Zy Cinematic Realism (popopo-99/zy-cinematic-realism, 570 stars) and Web Novel Cover Generator (zenstory-ai/oh-story-claudecode, 7.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dylanhogg (a GitHub user) maintains it in dylanhogg/gptauthor, which has 116 GitHub stars. The repository was last updated on August 15, 2026.
Source: dylanhogg/gptauthor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.