周报/日报自动生成器
适用场景
职场人需定期(周 / 双周 / 日)向上级或团队同步工作进展,但常陷入"没思路、流水账、领导不爱看"三连。本技能把零散事项改写成「动作 + 结果 + 数据」的汇报体,按内置结构产出可复制的 markdown,支持多语气切换。
核心能力
- 收集四类要点:本周完成 / 进行中 / 下周计划 / 卡点·需协调。
- 将口语化、碎片化的事项改写为汇报体(突出结果导向与可量化表述)。
- 按语气模板渲染:正式汇报 / 简洁清单 / OKR 式。
- 输出可直接粘贴到飞书 / 企微 / 邮件的 markdown,并给出"建议补充量化数据"的提示。
- 量化体检:自动扫描「完成 / 进行中」条目,逐条列出没有任何数字(数量、百分比、金额、倍数)的表述,作为发出前自查附录——上级看周报第一眼找的就是数字。
- 日期区间自动推算:未填
date_range时可按 日 / 周 / 双周 自动补算,省掉手动查日历。
输入规范
向用户收集(任一缺失则主动引导补充,不臆测):
- 周期:本周 / 上周 / 今日(默认本周)
- 完成事项:用户给的关键动作或成果(可口语)
- 进行中:尚未收尾的重点工作
- 下周计划:预期推进项
- 卡点 / 需协调:需要上级或跨团队支持的事项
- 语气:正式 / 简洁 / OKR(默认正式)
> 引导话术:「告诉我这周:①做完了啥 ②还在推进啥 ③下周打算做啥 ④有没有卡住要协调的。想要正式汇报风还是简洁清单风?我帮你写成可直接发的周报。」
处理流程
- 把用户提供的零散信息归类到上述四桶,并改写成"动作 + 结果 / 数据"句式。
- 调用
scripts/build_report.py渲染最终 markdown:
python scripts/build_report.py --input items.json --tone formal python scripts/build_report.py --input items.json --tone okr --output 周报.md cat items.json | python scripts/build_report.py --tone simple
items.json结构见references/report_templates.md,可直接运行的样例见examples/sample_input.json。 - 输出结构化周报(见下)。
参数说明
| 参数 | 取值 | 说明 |
|---|---|---|
--input |
文件路径 | 缺省时从 stdin 读取;文件编码支持 UTF-8 / UTF-8-BOM / GBK 自动识别 |
--tone |
formal / simple / okr |
三种语气真正改变渲染结果:正式(中文序号标题)/ 简洁(加粗小节,适合日报群同步)/ OKR(KR1~KR4 编号) |
--output |
文件路径 | 写入文件而非打印;父目录不存在会自动创建 |
--auto-range |
day / week / biweek |
meta.date_range 为空时自动推算:当天 / 本周一~周日 / 上上周一~本周日 |
--no-metric-check |
开关 | 关闭「量化体检」附录(默认开启) |
退出码:0 成功,2 输入非法(非 JSON / 顶层非对象 / 空输入),3 文件读写失败。
量化体检说明
体检块以 --- 与正文隔开,标题为「📊 量化体检(发出前自查,不计入正文)」,复制正文时不要带上这一段。它只做提醒,不会自动补数字——没有真实数据就写「暂无量化指标」,绝不编造。
输出格式
# 周报(2026-07-21 ~ 2026-07-27)|汇报人:__
## 一、本周完成
- 完成 XX 模块上线,覆盖 3 条核心链路,日均调用量 1.2w(↑20%)
- 推进 A 客户续约,合同金额 ¥__,已进入法务流程
## 二、进行中
- B 项目数据迁移(进度 60%,预计 8/1 完成)
## 三、下周计划
- 启动 C 需求评审;闭环 B 项目迁移
## 四、卡点·需协调
- 设计资源紧张,申请增援 0.5 人日(@__)
若某桶为空,明确标注"本周无卡点"等,不编造内容。
异常处理
- 缺少完成事项 → 用引导话术补齐;用户仅给碎片关键词也接受,由本技能补全表述。
- 语气参数非法 → argparse 直接报错并列出合法取值,不静默回退(避免用户以为切换成功)。
- 用户给的是原始会议记录 / 聊天记录 → 先提炼四桶再渲染。
- 四类要点全空 → 脚本在 stderr 提示「产出只有骨架」,仍输出模板供用户填写,不报错退出。
- 字段类型传错(
done传字符串而非数组、传字典、混入null/数字/嵌套对象)→ 自动规整为字符串列表;无法处理的类型在 stderr 告警后忽略,不中断渲染。 - 输入文件不存在或编码异常 → 退出码
3,并明确提示已尝试过哪些编码。
边缘用例对照表
| 情况 | 脚本行为 | 你该怎么办 |
|---|---|---|
| 同一件事重复粘贴两遍 | 忽略空格差异自动去重,只保留第一条 | 无需处理 |
| 单条超过 120 字 | 正常输出,stderr 提示「建议拆成两条」 | 拆成「动作」+「结果」两条更好读 |
条目带 - * • 前缀 |
自动剥掉,避免出现 - - xxx |
无需处理 |
| 条目内含换行 | 压平成单行,防止 markdown 列表断裂 | 无需处理 |
嵌套数组(如 [["A","B"]]) |
用 ; 拼成一条 |
建议改成平铺数组 |
meta 传成字符串 |
告警后按空 meta 处理,汇报人填 __ |
补上 {"reporter":"xxx"} |
| 全部四桶为空 | 输出完整骨架 + stderr 提示 | 当空白模板用,手动填 |
自检
python scripts/build_report.py --selftest
覆盖 14 条用例:空输入、类型错乱、去重、超长条目、三种语气渲染差异、三种日期区间推算、量化体检命中与放过。全通过退出码 0,任一失败退 1——改动脚本后先跑它。
常见问题
Q:量化体检那段会不会被我一起复制进周报?
A:它在 --- 分隔线之下,标题明确标了「不计入正文」。介意的话加 --no-metric-check 直接关掉。
Q:为什么它说我某条没数据,但我明明写了"大幅提升"?
A:"大幅""显著""明显"这类词在上级眼里等于没说。体检只认阿拉伯数字、百分号、金额和倍数。
Q:--auto-range week 算出来的是本周还是上周?
A:本周一到本周日。周五写本周周报直接用;周一补上周的,请手动填 meta.date_range。
适用限制与免责声明
- 本技能负责结构组织与表述改写,业务数据 / 成果须由用户确认真实,不替用户虚构业绩。
- 量化数字以用户提供的为准;若用户未给数据,仅给出"建议补充"提示,不臆造百分比。
- 产出为文本草稿,最终以用户所在团队模板为准微调后发送。