SuperAPI AI Directory

novel-writer

General & other

View repository

Updated 10-16 07:22

About this skill

Novel Writer — AI Novel Writing Assistant

Core Design Philosophy: Use WPS Notes as the novel's "brain." Before every writing session, the AI first "recalls"; after finishing, it "archives." The user only needs to give direction or make requests; everything else is completed automatically.


Trigger Conditions

This Skill is activated when any of the following conditions is met:

  • The user says "help me write a novel," "I want to write a...," "continue the next chapter," "continue my novel"
  • The user describes a story idea or synopsis
  • The user says "I have a story I want to write," "help me create a long-form work about..."

Note Tag System

Each novel has its own independent tag tree; multi-level tags are written into WPS Notes separated by / .

#小说名/meta                       ← 体裁、偏好、风格、进度等配置
#小说名/设定/世界观               ← 世界背景、时代、规则体系
#小说名/设定/场景                 ← 地点描写、场景库
#小说名/设定/冲突                 ← 核心矛盾与戏剧冲突
#小说名/设定/剧情梗概             ← 总体剧情走向与大纲
#小说名/设定/伏笔                 ← 已埋伏笔及回收状态
#小说名/设定/写作风格             ← 叙述视角、语言风格、节奏偏好
#小说名/人物/主角:人物名         ← 主角设定(含生成的形象图)
#小说名/人物/配角:人物名         ← 配角设定(含生成的形象图)
#小说名/人物/人物关系图           ← 角色之间的关系网
#小说名/剧情日志                   ← 每章事件摘要+角色状态+伏笔(防穿帮核心)
#小说名/正文/第N章                ← 各章节正文

Tag format (XML format):<tag>#小说名/设定/世界观</tag>


Communication Standards (must be followed for every operation)

The sole purposes of dialogue: asking questions + status notifications

In dialogue, the AI can only do two things:

  1. Ask questions: When confirming information with the user, options must be provided; do not make the user face a blank input box
  2. Status notifications: Inform what operation is being performed (one sentence before calling a tool) and the execution result (a brief report after a chapter is finished)

Content that absolutely must not appear in dialogue:

  • Novel body text (any length, even one sentence)
  • Chapter excerpts, sample paragraphs, drafts
  • Any writing content beginning with "The following is..." or "The text is as follows..."

Questioning standard: options must be provided

Every time you ask the user a question,you must attach 2–4 options, so the user can directly choose one or modify based on it, and is not left staring at a blank.

Example option format:

你希望这部小说是什么体裁?
A. 奇幻/玄幻(有魔法或特殊力量体系)
B. 都市/现代(贴近现实生活)
C. 科幻(未来、技术、星际)
D. 悬疑/推理(谜题、反转、破案)
→ 也可以直接告诉我你想要的风格
主角是什么样的人?
A. 普通人意外卷入事件,逐渐成长
B. 天赋异禀但性格有缺陷,需要磨砺
C. 已经很强,故事聚焦在更大的阴谋或牺牲
D. 让 AI 自动决定,和故事背景匹配

Status Notification Standards

Before calling any MCP tool,you must first say one sentenceto inform the user; silent direct calls are not allowed:

  • "Okay, first let me search the notes to see if there are settings for this novel..."
  • "Reading the ending of the previous chapter, please wait..."
  • "Starting to create the worldview note..."
  • "Archiving now, updating the log and character status..." (archiving steps 1–5 can be combined into one sentence)

Note Structure Standards

Structure of each note:title line + tag line + body content, with title and tags written separately, not mixed together.

# 笔记标题          ← h1 标题,只写名字,不含标签
#标签/子标签        ← 单独一行写标签,紧跟标题下方

正文内容...

Corresponding XML format:

<h1>笔记标题</h1>
<p><tag>#小说名/设定/世界观</tag></p>
<p>正文内容...</p>

Two Startup Modes

Mode A: Cold Start (brand-new novel)

When search_notes({ keyword: 小说名 }) no related notes are found, enter cold start.

Process:

  1. Ask the user 3 questions with options (story direction, protagonist starting point, writing pace)
  2. Based on the answers, the AI automatically derives all settings (see "Cold Start Detailed Process")
  3. Create setting notes in sequence → generate character illustrations → write chapter one → archive and display

Mode B: Continuation mode (existing notes)

When a note matching the corresponding novel tag is found, directly load the context and continue writing.

Process:

  1. Load the meta note (to obtain style constraints)
  2. Read the end of the latest chapter (300–500 words)
  3. Read the plot log (unresolved foreshadowing, character status)
  4. If there are special user requirements, retrieve relevant setting notes
  5. Write → archive → automatically update the log

Detailed cold-start process

Step 1: Collect basic information

The AI asks the user questions,every question must include options, and the user can either select directly or describe freely. After all questions are collected, the AI automatically derives all settings without requiring the user to confirm them one by one.

Question 1: What is the story about?

你的故事大概是什么方向?
A. 一个人在陌生/异世界的冒险与成长
B. 现代都市里的情感、阴谋或悬疑
C. 末世、星际或未来科技背景的生存/探索
D. 权谋、江湖、历史或古代架空
→ 也可以直接用一句话描述你的故事核心

Question 2: What kind of person is the protagonist?

主角的起点是?
A. 普通人,被命运推着卷入事件,逐渐觉醒
B. 有天赋但有明显缺陷,需要经历磨砺
C. 已经足够强,故事聚焦更大的阴谋、牺牲或使命
D. 让 AI 根据故事背景自动决定

Question 3: What kind of writing pace do you like?

偏好哪种风格?
A. 快节奏爽文,冲突密集,读着带劲
B. 慢热叙事,注重人物情感和内心刻画
C. 悬疑紧张,每章留钩子,让人想翻下一章
D. 随 AI 根据体裁自动匹配

After the user answers, the AI automatically derives the following settings based on all the answers,and does not ask further:

Setting item Basis for derivation
Genre Automatically determined based on the answer to Question 1
Worldview Constructed based on genre and description
Main conflict Extracted from the story's core
Protagonist setting Generated by combining Question 2 and the genre
Narrative perspective Default to third-person limited perspective (stored in meta)
Chapter word count Derive the default value based on genre (see the word count rules below), stored in meta
Language style Determined based on Question 3 and the genre, stored in meta

Any setting explicitly stated by the user takes precedence over AI derivation.

Chapter word count derivation rules:

Genre/Preference Default target word count
Light novel/web power fantasy 2000–3000 words
Fantasy/Sci-fi/Wuxia 1500–2500 words
Urban/Romance/Suspense 1000–2000 words
Literary fiction/slow-burn style 800–1500 words
Explicitly specified by the user The user's specification takes precedence

After the word count is stored in the meta note,it must be read before every writing session and enforced as a hard constraint。


Step 2: Create setting notes

Create them in the following order, and tag each note accordingly.

2-1: Meta note

The meta note is thesole index centerof the entire novel, storing the note_id of all sub-notes. All subsequent processes should preferentially read note_ids from the meta index rather than searching each time.

title: 《小说名》创作设定
tag: #小说名/meta

XML 内容:
<h1>《小说名》创作设定</h1>
<p><tag>#小说名/meta</tag></p>
<h2>基本信息</h2>
<p>体裁:[奇幻/科幻/现代/悬疑...]</p>
<p>叙述视角:第三人称有限视角</p>
<p>语言风格:[沉稳/轻快/诗意/犀利...]</p>
<p>章节目标字数:[X–Y 字]</p>
<p>特殊禁忌:[用户不希望出现的内容,若无则写"无"]</p>
<h2>创作记录</h2>
<p>当前进度:第 0 章(待开始)</p>
<p>创作开始时间:[YYYY-MM-DD]</p>
<h2>笔记索引</h2>
<p>【meta】note_id = (本笔记自身 ID)</p>
<p>【世界观】note_id = (创建后填入)</p>
<p>【冲突设定】note_id = (创建后填入)</p>
<p>【剧情梗概】note_id = (创建后填入)</p>
<p>【伏笔日志】note_id = (创建后填入)</p>
<p>【剧情日志】note_id = (创建后填入)</p>
<h3>人物</h3>
<p>【人物:角色名】note_id = (创建后填入)</p>
<h3>场景</h3>
<p>【场景:场景名】note_id = (创建后填入)</p>
<h3>正文章节</h3>
<p>【第1章】note_id = (创建后填入)</p>

Index maintenance rules:

  • Each time a new note is created,immediatelywrite its note_id back to the corresponding entry in the meta index
  • When accessing a note using a note_id in the index, if it returns BLOCK_NOT_FOUND or NOTE_NOT_FOUND, then use search_notes to relocate it, and once foundUpdate the meta index immediately
  • The index is the single source of truth; incorrect IDs cannot be left in place and must be corrected

2-2: Worldbuilding Notes

title: 《小说名》世界观设定
tag: #小说名/设定/世界观

XML 内容包含:
<h1>《小说名》世界观设定</h1>
<p><tag>#小说名/设定/世界观</tag></p>
- 世界背景(时代/地理/社会结构)
- 核心规则(魔法体系/科技水平/社会规范)
- 特殊设定(独有元素)
- 禁忌与约束(这个世界做不到的事)

2-3: Character Notes (one entry per major character)

title: 人物设定 — 角色名
tag: #小说名/人物/主角:角色名

XML 内容包含:
<h1>人物设定 — 角色名</h1>
<p><tag>#小说名/人物/主角:角色名</tag></p>
- 外貌描述(详细,用于生图):发色与发型、体型与身材比例、面部特征、着装偏好与典型服饰、标志性配件
- 性格特征(3-5 个核心词)
- 口头禅/说话风格
- 背景故事
- 与其他角色的关系
- 人物动机(想要什么/害怕什么)
- 当前状态:[初始状态,随剧情更新]

Character appearance change rules:

  • When a character's appearance undergoes a significant change (such as scarring from injury, changing outfits, growth and transformation, having their appearance altered by a curse, etc.),do not modify the original appearance description, and append the change history at the end of the note:
<h2>形象变迁历史</h2>
<h3>第X章之后</h3>
<p>变迁类型:[受伤/换装/成长/魔化/其他...]</p>
<p>触发事件:[导致外貌变化的具体事件]</p>
<p>变迁描述:[详细说明外貌变成了什么样,哪些改变,哪些保留]</p>
<p>【变迁后形象图描述】[此图展示变迁后的外貌,角度/重点描述]</p>
[图片,生图失败时写 <p>(变迁形象图待补)</p>]

All subsequent image generation prompts involving this character must use thelatest appearance description(including the latest change) rather than the initial description.

After creating the character notes,immediately generate the character appearance images:

⚠️ Before generating any character image, you must first read that character's notes in full, extract and record the following character design details; the image generation prompt must include all of these details to ensure cross-chapter consistency:

  • Hair color and hairstyle (e.g., long straight silver-white hair, short black hair, brown curly hair)
  • Body type and proportions (e.g., tall and slender, petite and delicate, sturdy with broad shoulders)
  • Facial features (e.g., eye color and shape, skin tone, signature features)
  • Clothing preferences and typical attire (e.g., always wears a dark trench coat, prefers white long robes with wide sleeves)
  • Signature accessories (e.g., silver hoop in the left ear, red string around the neck)

These details arevery, very important, and all subsequent images involving this character must strictly follow them; no appearance inconsistent with the character design may appear.

/ Step 0:阅读人物笔记,提取人设细节(必做,不可跳过)
read_note({ note_id: 人物笔记 })
→ 提取:发色、发型、体型、面部特征、着装偏好、标志性配件
→ 将这些细节全部写入 prompt

/ Step A:生成图片(4:3 尺寸,最大 2048x1536)
/ 注意:每 10 分钟最多生成 10 张图,生图失败时不要重试阻塞流程
/ 失败处理:先跳过,继续后续步骤;角色笔记里已有文字描述,后续回来发现没图再补
generate_image({
  prompt: "[角色名],[发色发型],[体型描述],[面部特征],[典型着装],[标志性配件],[体裁]插画风格,精细人物肖像,[主要色调]。限 500 字符以内",
  width: 2048,
  height: 1536
})
→ 成功:{ image_url: "https:/...", task_id: "..." }
→ 失败:跳过插图,在笔记对应位置写 <p>(形象图待补)</p>,继续后续流程

/ Step B:插入人物笔记末尾(生图成功时执行)
/ 先获取笔记末尾的 block_id
get_note_outline({ note_id: 人物笔记 })
→ 找到最后一个 block_id(last_block)

insert_image({
  note_id: 人物笔记,
  anchor_id: last_block,
  position: "after",
  src: image_url,
  alt: "角色名 初始形象图"
})

Note: generate at most 10 images every 10 minutes. When image generation fails (including rate limiting),first use a text description as a placeholder, continue with other processes, and do not get stuck. Later, when returning to that character/scene note and finding only a "(to be added)" placeholder, generate the image then.

2-3b: Scene Setting Notes (each scene appearing in the story must have its own separate file)

⚠️ Each new scene must have its own separate setting note created, and they cannot be merged. Scene settings must include:

title: 场景设定 — 场景名(如:陵风城·东市集)
tag: #小说名/设定/场景/场景名

XML 内容包含:
<h1>场景设定 — 场景名</h1>
<p><tag>#小说名/设定/场景/场景名</tag></p>
<h2>场景概述</h2>
<p>[场景类型:室内/室外/地下/空中等]</p>
<p>[所属区域/城市/世界位置]</p>
<p>[首次出现:第X章]</p>
<h2>环境细节(必须详尽,不可省略)</h2>
<p>地面:[材质、颜色、状态,如:青石板路,缝隙间长满苔藓,夜晚湿滑]</p>
<p>建筑/结构:[样式、材料、破损或完好程度、高度层次]</p>
<p>光线:[光源类型、颜色、照射角度、氛围感,如:吊挂的昏黄油灯,从窗缝透入的月光]</p>
<p>气味:[...]</p>
<p>声音:[...]</p>
<p>温度/气候:[...]</p>
<p>常驻元素:[固定摆设、标志性物件,如:门口总挂着半截破布帘、角落有一口锈迹斑斑的铁锅]</p>
<h2>配图</h2>

Scene illustration specifications:

  • Each scene must generate 2–3 images from different angles(such as a frontal wide shot, an interior perspective, a close-up detail)
  • Above each image there must be text describing the shooting angle and focal point of the image, in the following format:
<p>【正面全景】从街道正面望向入口,左侧是歪斜的木牌,右侧堆着货箱,光线从右上方斜入,整体色调昏黄。</p>
[图片]
<p>【内部视角】站在柜台后方向门口看,地面潮湿反光,远处是嘈杂的市集人影。</p>
[图片]
<p>【特写细节】柜台左角的铁锅,锈迹斑斑,锅沿磕了一块缺口,旁边搭着一块灰布。</p>
[图片]

When generating scene images, the prompt must include: scene name, all environmental details, lighting and color tone, and genre style.

Scene change rules:

  • When a scene ischanged or destroyedin the story (such as a room being searched and turned upside down, a city gate being breached, a secret room being discovered),do not modify the original description, but instead append the change history at the end of the note:
<h2>场景变更历史</h2>
<h3>第X章之后</h3>
<p>变更类型:[破坏/改造/废弃/占领...]</p>
<p>变更描述:[详细说明场景变成了什么样,哪些细节改变了,哪些保留了]</p>
<p>触发事件:[导致变更的具体事件]</p>
[变更后配图:每张图上方同样要有角度描述文字;生图失败时写 <p>(变更状态图待补)</p>]

General specifications for generating scene/character illustrations:

Default image size: 4:3, maximum 2048×1536 Rate limit: at most 10 images every 10 minutes Failure handling: when image generation fails (including rate limit exceeded), first write <p>(图待补)</p> as a placeholder in the corresponding position, continue with subsequent processes, and do not block creation. Later, when returning to that note and finding the placeholder, generate the image then, because the text description has already recorded all the details.

/ Step 1:根据场景细节描述,按顺序生成多角度图
/ 每张图生成前先写好描述文字(insert into 笔记),再生成图片插入
/ 生图失败时:写 <p>(图待补)</p> 占位,继续下一步

/ 角度 1(正面全景)
edit_block({ op: "insert", content: "<p>【正面全景】[角度描述]</p>" })
generate_image({ prompt: "[场景名],[所有环境细节],正面全景,[光线色调],[体裁]插画风格,写实背景艺术", width: 2048, height: 1536 })
→ 成功:insert_image(...)
→ 失败:edit_block({ content: "<p>(正面全景图待补)</p>" }),继续

/ 角度 2(内部视角)
edit_block({ op: "insert", content: "<p>【内部视角】[角度描述]</p>" })
generate_image({ prompt: "[场景名],[所有环境细节],内部视角,[光线色调],[体裁]插画风格", width: 2048, height: 1536 })
→ 成功:insert_image(...)
→ 失败:edit_block({ content: "<p>(内部视角图待补)</p>" }),继续

/ 角度 3(特写细节,可选)
edit_block({ op: "insert", content: "<p>【特写细节】[角度描述]</p>" })
generate_image({ prompt: "[标志性物件名称],[细节描述],特写,[体裁]插画风格", width: 2048, height: 1536 })
→ 成功:insert_image(...)
→ 失败:edit_block({ content: "<p>(特写图待补)</p>" }),继续

2-4: Plot Summary Notes

title: 《小说名》剧情梗概
tag: #小说名/设定/剧情梗概

XML 内容包含:
<h1>《小说名》剧情梗概</h1>
<p><tag>#小说名/设定/剧情梗概</tag></p>
- 故事起点
- 主线走向(3-5 个关键转折点)
- 预计结局(可以模糊)
- 核心主题

2-5: Foreshadowing Log Notes (initially empty)

title: 《小说名》伏笔日志
tag: #小说名/设定/伏笔

初始内容:
<h1>《小说名》伏笔日志</h1>
<p><tag>#小说名/设定/伏笔</tag></p>
<p>(尚未埋入伏笔)</p>

后续每章追加格式(全局唯一编号 F-1、F-2…):
<p>[F-1] 伏笔内容描述 → 埋入:第1章 / 状态:未回收</p>
<p>[F-2] 伏笔内容描述 → 埋入:第2章 / 已回收:第5章</p>

2-6: Plot Log Notes (initially empty)

title: 《小说名》剧情日志
tag: #小说名/剧情日志

初始内容:
<h1>《小说名》剧情日志</h1>
<p><tag>#小说名/剧情日志</tag></p>
<p>(尚未开始写作)</p>

每章追加格式:
<h2>第X章《章节标题》</h2>
<p>主要事件:...</p>
<p>在场角色:...</p>
<p>埋入伏笔:...(若有,否则写"无")</p>
<p>角色状态变化:...(若有,否则写"无")</p>
<p>结尾句:[该章最后一句话]</p>

Pre-Writing Context Check (mandatory every time)

Before formal writing, the AI mustcomplete the following 5 steps:

Check 0: Read Meta to obtain writing constraints and note index

/ 第一次启动时通过标签搜索找到 meta 笔记(此后通过索引直接访问)
search_notes({ tags: ["#小说名/meta"], limit: 1 })
→ note_id_meta

/ 读取整个 meta 笔记(包含基本信息 + 笔记索引)
read_note({ note_id: note_id_meta })
→ 从"基本信息"提取:章节目标字数、叙述视角、语言风格
→ 从"笔记索引"提取:世界观、剧情日志、伏笔日志、各角色、各场景、各章节的 note_id
→ 将这些 note_id 缓存在本次上下文中,后续步骤直接使用,无需再搜索

Index fault-tolerance rule: When accessing using the note_id in the index, if an error is returned, immediately use search_notes to relocate, and after finding it, call edit_block to update the corresponding entry in the meta index, then continue the process.

Treat the target word count as a hard constraint: strictly keep it within ±20% of the target word count when writing.

Check 1: Read the end of the previous chapter

/ 从 meta 索引取最新章节 note_id(检查 0 已缓存)
/ 若索引里有多章,取编号最大的那条

read_note({ note_id: 最新章节note_id })
→ 或用 read_blocks 读末尾约 300-500 字:
get_note_outline({ note_id: 最新章节note_id })
→ 找到后几个 block_id
read_blocks({ note_id: 最新章节note_id, block_id: 倒数第二个block, after: 5 })
→ 读取结尾内容

Record: the final emotional tone, the protagonist's location, and the time point.

Check 2: Scan the plot log

/ 从 meta 索引取剧情日志 note_id(检查 0 已缓存)
read_note({ note_id: 剧情日志note_id })
→ 读取全文

Pay attention to: unresolved foreshadowing (is this chapter suitable for resolving it?), recent chapter trends, and whether any character has been absent for too long.

Check 3: Read the status of characters relevant to this chapter

/ 从 meta 索引取将要出场角色的 note_id(检查 0 已缓存)
search_note_content({ note_id: 角色note_id, query: "当前状态" })
→ 定位"当前状态"block_id
read_blocks({ note_id: 角色note_id, block_id: 当前状态block })
→ 确认角色状态(含最新形象变迁)

Check 4: Handle the user's special requirements (if any)

When the user makes requests such as "XX must appear in this chapter" or "handle a certain matter":

/ 语义检索相关设定
search_notes({ keyword: "用户提到的关键词", tags: ["#小说名"] })
→ 确认相关设定细节

/ 检查剧情日志有无相关铺垫
search_note_content({ note_id: 剧情日志, query: "关键词" })
→ 确认前文有无伏笔

Check 5: Confirm the scenes involved in this chapter

For each scene that will appear in this chapter:

/ 检索场景设定笔记
search_notes({ keyword: "场景名", tags: ["#小说名/设定/场景"] })
  • Existing scene: read the scene notes, confirm the current status (whether there is a change history), and strictly follow it when writing
  • New scene appearing for the first time: before writing, you must first create scene setting notes (including detailed descriptions + multi-angle illustrations), then start writing the main text

Formal Writing

⛔ Absolutely prohibited: outputting novel main text in the conversation

The AI is not allowed to write any novel main text in conversation messages, under any circumstances, without exception.

  • It is prohibited to write main text, fragments, demonstrations, or drafts in the conversation, even if only one sentence
  • It is prohibited to output main text in messages in any form such as "The following is the content of this chapter" or "The main text is as follows"
  • The only legal way to write: call create_note + batch_edit to write the main text into WPS Notes
  • After writing, only the following may appear in the conversation: chapter title, word count, one-sentence plot summary, "Notes saved"
  • If the user wants to read, guide them to open the notes; the AI does not display the content in the conversation

Violating any of the above is an execution error, and you must stop immediately and rewrite through the tool.

Write according to the style constraints in the Meta notes.

6 Writing Principles:

  1. Word count constraint: strictly keep within ±20% of the "chapter target word count" in the Meta notes (hard constraint, cannot be ignored)
  2. No continuity errors: all details (place names, character abilities, relationships) must be consistent with the setting notes
  3. Consistent style: strictly follow the narrative perspective and language style description in the Meta notes
  4. Pacing control: each chapter has ups and downs; do not keep it flat throughout
  5. Ending hook: leave suspense or an emotional hook at the end of each chapter
  6. Diversity: different chapters can vary focus and tension rhythm to avoid similarity

Writing execution process:

  1. Generate the complete chapter text internally (never output it to the conversation)
  2. Immediately call create_note + batch_edit to write to WPS Notes (see "Archive 1")
  3. After a successful write, tell the user only in the conversation: chapter title, word count, one-sentence plot summary, notes saved
  4. Then automatically complete Archives 2–5 (log, character status, foreshadowing, progress)

Post-writing archiving (required every time, fully automatic)

Execute immediately after the chapter text is finished,no user involvement required。

Archive 1: Create the main text note (executed synchronously during writing)

create_note({ title: "第X章 章节名" })
→ { fileId: new_note_id }

get_note_outline({ note_id: new_note_id })
→ { blocks: [{ id: "p_empty", type: "paragraph" }] }

batch_edit({ note_id: new_note_id, operations: [
  { op: "replace", block_id: "p_empty",   content: "<h1>第X章 章节名</h1><p><tag>#小说名/正文/第X章</tag></p><p>正文第一段...</p><p>正文第二段...</p>..." }
]})

/ 写入成功后,立即将新章节 note_id 回写到 meta 索引
search_note_content({ note_id: meta笔记, query: "笔记索引" })
→ 定位索引区块末尾 block_id(正文章节部分)
edit_block({ note_id: meta笔记, op: "insert",
  anchor_id: 章节索引末尾block,
  position: "after",
  content: "<p>【第X章】note_id = new_note_id</p>"
})

Archive 2: Append to the plot log (required)

After each chapter is finished,mustappend to the plot log; fields must not be omitted.

get_note_outline({ note_id: 剧情日志 })
→ 获取 last_block_id

edit_block({ note_id: 剧情日志, op: "insert",
  anchor_id: last_block_id, position: "after",
  content: "
    <h2>第X章《章节标题》</h2>
    <p>主要事件:[本章核心剧情一两句]</p>
    <p>在场角色:[角色名, 角色名, ...]</p>
    <p>角色状态变化:[无 / 角色名:[变化描述]]</p>
    <p>结尾句:[本章最后一句原文]</p>
    <h3>本章伏笔清单</h3>
    <p>【新埋】[伏笔编号 F-X] [伏笔描述] → 状态:未回收</p>
    <p>【新埋】[伏笔编号 F-X] [伏笔描述] → 状态:未回收</p>
    <p>(本章无新埋伏笔则写:本章无新伏笔)</p>
    <p>【回收】[伏笔编号 F-X] [伏笔描述] → 已回收(本章)</p>
    <p>(本章无回收则省略此行)</p>
    <p>累计未回收伏笔:[F-1、F-3、F-5...] 共 N 条</p>
  "
})

Foreshadowing numbering rule: globally unique, numbered in the order they are planted, format F-1、F-2……consistent across chapters, easy to track.

Archive 3: Update the characters' current status

For characters whose status changes in this chapter:

/ 定位角色笔记中的"当前状态"字段
search_note_content({ note_id: 角色笔记, query: "当前状态" })
→ 定位 block_id

/ 替换状态描述
edit_block({ note_id: 角色笔记, op: "replace",
  block_id: 状态block_id,
  content: "<p>当前状态:[新状态描述]</p>"
})

Archive 4: Sync the foreshadowing log (required, must be executed every chapter)

Whether or not this chapter has new foreshadowing, this step must be executed to ensure the foreshadowing log is consistent with the list in the plot log.

Case A: This chapter plants new foreshadowing

get_note_outline({ note_id: 伏笔日志 }) → 获取 last_block_id

edit_block({ note_id: 伏笔日志, op: "insert",
  anchor_id: last_block_id, position: "after",
  content: "<p>[F-X] [伏笔描述] → 埋入:第X章 / 状态:未回收</p>"
})

Case B: This chapter pays off existing foreshadowing

search_note_content({ note_id: 伏笔日志, query: "F-X" }) → 定位 block_id

edit_block({ note_id: 伏笔日志, op: "replace",
  block_id: 伏笔block_id,
  content: "<p>[F-X] [伏笔描述] → 埋入:第X章 / 已回收:第Y章</p>"
})

Case C: This chapter has no foreshadowing changes (must also be executed)

/ 读取伏笔日志,核对"累计未回收"数量与剧情日志最新条目一致
search_note_content({ note_id: 伏笔日志, query: "未回收" })
→ 若数量与剧情日志对得上,归档完成;若对不上,逐条比对补齐

Archive 5: Update Meta progress

search_note_content({ note_id: meta笔记, query: "当前进度" })
→ 定位 block_id

edit_block({ note_id: meta笔记, op: "replace",
  block_id: 进度block_id,
  content: "<p>当前进度:第 X 章</p>"
})

Anti-continuity-error quick reference table

Type of continuity error Trigger scenario Protective measure
Character status contradiction Injured in Chapter 3, but acts normally in Chapter 4 Before writing, read the character's "current status" field
Ability overreach A character suddenly has a skill not in the setting Before writing, read the worldview/character setting notes
Interpersonal relationship error Someone who has already broken off suddenly acts like an old friend Read the character relationship chart note
Geographical contradiction A three-day journey suddenly takes one day Scene notes mark geographical distances
Scene detail contradiction Descriptions of the same location are inconsistent before and after Before writing, read the scene setting notes and execute details faithfully
Scene state error A room that was destroyed returns to its original state Check the scene change history and use the latest state
Character appearance inconsistency The same character's hair color or clothing is contradictory before and after Before image generation/writing, must first read the character note's character design details
Foreshadowing forgotten Something planted in Chapter 2 is never paid off Scan the plot log before every writing session
Timeline confusion The order of events is unclear The plot log records in chapter order

Special case handling

The user wants to change an existing setting

Handling process:

  1. search_notes({ keyword: 角色名/设定名, tags: ["#小说名"] }) Find all related notes
  2. Assess the scope of impact and inform the user (explain in one sentence)
  3. After confirmation, batch-update the related notes
  4. In the plot log, note "Setting change point: from Chapter X onward, setting XX is changed to YY"

The user wants to insert a new character

Process:

  1. Ask: "What are this character's traits?" (If the user has no ideas, the AI generates them directly)
  2. Create a character note → generate a character image
  3. In the character relationship map note, append the relationships with existing characters
  4. Check whether the earlier text is suitable for adding foreshadowing

The user wants to skip chapters while writing

Process:

  1. In the plot log, reserve a marker for the skipped chapters:<p>[待写] 第X章 占位</p>
  2. In the Meta note, after "Current progress", append "Skip-writing record: Chapter X is written, Chapter Y is pending"
  3. Write the specified chapter normally and archive it

Complete tool call reference

Continuation sequence (quick reference)

Step 1:加载 meta 笔记(索引 + 风格约束)
/ 首次使用标签搜索定位 meta,后续直接用已知 note_id
search_notes({ tags: ["#小说名/meta"], limit: 1 }) → note_id_meta
read_note({ note_id: note_id_meta })
→ 从"基本信息"取:目标字数、叙述视角、语言风格
→ 从"笔记索引"取:剧情日志、伏笔日志、各角色、各场景、最新章节的 note_id
→ 将所有 note_id 缓存在本次上下文

Step 2:读最新章节结尾(用索引中的 note_id 直接访问)
get_note_outline({ note_id: 最新章节note_id })
read_blocks({ note_id: 最新章节note_id, block_id: 倒数block, after: 5 })

Step 3:扫描剧情日志(直接用索引 note_id)
read_note({ note_id: 剧情日志note_id })

Step 4:[如有用户需求] 检索设定
/ 先从 meta 索引查找对应笔记的 note_id
/ 索引中没有时再用 search_notes,找到后更新索引

Step 5:写作

Step 6:存档(见"写作后归档"章节,含回写 note_id 到索引)

Troubleshooting

Cannot find an existing novel note

/ 先从 meta 索引直接读取 note_id(检查 0 已加载)
/ 若 meta 索引中的 note_id 访问失败,执行以下修复流程:
search_notes({ keyword: "小说名" })
list_notes({ sort: "update_time", direction: "desc", limit: 20 })
/ 找到正确 note_id 后,立即更新 meta 索引中对应条目

Image generation failed (GENERATE_IMAGE_FAILED or RATE_LIMITED)

  • Do not retry and block the process: when image generation fails, write <p>(图待补)</p> as a placeholder at the corresponding position, and continue with the subsequent steps
  • Because the text description has already completely recorded all the details, when you return to this note later and find the placeholder, you can generate the image then
  • Rate limit note: generate at most 10 images every 10 minutes; when exceeded, handle it as a failure in the same way, keep the placeholder, and continue

BLOCK_NOT_FOUND error

After an edit operation, block_id will change and needs to be refreshed:

get_note_outline({ note_id })
→ 获取最新 block_id 后重试

The plot log is too long, causing slow reading

When the log exceeds medium (>20K characters), switch to precise search:

search_note_content({ note_id: 剧情日志, query: "未回收" })
→ 只读未回收的伏笔条目

Coordination with other Skills

Scenario Coordinating Skill
Post to the official account after writing wechat-publisher
Generate Xiaohongshu images xiaohongshu-article-layout
Review notes for inspiration ie-recall-memory / ie-engine
Organize tags tag-organize
Beautify the layout of setting notes wpsnote-beautifier