将用户提供的MD文章内容,排版为多张3:4比例(1080×1440)的精美HTML页面,截图为PNG,压缩为≤1000字文字稿,文件夹交付。不做原创写作,不做视频,不做纯文字排版。
本技能的数据流边界:
本地处理(默认):MD文本→HTML组装→PNG截图→本地文件夹交付。所有文章内容、图片素材、生成产物默认仅在本地处理,不上传任何外部服务
可选外部能力(需用户明确同意):
外部网络依赖:v7.6 已移除 Google Fonts CDN 引用,模板使用系统字体回退栈(Noto Serif SC / Source Han Serif SC / Songti SC / PingFang SC / Consolas 等),完全本地渲染,无外部字体加载
用户警告:
权限声明(v7.7 完整披露所有行为):
能力类别是否使用说明网络访问✅核心行为:启动本地 127.0.0.1 HTTP server 加载预存 HTML 模板供 Puppeteer 截图(不出局域网)。 可选外部访问(每项需用户独立同意):Pexels/Pixabay/Unsplash 图库 API 搜索;trae-api-cn AI 生图 API(仅限 TRAE 内部环境);飞书云盘上传文件读写✅读 MD 文章 + 预存 HTML 模板(assets/template-*.html);写 output/ 目录 PNG+txt;写 $env:TEMP 交付文件夹;可选下载外部图片到 assets/ 目录(受 ALLOWED_HOSTS 白名单限制)环境变量✅PEXELS_API_KEY、 PIXABAY_API_KEY(图库搜索,可选); CHROME_PATH(可选,浏览器路径)subprocess✅python -m http.server --bind 127.0.0.1(本地回环 HTTP server,截图用); node assets/screenshot.js(Puppeteer 截图); node assets/validate.js(自动验证); curl.exe(可选,下载外部图片); explorer.exe(打开交付文件夹)外部 API✅Pexels/Pixabay/Unsplash 图片搜索 API(可选,发送搜索关键词);trae-api-cn.mchost.guru AI 生图 API(可选,发送 prompt,仅限 TRAE 内部环境);飞书 lark-cli drive API(可选云盘同步,上传 PNG+txt)
⚠️ 核心行为说明:本技能的核心能力是 本地 HTML 模板填充 + Puppeteer 截图渲染,不是 MD→HTML 编译管道。MD 内容由 AI 读取后填入预存的 HTML 模板(assets/template-editorial-card.html 或 template-swiss-card.html),然后启动本地 HTTP server 加载该 HTML 供 Puppeteer 截图为 PNG。核心流程不涉及外部网络访问。
text
<桌面>/<slug>公众号素材/
├── p1-cover.png
├── p2-xxx.png
├── ...
├── pN-finale.png
└── <slug>-文字稿.txt # ≤1000字压缩文字
核心原则:用户给MD,直接出本地文件夹。Step 1-2在脑内完成(不输出长文规划),Step 3-5连续执行不等待用户确认。
外部能力同意门控(2道,仅在触发外部网络/云盘时询问,本地渲染不询问。每道门控独立询问,不批量授权):
⚠️ 同意门控铁律:每道门控必须独立询问,不得因用户说"按流程走一遍"、"全流程"、"都行"等模糊措辞而批量授权多个外部能力。用户必须对每个外部能力单独明确同意("是"或具体指定)。
从MD内容自动推断:
内容品类: 读 references/category-cookbook.md 路由。13个品类:商业/科技分析、职场/干货、旅行/生活方式、教程/工具、影视/读书、游戏、美食、彩妆、穿搭、家居、健身、情感、推荐。超出范围的品类(梦核/氛围感装饰风、Y2K/千禧辣妹、纯摄影展示)必须在设计前明确告知用户
目标平台: 默认小红书3:4(除非用户指定公众号)
用户图片: (a)用户指定截图文件夹路径;(b)解析MD中  和 [🖼️配图建议:xxx] 标记
图片三选一门控(仅在用户无图时触发,一次性提问不反复追问): text
这篇我需要 1-2 张图。三种走法:
A. 你自己有照片/截图,传给我(推荐——最不"AI感",完全本地处理)
B. 我去 Pexels/Pixabay 帮你找(⚠️ 会将搜索词发送到外部API,但不上传文章原文)
C. 用 AI 生成(⚠️ 会将生图prompt发送到trae-api-cn.mchost.guru生图API,prompt可能含文章主题/场景描述,仅限TRAE内部环境)
推荐 A。用户必须明确选择 A/B/C 之一(如"用B"、"搜图"、"AI生成");若用户说"都行"/"你看着办"等模糊回答,默认走 A(完全本地,无外部数据流),不再追问
仅在品类无法推断时才问用户,否则直接进入Step 2
读 references/content-planning.md,完成:
references/portrait-fill.md 的"Three-Layer Rhythm System"assets/template-editorial-card.html;Swiss→ assets/template-swiss-card.htmldata-theme 或 data-accent 属性切换主题<!-- POSTERS_HERE --> 处添加页面字号速查表(必须严格遵循,不得自行调整):
RoleClassSizeWeightFamily用途Display.h-display136px500serif-zh封面/封底主标题Section title.h-xl110px500serif-zh内容页主标题(必须统一)Mid title.h-md60px500serif-zh次级标题/数据页标题Subtitle.h-sub46px400 italicserif-en英文副标题Pull quote.pullquote80px500 italicserif-zh引言页大字引语Lead.lead34px400serif-zh导语/段落首句Body.body32px400serif-zh正文段落Kicker.kicker26px500mono页面顶部标签Meta.meta24px500mono页面底部注释Label.label24px500mono数据标签Stat number.stat-nb72px500serif-zh大数字Step title.step-title34px500serif-zh流程步骤标题Step desc.step-desc28px400serif-zh流程步骤描述Ledger title.ledger-title30px500serif-zh表格行标题辅助文字—22px500monostat-label/stat-unit/ledger-note/step-nb/callout-src/issue-strip
字号铁律:
.h-xl 110px——不得混用 .h-md,标题太长拆行而非降级.h-display 136px——比内容页大24%,形成"书挡"层级#ffffff + text-shadow——禁止 #ece2cf(与暖调背景太接近)节奏速查表(必须严格遵循):
规则要求违反后果暗色页数量5页+至少1页Midnight Ink,7页+至少1-2页全light=单调暗色页位置引言页或结尾页最佳中间也行,但不可相邻暗色页相邻禁止!2个暗色页必须隔至少1个light页相邻=对比抵消氛围强度封面/引言/封底=strong,数据/清单=subtle,正文=medium全同一强度=死板版式重复禁止连续2页用同一种版式骨架密集ledger后接宽松essay首尾图框5页+封面和封底都必须有图片背景无图=缺"书挡"连续同色连续3页相同主题色=P0错误第3页必须插入暗色/氛围变化
密度速查表(必须严格遵循):
规则要求活跃构图≥78%画布高度(≈1123px of 1440px)4横带密度1440px切4段(360px),每段有内容或主动留白理由纯空白带>216px必须有设计理由(如atmospheric hero页)最少元素每页至少3种内容元素(标题+正文+数据/图/引言)表格行高不足45%画布时加左侧大数字列或转M08 Tall Ledger重复模式避免"标题+lead+3行"重复超过2次
图片规则速查(必须严格遵循):
规则要求图片下载必须下载到本地 assets/,禁止引用外部URL唯一性验证下载后用 buf1.equals(buf2) 验证,相同则换源跨项目去重下载后手动用 buf1.equals(buf2) 验证图片内容不同(文件级校验,不依赖跨项目 registry)满铺图页选图→无遮罩构图→局部色调遮罩→缩略图检查满铺图标题色必须 #ffffff + text-shadow,禁止 #ece2cf主体感知裁切根据 object-position 确保主体完整可见截图展示用 .frame-shot 包壳,给45-65%页面高度图源优先级用户图>Pexels/Pixabay(API)>Unsplash(直链)>AI生成accent面积Swiss≤30%,Lemon Green≤20%
封面/封底图片下载:
curl.exe -L -o "assets/cover.jpg" "URL" 手动下载(URL 来自 Pexels/Pixabay API 返回)https://images.unsplash.com/photo-{id}?w=1080&h=1440&fit=crop&auto=format&q=85满铺图页必须遵循 references/image-overlay.md:选图→无遮罩构图→局部色调遮罩→缩略图检查
密度保障:每页活跃构图≥78%画布高度,读 references/portrait-fill.md
节奏保障:暗色页插入、氛围强弱交替、版式不重复
背景系统:Editorial 必须使用三层背景(paper→wash→grain),禁止纯平背景。读 references/background-systems.md。氛围强度按页面角色分级:封面/引言/封底用 strong,数据/清单用 subtle
图片必须下载到本地(关键!Puppeteer headless无法可靠加载外部API图片):
curl.exe -L -o "assets/cover.jpg" "URL" 手动下载src="assets/cover.jpg"图片下载后必须验证唯一性:
buf1.equals(buf2) 验证图片文件内容不同图源优先级: 用户图 > Pexels/Pixabay(API搜索) > Unsplash(直链) > AI生成(trae-api-cn.mchost.guru text_to_image,仅限TRAE内部环境)
截图用 .frame-shot 包壳
截图前自动检查,不通过则自动修复:
密度检查:每页活跃构图≥78% | 每页≥3种内容元素 | 纯空白带>216px需理由
图片检查:封面1秒说清主题 | 文字未压主体 | 无broken image | 多张背景图文件内容不同(buf1.equals(buf2)===false) 标题一致性检查:所有内容页主标题使用同一字号class | 不得混用.h-xl和.h-md | 封面允许更大字号
节奏检查:5页+至少1暗色页 | 暗色页不相邻 | 氛围强弱交替 | 版式不重复
风格检查(读 references/style-system.md):
自动验证(读 assets/validate.js):
node assets/validate.js <项目目录> 执行 12 项自动检查用 assets/screenshot.js 截图(自动检测页面ID,无需手动配置)
python -m http.server 8090 --bind 127.0.0.1(绑定本地回环,不暴露局域网),然后 node assets/screenshot.js <项目目录>$env:LOCALAPPDATA\ms-playwright\chromium-*\chrome.exe截图大小异常检测(关键!文件过小说明图片未渲染):
文字压缩:保留原话引言+场景描述+核心数据,≤1000字
交付方式:本地文件夹(默认)+ 飞书云盘同步(可选,需用户同意)
A. 本地文件夹(默认)
⚠️ 本地文件写入提示:将在
$env:TEMP创建<slug>公众号素材/文件夹并写入 PNG+txt 文件。截图完成后告知用户交付路径,再继续后续步骤。
已生成 N 张 PNG + 文字稿,将保存到 $env:TEMP/<slug>公众号素材/$env:TEMP 创建 <slug>公众号素材/ 文件夹explorer.exe 打开文件夹,用户可拖到桌面B. 飞书云盘同步(可选,需用户明确同意——见下方门控)
⚠️ 数据外发提示:上传会将文章相关PNG和文字稿传输到飞书云服务器,离开本地环境。如果文章包含未发布/敏感/专有内容,请勿启用。需要用户已登录lark-cli。
飞书同步同意门控(仅在本地交付完成后触发一次): text
本地文件夹已交付。是否需要同步到飞书云盘?
- 是 → 执行下方上传步骤
- 否 → 结束(本地文件夹已是完整交付物)
用户同意后执行:
lark-cli drive +create-folder 创建 <slug>公众号素材 文件夹lark-cli drive +upload --file <filename> --folder-token <token> 逐个上传PNG+txt.h-xl 110px,Swiss 用 .h-xl 128px).h-display(Editorial 136px)或 .h-hero/ .h-statement(Swiss).h-md.h-xl 和 .h-md文件用途references/style-system.md风格系统:Editorial vs Swiss视觉锚点+身份测试+反模式references/category-cookbook.md品类路由表:13个品类的风格/主题/版式/图源映射references/content-planning.md内容规划:压缩阶梯+页面角色+钩子模式+页数指导references/portrait-fill.md3:4密度规则:垂直分区+密度铁律+稀疏页修复references/image-overlay.md文字压图:选图→无遮罩→局部色调→缩略图检查+主体避让references/theme-presets.md10套主题色CSS变量references/components.md字体/字号/间距/图片容器/卡片/截图容器规范references/layout-recipes.md28种布局模板(M01-M16+S01-S12)references/screenshot-treatment.md截图美化:设备外壳+背景材质+风格默认references/background-systems.md背景系统:三层架构(paper→wash→grain)+ 氛围强度分级 + 满铺图页 + Swiss极简references/image-sources.mdPexels/Unsplash图库接入 + AI生图验证规则
输入: SpaceX上市分析MD → 自动推断:商业/科技分析 → Editorial × Indigo Porcelain
输出: 7张PNG + spacex-文字稿.txt → SpaceX公众号素材/ 文件夹
输入: skill-forge教程MD+截图文件夹 → 自动推断:教程/工具 → Swiss × IKB Blue
输出: 6张PNG + skillforge-文字稿.txt → skillforge公众号素材/ 文件夹