滑雪服务宣传海报生成器
把「我要宣传我的滑雪陪玩/教学服务」变成三张成品海报。
何时使用
用户想给自己的滑雪相关个人服务做宣传物料:朋友圈海报、小红书长图、雪场现场立牌、闲鱼/闲鱼服务页配图。触发词包括:滑雪海报、滑雪陪玩、滑雪教练、雪场教学宣传、滑雪服务介绍长图。
核心工作流
第一步:确认素材齐不齐
技能需要五类信息。先检查用户是否已提供,没提供的集中问一次(用 AskUserQuestion 或直接列出清单),不要反复追问。
| 类别 | 必需 | 说明 |
|---|---|---|
| 照片 | 至少 1 张 | 主视觉:本人滑雪/雪场照。竖图(1080×1620 一类)最适配夜蓝海报版;横图适配杂志版 |
| 服务清单 | 必需 | 陪滑、简单指导、陪吃饭、简单肌肉按摩、拍照记录等,每项一句话说明 |
| 个人介绍 | 必需 | 年龄/星座/身高/籍贯/现居/学历/滑雪水平/兴趣爱好 |
| 价格 | 必需 | 各档位价格 + 一句定价说明(如"按服务组合调整,私聊") |
| 联系方式 | 必需 | 微信号、电话、预约说明 |
照片路径:填绝对路径最稳。若图片不在 profile.json 所在目录下,渲染时要加 --allow-dir 指定可读目录(安全限制,防止误读系统敏感文件)。
第二步:写配置文件
复制 assets/profile.example.json 到工作目录改名 profile.json,按用户实际信息填写。字段说明见 references/profile-schema.md。
第三步:渲染
python <技能目录>/scripts/render.py --profile profile.json --out ./outputs
参数:
- --styles night,journal,magazine 可只渲其中一两种
- --scale 2 默认 2 倍图(输出宽 2160),--scale 1 出小图
- --allow-dir <目录> 允许读取图片的额外目录(图片不在 profile 同目录时必加),可多次指定
- --templates 指定自定义模板目录
输出三张 PNG:
- 滑雪陪玩-夜蓝海报.png — 深雪夜蓝,冷调有质感,适合朋友圈首图
- 滑雪陪玩-手账长笔记.png — 纸感长图,像手写笔记,适合小红书
- 滑雪陪玩-运动杂志.png — 黑白+雪橙,编号列表,适合雪场分发
脚本会自动实测内容高度再按需给足渲染窗口,内容不会被截断;渲完自动裁掉底部空白并补留白。同时在 --out/_html/ 留下 HTML 母版,需要微调时改 HTML 重渲即可。
若 Python 缺少 Pillow,自动裁底会跳过(不影响出图,但底部会留多余空白);需要精确裁底时 pip install Pillow。
第四步:交付
用 present_files 把三张 PNG 一起呈现,PNG 在前。
可编辑设计稿(可选)
用户如果明确说"要能改的设计稿",额外产出一份 Ardot 画布:
create_design新建文件(每个风格一个 Frame)- 参考
references/ardot-spec.md里的节点规格和配色表,用batch_edit搭出同样的版式 - 图片用
register_assets+upload_images填入节点 export_nodes(format:"png", scale:2)导出
HTML 模板渲染更快更稳,可编辑稿只作为附加交付。
改风格 / 加风格
模板在 assets/templates/,纯 HTML + CSS,逻辑画布宽 1080px,输出 2 倍图。三套模板共用 {{占位符}} 机制:
- 固定占位符:
{{TITLE}}{{EYEBROW}}{{TAGLINE}}{{NICKNAME}}{{IDENTITY}}{{ORIGIN}}{{BASE}}{{EDUCATION}}{{SKI}}{{HOBBIES}}{{EXTRA}}{{PRICES}}{{PRICE_NOTE}}{{WECHAT}}{{PHONE}}{{CONTACT_NOTE}}{{FOOTER}} - 列表占位符:
{{SERVICES}}{{PRICES}}(由 render.py 按风格渲染成不同结构) - 图片占位符:
{{IMG_MAIN}}{{HERO_STRIP}}{{GALLERY_STRIP}}{{IMG_GALLERY}}(按风格选用其一) - 字体占位符:
{{FONT_YH}}{{FONT_YHB}}{{FONT_KAI}}(由脚本按本机实际字体文件注入,勿手改)
新增风格时:在 scripts/render.py 的 STYLE_FILES 和 build_html() 的分支里登记,并在 min_h/pad 字典里补上最小高度与底部留白。渲染高度不需要手动指定——脚本会自动实测内容高度。
硬性约束
- 字体只能用系统静态字体(雅黑
msyh.ttc/msyhbd.ttc、楷体simkai.ttf)。不要用 NotoSansSC-VF.ttf 这类可变字体,Edge 渲染会发虚。脚本已按此顺序自动选择。 - 字号不得小于 24px(逻辑像素),保证手机端可读。
- 长文案要拆短:单项说明控制在 15 字以内,超了会自动整行占位。
- 不要编造价格和联系方式。缺失就留占位并明确告知用户需要补——脚本会主动列出待补项。
- 用户提供的所有文本都会经 HTML 转义后注入,不要试图用 HTML 标签做富文本。
常见坑
- Edge 截图不稳定时脚本会自动重试 4 次;超时会被捕获后继续重试,不会崩栈。
- 图片路径含中文或空格时用正斜杠绝对路径,脚本内部会转 data URI 内联,不受路径影响。
- 相对图片路径以
profile.json所在目录为基准,与当前工作目录无关。 - 图片读取受目录白名单限制:默认只读
profile.json同目录,跨目录需--allow-dir授权。 - 底图若是竖图(1080×1620),夜蓝版
object-position:center 18%才能露出头,别改成 center。 - 浏览器 profile 建在系统临时目录,渲染结束自动清理,不会污染输出目录。