1实现原理 · 为什么它能做到
这个 skill 不是可执行程序,而是「一个目录 = 一个模板」:SKILL.md 的 frontmatter 供选择器展示,正文(body)就是发给模型的提示词;加模板=加目录,不需要改 TypeScript。
routes rescan disk and the client refetches `/api/templates`.
实际下发提示词 = 平台共享设计指令(SHARED_DESIGN_DIRECTIVES)+ 本 skill 的 SKILL.md 正文 + 用户内容,由 assemblePrompt 拼成一条 prompt。
Wrap a per-template instruction body with the shared design directives and
成稿不走文件系统:共享指令明令禁止 Write/Edit/Bash 等文件工具,要求模型把整份 HTML 直接作为回复正文流式输出(stdout 由前端捕获落盘)。
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
画布尺寸在 SKILL.md 交代为 aspect_hint「810×1080 ×9」,example.html 把它落成写死的 810×1080 竖版页并声明 3:4 比例。
.tpl-xhs-post .deck{width:810px;height:1080px;position:relative;background:transparent}
页数结构在提示词里给了下限与上限:封面 + N 个 content + 收尾 CTA,短内容 7 页起步,建议总数 ≤ 18(受平台单帖图片数约束)。
- Cover + N 个 content 页 + 收尾 CTA (N 由【用户内容】决定, 完整覆盖每个要点; 短内容 7 页起步, 长内容应更多, 受小红书平台单帖图片数约束建议总数 ≤ 18)
性格化元素是「虚线贴纸」:白底、2.5px 虚线描边、18px 圆角、-3deg 旋转加硬阴影,另有粉/黄/蓝/绿四色变体。
.tpl-xhs-post .sticker{position:absolute;padding:10px 18px;background:#fff;border:2.5px dashed var(--text-1);border-radius:18px;font-weight:800;font-size:18px;color:var(--text-1);transform:rotate(-3deg);box-shadow:4px 4px 0 var(--text-1)}
每页右上角有页码胶囊(1 / 9 形式),由 .page-dot 单独渲染,样例 9 页逐页编号。
.tpl-xhs-post .page-dot{position:absolute;top:40px;right:48px;background:var(--text-1);color:#fff;border-radius:999px;padding:6px 14px;font-family:'JetBrains Mono',monospace;font-size:14px;font-weight:700;z-index:2}
叙事骨架按内容营销套路铺好:封面钩子 → Hook(先别划走)→ Pain(痛点)→ Aha(真相)→ Step 1/2/3 → Result(结果)→ CTA(收藏+关注+话题标签)。
<h1 class="h1 tc mt-s" style="color:var(--accent)">收藏 + 关注 🧡</h1>
服务端 /api/convert 只做三件事:按 templateId 从磁盘读 skill、拼 prompt、spawn 本地 agent CLI 并 SSE 流转发输出。
prompt = assemblePrompt({ body: skill.body, content, format });
2核心能力
4风险提醒 风险提醒:绿色 · 放心使用
- 提示词与样例有表述偏差 — SKILL.md 说「底部页码 dots」,样例是右上角页码胶囊且无 dots 组件;二次生成时两个信号不一致,可能产出两种页码风格。
- 强文案依赖 — 钩子/痛点/CTA 页序默认内容本身就是营销文案;把技术文档塞进来会得到空洞的标题与 emoji。
- 固定画布对超长文案不友好 — 810×1080 写死,单页文案超量会溢出被裁(.slide overflow 受基础 CSS 控制),需人工回读成稿截图。
- 平台图数上限靠提示词自觉 — 「建议总数 ≤ 18」是文字约束,没有代码强制;内容极长时可能超发。
5第二遍独立确认
- [ok] 9 页 3:4 竖版 — .deck 810×1080,.slide aspect-ratio:3/4;样例共 9 个 slide,页码 1 / 9 至 9 / 9。
- [ok] 「虚线 sticker 卡片」 — .sticker 为 border:2.5px dashed + rotate(-3deg) + 硬阴影,样例每页 1 个、共 5 处不同颜色。
- [discrepancy] 「底部页码 dots」 — SKILL.md 写「底部页码 dots」,但 example.html 用右上角 .page-dot 页码胶囊(top:40px;right:48px),全文无 dots 组件;属提示词与样例的表述偏差,不影响功能。
- [ok] 「暖色 pastel 背景」 — 主题 token --bg:#fef7f3 / --bg-soft:#fff1ea / --surface-2:#fff5ef,为暖粉体系。
- [ok] 页数区间(7 起 / ≤18)与共享指令不冲突 — SKILL.md 明确「短内容 7 页起步, 长内容应更多…建议总数 ≤ 18」,是下限+平台约束,非页数上限;与 shared.ts「模板不定义数量」的口径一致。
- [ok] 无外部资源依赖 — 除字体 @import 外零 URL;图形全为 CSS/SVG,无图片外链。
6结论
dc2bf96c0374a3ec…553ed98c28