学校小评比活动推文生成(school-activity-push)
> 干的事:把一次学校作品类小评比(板报、手抄报、征文、摄影、书法、绘画/海报等),变成可直接发美篇 / 简篇 / 公众号的逐字稿,并顺手产出 Markdown + HTML 预览 + Word 审核版 三件套。
> 一句话原则:先套固定话术,再填本次活动信息;名单与作品展示必须交错。
能力边界
- ✅ 做什么:手抄报、板报、征文、摄影、书法、绘画/海报等作品类小评比的推文。
- ✅ 产什么:逐字稿正文 + 配图占位 + 表彰名单排版 + 落款;以及 Markdown / HTML / Word 三件套。
- ❌ 不做什么:不写运动会、表彰大会、安全演练、开学典礼、毕业典礼等非作品类活动;不编造获奖名单、领导姓名;不擅自改动用户给出的真实信息。
输入要求
开工前向用户确认(缺什么问什么,不要猜):
- 活动类型与主题(如:书香校园手抄报评比 / 绿色环保征文评比)
- 时间、年级/部门、主办对象
- 获奖名单:班级+姓名+作品名,原始格式即可,脚本会规范化
- 配图(可选):用户给图就用,没给则留
[图N:说明(此处待放图)]占位 - 落款信息:编辑 / 评委 / 监审 姓名(原文固定三行),校徽图路径(可选)
- 隐私要求:是否只写班级不写姓名,是否隐去全名
分析优先原则
模板是起点不是枷锁。动手前先判断:
- 活动类型:手抄报 / 板报 / 征文 / 摄影 / 书法 / 绘画/海报。
- 主题氛围:书香暖 / 环保绿 / 活力橙 / 校园日常等,决定 Banner 和情感词。
- 名单形式:个人署名、班级署名、是否带作品名。
- 展示主体:作品本身就是图(手抄报/摄影/书画),还是文字类需转视觉(征文)。
然后到 references/fixed-phrases.md 选对应固定句式,填入本次活动信息。
工作流
确认活动类型 → 追问/确认信息 → 选固定话术 → 规范化名单 → 生成 article_spec.json → 渲染三件套 → 自检 → 交付
Step 1 确认类型与主题
按关键词匹配六类小评比之一,读取 references/templates-guide.md 查看该类展示主体、图注、媒体词差异。
Step 2 确认关键信息
按「输入要求」逐项核对;名单必须逐条与用户原数据核对,不可臆造。
Step 3 调用固定话术
读取 references/fixed-phrases.md,按本次活动替换占位符:
- 导语:时令句 + 目的句 + 活动宣告句 + 参与句
- 过程:总起句 + 2–3 个「有的……」排比
- 评选标准(必加,放在「认真评选」之前):1–2 句评价维度 + 公平原则
- 名单公布:「经过评委老师认真评选,现将获奖名单公布如下:」
- 结尾:升华三段递进(意象式 → 总结式 → 理念式)+ 两行对仗祝福块
- 落款(按原文格式):学校全称居中 → 日期居中 → 校徽大图居中 → 编辑 / 评委 / 监审 三行
Step 4 规范化名单
把用户给的原始名单交给脚本:
python3 <SKILL_DIR>/scripts/normalize_awards.py -t "原始名单文本" --out awards.json --md --md-out awards.md
脚本会把 七1班 张三《作品》 规范成结构化 JSON(七(1)班、分等级、带作品名)。
Step 5 生成 article_spec.json
由你(AI)综合信息写出 article_spec.json(字段见 scripts/render_article.py 文件头注释)。这份 JSON 是三件套的单一数据源。
必须采用交错结构:awards.levels 每个等级内带 works(本级展示图),awards.interleave 默认 true。
三处固定位置必填:criteria(评选标准句,置于 awards_intro 之前)、notice_image(活动通知截图/通知块,置于导语之后、过程之前)、meta.logo(校徽,置文末学校名+日期之后,可留空出占位)。
文末结尾四件套(对照原文案例):elevate(三段递进)→ blessing(两行对仗祝福)→ 学校全称+日期 → meta.logo 校徽大图 → 落款三行(meta.editor / meta.judges / meta.supervisor)。
Step 6 渲染三件套
# Markdown 逐字稿 + HTML 预览
python3 <SKILL_DIR>/scripts/render_article.py \
--spec article_spec.json --out-dir ./out --name 2024-10-08-书香校园手抄报
# Word 审核版
python3 <SKILL_DIR>/scripts/export_docx.py \
--spec article_spec.json --out ./out/2024-10-08-书香校园手抄报-审核版.docx
<SKILL_DIR> 为本 skill 目录。若运行环境无该变量,用绝对路径替换。
Step 7 自检与交付
逐条过 references/checklist.md:结构完整、名单准确、配图占位齐全、落款学校全称正确。全部通过后用 present_files 展示三个文件。
名单处理规则
- 用
normalize_awards.py规范化,班级统一七(1)班写法,分等级列出。 - 小评比默认「奖项 + 作品展示」交错呈现:每个等级先列名单,再跟本级
works展示图。 - 名单是最高优先级信息:逐条与用户原数据核对,漏人、错字、班级混淆均属严重事故。
- 未提供图则用占位标记,不删;隐私按用户要求处理。
配图与版式规则
- 占位语法:
[图N:说明文字],说明含班级/姓名/作品名(详见references/layout-guide.md)。 - 各类型配图数量见
references/templates-guide.md:手抄报/书画 3–5 张作品图,板报每班 1 张全景,征文 2–3 张手稿/金句场景,摄影直接展示原图。 - 校徽位置(按原文案例):文末的一张居中大图,位于学校全称与日期之后、落款之前;顶部 Banner 用节日/主题元素,不放校徽。
- 通知截图位置:【导语】之后、【过程描写】之前(学校微信群通知的手机截图),图注固定「活动通知」。
- 落款固定(按原文格式):学校全称居中一行 → 日期居中一行 → 校徽大图 →
编辑 / 评委 / 监审三行(无「审核/摄影/来源」字样,学校全称已单独成行)。 - HTML 预览样式见
templates/html_preview.css,主色中国红#C41E3A。
风格铁律(学校官方口吻)
- 人称统一「我校」「同学们」「全体师生」,杜绝「咱们学校」「贵校」「该学校」。
- 标题每次给 3 备选 + 1 副标题(对仗/动宾/主题式)。
- 禁止:流水账、空喊口号、过度抒情、网感用语、事实扭曲。
- 表彰措辞用「荣获/斩获/喜获佳绩/脱颖而出」,忌夸张。
- 完整规范见
references/tone-guide.md。
交付物与命名
在工作区产出:
<output-dir>/
├── <日期>-<活动主题>-逐字稿.md
├── <日期>-<活动主题>-预览.html
└── <日期>-<活动主题>-审核版.docx
命名例:2024-10-08-书香校园手抄报-逐字稿.md。
资源(Resources)
核心文献(人读)
- WRITING-METHOD.md —— 小评比推文书写方法:七段结构、固定话术用法、六类差异、标题拟法、常见错误(先看)
references/
- fixed-phrases.md —— 固定话术库:导语、过程、名单公布、展示、结尾、落款的模板句式(写正文时必读)
- templates-guide.md —— 六类小评比模板差异、通用骨架、标题/字数/顶部氛围规则
- tone-guide.md —— 官方口吻、措辞、禁止事项、隐私规范
- layout-guide.md —— 配图占位语法、数量、落款、HTML 样式规格、Word 版式
- checklist.md —— 交付前自检清单(Step 7 必过)
scripts/
- normalize_awards.py —— 名单规范化:原始文本 → 结构化 JSON + Markdown
- render_article.py —— 读 article_spec.json → 生成 Markdown + HTML(套 html_preview.css)
- export_docx.py —— 读同一 JSON → 生成 Word 版(纯标准库,无需 pip)
templates/
- article_template.md —— 小评比逐字稿骨架(填充占位)
- html_preview.css —— HTML 预览样式