| name | report-generator-pro |
| description | 一句话完成日/周/月/季/年报全流程:上传文件或口述工作内容 → AI 抽取整理 → 生成结构化报告 → 导出 Word/Excel/PPT/PDF → HTML 美化邮件发送(内置 15+ 主流邮箱预设,自动识别 SMTP 配置, 支持授权码/应用密码引导)→ Markdown 归档。适用场景:个人日报周报、团队工作汇报、管理层月报季报年报、 项目进度报告。触发词:日报、周报、月报、季报、年报、工作报告、生成报告、发送报告、汇报、report、 工作总结、进度报告、帮我写报告、把报告发给领导。 |
智能报告生成助手 v3.1
新手30秒入门
这个 Skill 干什么? 一句话生成报告,一步发送邮件。
直接复制使用:
"帮我生成今天的日报:完成了用户模块,修复3个BUG,明天写测试"
"生成这周周报,从这份Excel里提取工作内容,用163发给我领导"
"把这份工作记录整理成月报PPT,发给张总zhang@company.com"
"帮我补写昨天的日报,昨天做了:..."
使用前准备(首次使用才需要):
- 告诉我你的姓名和部门(自动记住,以后不用再说)
- 如果要发邮件,告诉我邮箱地址(会引导你配置SMTP,约2分钟)
能力边界说明
✅ 擅长处理(开箱即用)
| 能力 | 示例 |
|---|
| 日报生成 | "生成今天的日报" → 口述或上传工作内容,自动输出结构化日报 |
| 周报生成 | "生成这周周报" → 汇总本周工作,带数据图表 |
| 月/季/年报 | "生成本月月报" → 长篇结构化报告,含趋势分析和总结 |
| 文件解析 | 上传 Word/Excel/PDF → 自动提取工作内容索引 |
| 多格式导出 | 一次生成 Word + Markdown(默认),可选 Excel/PPT/PDF |
| 邮件发送 | 163/QQ/Outlook/Gmail 等 18 种邮箱,自动识别 SMTP 配置 |
| 历史归档 | 所有报告按年月归档,随时查询"上月第三周的周报" |
| 多账户切换 | 同时配置工作邮箱和个人邮箱,根据语境自动选择 |
⚠️ 需要素材才能做
| 能力 | 需要的素材 |
|---|
| 生成特定格式报告 | 提供公司模板文件(存入 templates/custom/) |
| 发送给多人/群组 | 提供收件人列表(存入 recipients/xxx.md) |
| 含图表的 PPT 报告 | 提供原始数据表格(Excel/CSV),AI 自动生成图表 |
| 中英双语报告 | 提供英文翻译参考(部分专业术语需要确认) |
❌ 超出范围(附替代方案)
| 需求 | 替代方案 |
|---|
| 创作型文字(如广告文案、新闻稿) | 使用其他写作类 Skill 或直接对话 |
| 数据分析与挖掘(如求增长率、预测) | 单独用 Python 或 Pandas 计算后,把结论喂给本 Skill |
| 飞书/钉钉消息推送 | v3.1 仅支持邮件;v5.0 计划实现;当前可导出文件手动上传 |
| 在线协作文档直出 | 导出 Markdown 后复制到腾讯文档/Notion/语雀 |
| 修改已发出的邮件内容 | 邮件协议不支持撤回/修改,请先确认后再发送 |
| 接收并自动处理他人发来的工作汇报 | 本 Skill 只生成和发送,不处理收件 |
核心能力
- 全类型报告:日报 / 周报 / 月报 / 季报 / 年报,自动识别意图
- 多源输入:口述工作内容 / 上传文件(Word/Excel/PDF/TXT)/ 混合输入
- 多格式导出:Word(.docx)/ Excel(.xlsx)/ PPT(.pptx)/ PDF / Markdown
- 邮件发送:内置 18 种主流邮箱 SMTP 预设,自动识别配置,引导授权码
- 持久化归档:所有报告以 Markdown 存储,支持历史查询和二次编辑
安全与数据隐私
隐私保护原则
- 不存储明文密码:邮箱授权码/密码通过
cryptography.fernet 加密存储,KEY 文件单独存放于 config/.fernet_key
- 不泄露报告内容:所有生成的报告保存在本地
skill_data/ 目录,不自动上传到任何云端
- 发送前确认:发送邮件前总会展示收件人和报告摘要,用户确认后才实际发送
- 收件人级别控制:根据收件人类型(领导/团队/全员)自动调整报告详细度和保密级别
- 直属领导:完整版(含全部数据和分析)
- 团队成员:协作版(侧重协作事项和进度同步)
- 全员公告:公开版(去除敏感数据和内部评估术语)
安全注意事项
- ⚠️ 不要在工作内容中包含核心机密数据(如数据库密码、客户身份证号),这些内容会被写入报告
- ⚠️ 邮箱密码/授权码只在首次配置时输入一次,不要在对话正文中发送密码
- ⚠️ 使用第三方邮箱(Gmail/Outlook)发送时,邮件内容走对应服务商的 SMTP 协议传输
- ⚠️ 如果公司有 DLP(数据防泄漏)策略,请确认发送含工作内容的邮件是否符合合规要求
禁止行为
- 🚫 不在未获用户明确指令时主动发送邮件
- 🚫 不伪造发件人身份(From 地址必须与 SMTP 登录账号一致)
- 🚫 不向未验证的地址批量发送邮件(防止被标记为垃圾邮件)
- 🚫 不将用户报告内容用于训练或日志分析之外的任何用途
触发与意图识别
各功能精确触发条件
| 你想要什么 | 怎么触发 | AI 识别逻辑 |
|---|
| 生成日报 | 说"日报" / "今天的工作汇报" / "daily report" | 自动取今日日期,生成 300~500 字日报 |
| 生成周报 | 说"周报" / "本周总结" / "weekly report" | 自动取本周一周日,生成 500800 字周报 |
| 生成月报 | 说"月报" / "本月报告" / "monthly report" | 自动取本月1日月末,生成 8001500 字月报 |
| 生成季报 | 说"季报" / "Q2报告" / "quarterly report" | 自动取本季度范围,生成 1500~2500 字季报 |
| 生成年报 | 说"年报" / "年度总结" / "yearly report" | 自动取本年数据,生成 2000~3500 字年报 |
| 发送邮件 | 说"发给" / "发送给" / "用xx邮箱发" + 收件人 | 进入邮件发送流程,自动匹配 SMTP |
| 从文件生成 | 上传文件 + "帮我写报告" | 先调用 extract_content.py 解析,再生成 |
| 补写历史报告 | 说"补写昨天的日报" / "生成上周周报" | 日期自动调整到指定日期 |
| 配置邮箱 | 说"配置邮箱" / "设置发件邮箱" / "添加邮箱" | 进入 setup_email.py 交互式向导 |
意图识别规则
当用户一句话同时包含多个意图时,按以下优先级处理:
- 检测报告类型(日/周/月/季/年)
- 检测输出格式(Word/PPT/Excel/PDF 或默认 Word+Markdown)
- 检测发送意图(有收件人 → 邮件发送流程)
- 检测内容来源(文件上传 / 口述 / 两者兼有)
- 检测特殊操作(补写/配置/查询历史报告)
运行时行为约束
输出准确性规则
- 禁止在不确定领域胡编:如果工作内容不足,先给出一个"假设示例版本"(标注"以下为示例内容,请确认后替换"),并列出需要补充的具体信息
- 每个关键数据注明来源:如从文件抽取,标注"数据来源:工作记录.xlsx · Sheet: 本周任务"
- 区分事实和建议:工作内容是事实(如实呈现),下阶段计划是建议(标注为"拟定计划")
降级与兜底策略
当输入信息不足时,按以下策略降级处理,不挂起也不给空回复:
| 场景 | 降级方式 |
|---|
| 用户说"生成日报"但没给内容 | 回复"请告诉我今天的工作内容(可口述或上传文件),或者我为你生成一个空白模板你先填写?" |
| 文件解析失败 | 先报告"XX 文件解析失败(原因:文件加密/损坏),已跳过。报告基于其余内容生成,缺少的部分已标注",不中断流程 |
| 缺少邮箱配置 | 自动进入首次配置向导,同时展示当前生成好的报告预览(用户可先看报告,配置完邮箱后再发送) |
| 报告模板文件缺失 | 自动创建默认模板,告知用户"已自动生成默认模板:templates/xxx.md",不中断生成 |
| 多个功能并行请求 | 按"生成→展示→用户确认→发送"的顺序排队处理,每次只推进一个阶段 |
| 超出范围的能力请求 | 直接给出替代方案(参考"能力边界说明 → ❌超出范围"),不假装自己能做 |
| 网络问题导致发送失败 | 报告已生成并保存,展示本地路径,提示"邮件发送失败但报告已保存,可稍后重新发送或手动发送" |
错误提示规范
所有面向用户的错误提示必须满足:
- 不暴露技术细节:不说
ImportError: No module named docx,而说"生成 Word 需要安装依赖,正在自动安装中..."
- 格式为"缺少[具体项]+如何补充":不说"参数错误",而说"缺少收件人邮箱,请提供收件人地址,例如 zhang@company.com"
- 提供下一步操作:每条错误信息后紧跟一个明确的可执行操作
主工作流
阶段 0:初始化检查
检查 skill_data/report_generator/config/user_profile.md 是否存在
├─ 不存在 → 引导用户完成首次配置(姓名/部门/职位/常用收件人)
└─ 存在 → 读取用户档案,个性化报告
阶段 1:内容输入与抽取
输入来源处理:
| 来源 | 处理方式 |
|---|
| 口述文本 | 直接提取工作事项,按优先级归类 |
| .docx / .doc | 调用 scripts/extract_content.py 解析正文 |
| .xlsx / .csv | 调用 scripts/extract_content.py 读取表格数据 |
| .pdf | 调用 scripts/extract_content.py 提取文本 |
| .txt / .md | 直接读取 |
| 混合 | 合并所有来源,去重后归类 |
抽取结构(标准化输出):
extracted_content:
completed_tasks:
in_progress_tasks:
blocked_items:
key_metrics:
next_plans:
highlights:
阶段 2:报告生成
加载 references/report_templates.md 获取模板规范。
自动填充规则:
- 标题:
[用户姓名][部门] YYYY年MM月DD日 [报告类型]
- 周期标注:日报=当日,周报=本周一
周日,月报=本月1日月末
- 字数控制:日报 300-500 字,周报 500-800 字,月报 800-1500 字,季/年报 1500-3000 字
- 数据亮点:自动加粗关键数字和成果
- 问题标注:用 ⚠️ 标记障碍项
阶段 3:文件导出
根据用户指定格式或默认 Word+Markdown 双格式导出:
调用 scripts/generate_report.py
参数: report_type, content_dict, output_format, template_name, output_path
输出: 生成文件路径列表
存储路径:skill_data/report_generator/reports/YYYY/MM/{report_type}/YYYYMMDD_{report_type}.{ext}
阶段 4:邮件发送(含邮箱配置)
4.1 读取邮箱配置:
读取 config/email_settings.md
├─ 无配置 → 进入"首次配置向导"(见邮箱配置模块)
├─ 有单账户 → 直接使用
└─ 有多账户 → 根据语境选择("工作"→company,"个人"→personal)
4.2 SMTP 自动识别:
提取发件邮箱后缀 → 查询 references/smtp_presets.md
├─ 命中预设 → 自动填充 host/port/ssl/auth_type
├─ 腾讯/阿里/网易企业邮箱 → 询问具体服务商
└─ 未命中 → 进入自定义 SMTP 配置
4.3 发送流程:
调用 scripts/send_email.py
参数: from_account, to, cc, bcc, subject, report_path, html_template
返回: success/error + 日志写入 logs/email_send_log.md
4.4 失败重试:自动重试 3 次(2s → 4s → 8s 指数退避),仍失败则保留草稿并告知用户。
阶段 5:归档
将最终 Markdown 版报告追加写入 reports/YYYY/MM/{type}/index.md(月度汇总索引)。
邮箱配置模块
首次配置向导
1. 询问发件邮箱地址
2. 自动识别服务商 → 显示 SMTP 配置(host/port/ssl)
3. 根据 auth_type 给出授权码获取指引(见下表)
4. 测试发送(发至自身验证)
5. 保存至 config/email_settings.md
授权码获取指引
| 邮箱 | 步骤 |
|---|
| 163/126/yeah | 登录网页版 → 设置 → POP3/SMTP/IMAP → 开启 SMTP → 短信验证获取授权码 |
| QQ邮箱 | 登录网页版 → 设置 → 账户 → 开启 IMAP/SMTP → 安全验证生成授权码 |
| Foxmail | 同 QQ邮箱(使用 smtp.qq.com) |
| 腾讯企业邮箱 | 直接使用邮箱登录密码,无需授权码 |
| Outlook/Hotmail | 微软账户 → 安全 → 两步验证 → 应用密码(生成16位密码) |
| Gmail | Google账户 → 安全 → 两步验证 → 应用专用密码(16位,无空格) |
| iCloud | appleid.apple.com → 登录和安全 → 应用专用密码 → 生成密码 |
| 阿里云邮箱 | 邮箱网页版 → 设置 → 客户端授权密码 → 开启并生成 |
| 阿里企业邮箱 | 直接使用邮箱密码 |
| 新浪/搜狐/189/139 | 各自邮箱设置页面开启 SMTP 并生成授权码 |
多账户切换规则
| 用户语境 | 选择账户 |
|---|
| "发给领导"/"工作邮件"/"公司" | company_* 账户 |
| "个人"/"私人" | personal_* 账户 |
| "备用"/"另一个" | backup_* 账户 |
| 无特殊语境 | 使用 is_default: true 的账户 |
异常处理
| 异常情况 | 处理策略 |
|---|
| 邮箱后缀未匹配预设 | 提示用户选择"自定义SMTP",引导填写 host/port/ssl |
| 授权码错误(SMTP 535) | 提示"密码或授权码错误",显示重新获取授权码的步骤 |
| 网络超时/连接失败 | 重试3次,仍失败则:保存草稿、提示检查网络、询问是否稍后重试 |
| Gmail/iCloud 在国内无法连接 | 提示:"Gmail 在中国大陆需配置代理,可切换至其他邮箱发送" |
| 附件超过 20MB | 自动转为本地路径链接,邮件正文末尾添加手动下载说明 |
| 收件人地址格式错误 | 正则校验 ^[\w.+-]+@[\w-]+\.[\w.]+$,提示修正后重试 |
| SSL 证书错误 | 尝试降级至 STARTTLS,失败则提示用户手动配置 |
| 无工作内容输入 | 提示用户提供今日/本周工作内容,可口述或上传文件 |
| 文件格式不支持 | 列出支持格式(docx/xlsx/pdf/txt/md),提示转换方案 |
| 依赖库缺失 | 自动执行 pip install -r scripts/requirements.txt,展示安装进度 |
文件存储结构
skill_data/report_generator/
├── config/
│ ├── user_profile.md # 用户信息(姓名/部门/职位)
│ ├── email_settings.md # 多账户邮箱配置(加密密码)
│ └── skill_settings.md # 全局设置(默认报告类型/格式/语言)
├── templates/
│ ├── daily_default.md # 日报模板
│ ├── weekly_default.md # 周报模板
│ ├── monthly_default.md # 月报模板
│ ├── quarterly_default.md # 季报模板
│ ├── yearly_default.md # 年报模板
│ ├── email_html_default.html # HTML 邮件模板
│ └── custom/ # 用户自定义模板
├── recipients/
│ ├── leaders.md # 领导收件人列表
│ ├── team.md # 团队成员列表
│ └── all_company.md # 全公司发送列表
├── reports/
│ └── YYYY/MM/{type}/ # 按年/月/类型归档
├── logs/
│ ├── YYYY-MM-DD_actions.md # 操作日志
│ └── email_send_log.md # 邮件发送记录
└── outputs/
└── YYYY-MM-DD/ # 当日所有导出文件
交互示例
示例1 - 快速日报:
用户:"帮我生成今天的日报:完成了用户模块开发,修复了3个BUG,明天继续写测试用例"
→ AI 自动抽取 → 生成日报 Word 文件 → 询问是否发送
示例2 - 上传文件生成周报:
用户:上传工作记录.xlsx → "帮我生成本周周报并发给张总"
→ 解析文件 → 生成周报 → 读取收件人配置(张总) → 发送邮件
示例3 - 首次使用 Gmail:
用户:"用我的 Gmail 发送报告"
→ 识别 Gmail → 提示需要应用专用密码 → 给出 Google 账户设置链接和步骤 → 引导输入16位密码 → 测试发送 → 保存配置
示例4 - 多账户切换:
用户:"用工作邮箱发给部门群"
→ 自动选择 company_exmail 账户 → 查询 team.md 获取收件人 → 发送
调用脚本说明
所有脚本位于 scripts/ 目录,调用前确认 Python 依赖已安装(见 scripts/requirements.txt):
| 脚本 | 用途 | 关键参数 |
|---|
extract_content.py | 从文件抽取工作内容 | --file <路径> --type <docx/xlsx/pdf/txt> |
generate_report.py | 生成报告文件 | --type <日报/周报> --format <word/excel/ppt/pdf> --output <路径> |
send_email.py | 发送邮件 | --from <账户名> --to <收件人> --subject <主题> --attach <附件路径> |
setup_email.py | 邮箱配置向导 | 交互式引导,无需参数 |
FAQ
Q1:工作内容太少/太杂,AI 帮我总结得不好怎么办?
答:垃圾进垃圾出。提供工作内容时尽量包含"具体事项+量化数据+做了什么"。示例对比:
- ❌ "开发了功能"
- ✅ "完成了用户登录模块:实现了手机号+验证码登录,前端 React Hooks,后端 Node.js + Redis,测试覆盖率 90%"
如果实在没时间整理,直接说"先给我一个假设版本",AI 会填入示例内容并标注待确认。
Q2:我的公司有固定报告格式,可以适配吗?
答:把公司模板 Markdown 文件放入 templates/custom/ 目录。使用时说"用我的 XX 模板生成周报"。HTML 邮件模板也可自定义(templates/custom/email_日报.html)。
Q3:生成的文件打开乱码怎么办?
答:用 WPS 或 Office 2016+ 打开(UTF-8 编码)。Excel 用"数据 → 自文本/CSV → UTF-8"导入。纯文本用 VS Code 查看。
Q4:能用 QQ 邮箱发送给多人吗?
答:可以。说"发给张总和李经理",用逗号分隔。需要抄送/密送时说"抄送给xx"或"密送给xx"。QQ 邮箱的每日发信限额请参考 QQ 邮箱官方说明。
Q5:报告自动保存在哪里?能查看上周的报告吗?
答:保存在 skill_data/report_generator/reports/YYYY/MM/{type}/ 目录。说"查看上周的周报"或"打开上个月的月报汇总",AI 会定位并读取对应文件。
Q6:可以设置每天自动生成日报吗?
答:可以。说"帮我设置每天18:00自动生成日报并发给张总"。WorkBuddy 的自动化机制会在指定时间触发 Skill。
Q7:如果有多个项目并行,能按项目分别生成报告吗?
答:可以。说"按项目分组生成日报"或"单独生成项目A的进度报告"。AI 会从工作内容中识别项目标签并分组输出。
Q8:手机收邮件排版会很乱吗?
答:不会。HTML 邮件模板采用响应式设计,在手机邮件客户端(QQ邮箱APP / 网易邮箱大师 / Gmail APP)上均会自适应缩放到合适的阅读尺寸。
更多 FAQ(工具兼容、定制化、故障排查)见 references/faq-deep.md
受众说明
| 用户类型 | 如何使用 |
|---|
| 个人上班族 | 直接说"生成日报",口述工作内容即可。默认 Word+Markdown 双格式输出 |
| 团队 Leader | 使用周报/月报功能汇总团队进展,设置定时发送给上级 |
| 项目经理 | 上传多份工作日志 Excel,批量解析生成汇总报告 |
| 自由职业者 | 配置个人邮箱和签名档,用专业格式向客户汇报进度 |
| HR/行政 | 生成部门级别周报/月报,汇总考勤、报销、招聘等数据 |
定制化使用指南
| 定制需求 | 操作方式 |
|---|
| 修改默认输出格式 | 在 config/skill_settings.md 中修改 default_format: word |
| 自定义报告署名 | 在 config/user_profile.md 中填写 signature 字段 |
| 添加公司 Logo | 将 logo 图片放入 assets/,在模板中引用 |
| 调整字数阈值 | 在 config/skill_settings.md 中修改 word_count.* 字段 |
| 常用收件人 | 在 recipients/leaders.md 或 team.md 中维护人员列表 |
| 固定发送时间 | 通过 WorkBuddy 自动化(automation)设置定时任务 |
参考资料
references/smtp_presets.md:所有 18 种支持邮箱的 SMTP 完整配置
references/report_templates.md:日/周/月/季/年报的 Markdown 模板规范
references/email_html_template.md:HTML 邮件美化模板说明与 Jinja2 变量表
references/anti-patterns.md:7 种常见错误用法 + 改进对比案例 + 禁忌清单
references/faq-deep.md:18 道深度 FAQ(垂直领域/工具兼容/定制化/安全/故障排查)
scripts/requirements.txt:Python 依赖清单(含可选依赖标注)
assets/email_html_default.html:响应式 HTML 邮件默认模板