Poem Story Weaver — 古诗词故事织造
概述
用户提供一首古诗词的名称或名句,技能先检索并考据该作品背后的历史事件、相关人物与创作背景,据此创作一个以史实为骨架、以想象为血肉的故事:情节可以合理补白、适度创新,但不得明显偏离史实。同时生成 2–4 张贴合原作意境与内容的古风配图(严禁水印)。最终交付一份单文件自包含 HTML——古风主题排版、图文完整整合、零外部依赖,电脑端与移动端均正常阅读。
触发条件
命中任一即使用本技能:
- 用户给出诗词名称(如《静夜思》《念奴娇·赤壁怀古》)并要求写成故事 / 二创 / 讲背后的事
- 用户给出名句(如"春风又绿江南岸""人生若只如初见")并要求展开成故事
- 明确提到"古诗词二创""诗的故事""把这首诗讲成故事"
不适用:用户只要诗词原文/翻译/赏析(直接问答即可);用户上传自己的原创诗词要求点评(无考据对象)。
输入收集(缺失项用默认值,仅在关键信息不明时追问)
| 参数 | 说明 | 默认值 |
|---|---|---|
| 诗词名称或名句 | 考据与创作的锚点 | 必填,缺失则追问 |
| 指定朝代/人物视角 | 故事以谁的视角展开 | 考据后选最具戏剧性的视角 |
| 篇幅 | 正文字数 | 1200–1800 字 |
| 配图数量 | 生成图片数 | 3 张 |
| 语言风格 | 现代口语化 / 略带文言韵味 | 现代口语化(用户默认要求) |
名句可能是残句(如"人生若只如初见"出自《木兰花·拟古决绝词》),第 1 步检索时先还原完整作品与作者,再考据。
工作流程
第 1 步:检索考据(动笔前,硬性流程)
诗词背后的史实绝不能凭印象编写,必须先用 WebSearch/WebFetch 核实。
- 确定作品与作者:检索作品全名、作者、创作朝代与年份。名句输入时先还原完整作品。
- 考据四件套,逐项检索并记录来源:
- 创作背景:什么处境下写的(贬谪/宦游/战乱/送别/思乡…),写于何地何年;
- 历史事件:与作品直接相关的历史事件(安史之乱、乌台诗案、靖康之变…),时间、地点、经过要有出处;
- 相关人物:作者生平关键节点,以及诗中出现的真实人物(友人、亲人、君主)之间的关系;
- 名物考证:诗中器物、地名、官职、节令的准确含义("翰林"≠宰相、"阳关"在何处、"元二"是谁),避免常识性硬伤。 - 列事实断言清单:从考据结果中提取所有会写进故事的事实性信息(时间、地点、人物关系、事件经过),每条标注可信度;核实不到的细节一律不写实指,用模糊化处理(不提确切年份、不虚构史书记载的对话),宁可少写一个具体细节,不写一个可能错的细节。
- 标注想象边界:明确区分"史实层"(可写死的事实)与"想象层"(允许合理补白的日常细节——天气、对话、动作神态)。故事情节的创新想象只能在想象层进行:不得改变历史结局、不得虚构重大事件、不得让人物做出与其史实性格明显相悖的行为(如把写《示儿》的陆游写成放弃北伐心愿)。
第 2 步:创作故事正文
写作硬规则:
- 故事核心是诗词本身(用户定稿规则):主线必须围绕诗中写的内容与情景展开——诗里的人物、事件、情感现场。作品的流传经历(采诗官、收入总集、作者轶事)只能收尾时一段带过(≤全篇 10% 篇幅),不得作为叙事主线或叙事视角框架。
- 标题吸睛(用户定稿规则):大标题不用"《作品名》+ 平淡描述"式,要有悬念/反差/情绪钩子,让读者眼前一亮(如"中国文学第一页,是一个睡不着觉的男人");作品名与朝代放副题或标签区。
- 现代口语化文风:像给朋友讲故事,句子自然、用词通俗,禁止堆砌四字成语和文言腔。可以让叙述者偶尔用现代视角点评一句("换今天的话说,李白这波属于裸辞环游"),增强普通读者的代入感,但每篇最多 1–2 处,不能喧宾夺主。
- 史实为骨,想象为肉:故事主干(人物、事件、结局)严格按考据结果展开;血肉(对话、场景、心理、天气)可以合理想象补白。虚构对话不出现"史书原文"式的确凿口吻。
- 诗词进入故事:全诗原文在故事中至少出现一次恰当位置(构思时刻、题写时刻、结尾回响),让读者明白"这首诗就是从这一刻长出来的"。名句可自然融入人物之口或叙述。
- 故事独立成立:没读过原诗的读者也能顺畅读完。开头 150 字内建立人物与处境,中段有冲突/转折,结尾落在情绪与回味上,并回扣诗词。
- 对话独占一行(排版硬规则):每轮对话单独成段——HTML 中每个"引语(+说话人动作)"必须独占一个
<p>,严禁把多轮对话连排在同一段里。叙述过渡句可留在对话段内句首/句尾,但两句引语不得同段。 - 无广告、无说教:不写"我们要学习古人精神"式结尾,停在故事余韵上。
语言质量硬规则(详细手法与病句类型见 references/prose-quality.md):
- 通读即校对:初稿完成后从头到尾通读一遍再定稿——读不顺口的地方就是病句,逐处修改。重点排查:成分残缺、搭配不当、句式杂糅、错别字与同音字误用。
- 句子长度克制:单句以不超过 40 字为宜,超过 60 字的长句必须拆分;一句里只装一件事。
- 指代明确:人物多时(古人常用字号,如李白/太白/李十二)需在首次出现处绑定清楚,后文统一用同一个称呼。
- 段落衔接有钩子:相邻段落用尾首呼应、人物动作顺延或转折词衔接;场景转换必须过渡(时间/地点跳转处写一句摆渡句),配图位置即天然的场景转换点,figure 前一段的收尾要为画面铺垫。
第 3 步:生成配图
按叙事节点生成图片(开篇意境图 / 关键场景图 / 结尾情绪图,3 张为宜):
- 通过 ToolSearch 加载图片生成工具(ImageGen)。
- 每张图的提示词要求(详见
references/image-prompts.md):
- 质感首选:参考图风格迁移(2026-10-10 定稿规则)——用户提供了参考图(或已有确认满意的成品图)时,必须走图生图:image1= 参考图路径 +input_fidelity: "high"+quality: "high"(三者缺一不可,漏quality: "high"画质明显偏平),提示词叠加 "delicate Chinese gongbi-influenced guoman style, fine intricate brushwork" + 本篇意象。多图每张用独立 output_dir 子目录防同名覆盖。纯文生图仅在无任何参考图时使用,且quality: "high"必带。
- 画风默认国漫插画风格(用户定稿规则):细腻线稿 + 赛璐璐上色人物 + 水彩质感背景 + 柔和粉青色调(参考流行古风动画美术);提示词固定复用风格短语 "Chinese anime illustration style, guoman art, cel-shaded characters, soft watercolor background, delicate linework, pastel tones, dreamy soft light"。水墨/工笔仅作为可选风格,用户点名才用。
- 人物清晰度(2026-10-10 定稿规则):全景构图里的小人物脸部必糊。单图尽量只排 1 个近景人物;交付前逐张放大目检人脸,发现糊脸就走"图生图精修救回"流程(image1= 糊脸图 +input_fidelity/qualityhigh + 面部锐化重绘提示词,详见references/image-prompts.md§1b),精修后水印会重新加上,需再做去水印。
- 构图优先意境而非人脸:多用远山孤舟、孤灯残月、背影侧影、衣袂手部特写,降低 AI 人脸违和感;确需人物正脸时保持朝代服饰准确(考据朝代,不要让宋代人穿明代官服)。
- 画面内容对应诗中意象:检索原诗意象清单(月/酒/柳/雁/楼…),提示词直接复用这些意象。
- 同一人物跨图出现时,形象层短语(年龄+五官特征+发型+体态+气质)逐字复用,保证是同一个人;服饰可按情节需要调整,但每张图服饰描述要写明确、同篇内逻辑自洽(详见references/image-prompts.md§三)。
- 注意:并行生成多图时output_dir参数以最后一次调用为准,生成后按文件名前缀识别内容并与叙事节点对应,手动重命名为 scene_01、scene_02… 再继续。 - 【硬性规定】成品图严禁携带任何水印,包括右下角"AI生成 WORKBUDDY>"水印。实测结论:
- ImageGen 的footnote:""参数无法禁用水印;
- 图生图编辑去除也无效(生成管线会把水印重新加上);
- 可靠方案是图像后处理:scripts/remove_watermark.py自动定位右下角水印并处理。
- 修补 vs 裁切的分级策略:默认先用纹理修补(不改变构图),适用于天空/水面/山体/地面等纹理连续区域;当修补区域是人物、衣物、题跋文字附近时,粘贴色块会明显可见——逐张目检右下角,发现修补痕迹就改用整体裁切兜底remove_watermark.py --crop-mode。
- 无需单独调用:scripts/embed_images.py内嵌时默认自动去水印(检测 + 几何回退双保险)。已用 --crop-mode 裁切过(或确认无水印)的图片再内嵌必须加--no-dewm——否则会对干净图片二次修补、重新引入痕迹。仅在处理用户提供的、确认无水印的外部图片时也用--no-dewm关闭。
第 4 步:组装 HTML
- 读
references/style-themes.md,按诗词意境选择主题基调(月夜思乡→深青夜色、边塞苍凉→赭石大漠、田园闲适→豆青淡彩、宫廷咏史→暗金沉郁…),可微调。 - 复制
assets/template.html作为底稿,填入:
- 头部:朝代标签{{DYNASTY}}、吸睛大标题(悬念/反差/情绪钩子,不用"《作品名》+平淡描述"式)、副题{{SUBTITLE}}(放作品名与一句话点题)、作者行{{AUTHOR_LINE}};
- 故事正文按段落填入<p>,配图占位符{{IMG:1}}、{{IMG:2}}…;
- 尾注{{EPILOGUE}}(一句回扣意境的短句,如作品名句)。
- 核对项(易错):<figure>数量必须等于配图数量,每个{{IMG:n}}编号连续不跳号;embed_images.py 对缺失编号会报错退出(exit 3),但"写漏 figure"不会报错,需组装时自查。原诗区若为多句诗词,用模板中.poem的换行结构逐句排布。 - 运行内嵌脚本将占位符替换为 base64 数据(必须用托管 venv 的 Python,其内含 Pillow,去水印功能才可用;系统 Python 会警告"去水印不可用"并跳过去水印):
"C:/Users/jc/.workbuddy/binaries/python/envs/default/Scripts/python.exe" "<技能目录>/scripts/embed_images.py" <html文件> --in-place --images-dir <图片目录>
脚本会把 {{IMG:n}} 替换为对应 images/ 目录中第 n 张图(按文件名自然排序)的 data:image/...;base64 URI,并顺带校验 HTML 无外部引用。默认输出 <原名>.inlined.html 新文件;加 --in-place 则直接覆盖原文件(推荐,避免多出一个中间产物)。
第 5 步:交付前自检
- [ ] HTML 单文件打开,无任何 http(s) 外链资源(字体/图/脚本),无 CDN 依赖
- [ ] 所有图片为 base64 内嵌且正常显示(检查 data URI 完整未截断)
- [ ] 所有图片无任何水印(含右下角"AI生成 WORKBUDDY>",逐张目检右下角确认;修补残留的色块/模糊块同样视为未通过,需改用
--crop-mode裁切兜底后重新内嵌) - [ ] 史实核对:成稿中所有史实性断言(人物、事件、时间、地点、人物关系)与第 1 步考据结果一致;想象补白未触碰史实层(无改变历史结局、无虚构重大事件);核实不到的细节已模糊化
- [ ] 诗中名物无常识硬伤(官职、地名、器物、节令)
- [ ] 全诗原文完整出现在页面中,且在故事中有一次恰当融入
- [ ] 现代口语化通读检查:从头到尾朗读式通读——无病句、无错别字、无文言腔堆砌;每个场景转换处有过渡句,相邻段落衔接自然
- [ ] 每轮对话独占一个
<p> - [ ] 响应式达标:内容区 max-width 820px、字号 clamp 缩放(按 assets/template.html 的响应式规范),在约 375px 与 1440px 两档宽度下目检正常
- [ ] 移动端阅读体验:图片自适应宽度、原诗区不溢出换行正常
- [ ] 输出文件名与标题一致(用户定稿规则):
<标题>.html,仅替换文件系统非法字符(如/\:);标题本身符合吸睛要求 - [ ] 小号衬线文字无发虚(副题/原诗/尾注已用楷体族 + font-weight ≥600,见 assets/template.html)
- 完成后用 present_files 交付
资源清单
references/research-checklist.md— 考据清单:检索维度、事实断言分级、想象边界划定方法,第 1 步必读references/prose-quality.md— 语言质量细则:常见病句类型、段落衔接与场景过渡手法库、口语化文风要点,第 2 步动笔前与第 5 步自检时必读references/image-prompts.md— 配图提示词库:按诗词题材分类的画风、构图与意象复用规则,第 3 步必读references/style-themes.md— 按诗词意境分类的 HTML 主题配色与版式方案,第 4 步必读assets/template.html— 自包含 HTML 底稿(古风 CSS 变量驱动主题、响应式、原诗区、图片占位符)scripts/embed_images.py— 去水印(默认)+ 压缩 + 图片 base64 内嵌 + 外链自检脚本scripts/remove_watermark.py— 右下角"AI生成"水印去除(可独立使用;已被 embed_images.py 默认调用)