一句话完成日/周/月/季/年报全流程:上传文件或口述工作内容 → AI 抽取整理 → 生成结构化报告 → 导出 Word/Excel/PPT/PDF
Scanned 9/12/2026
Install to Claude Code
npx -y skills add whyzsm/tiny-agents --skill report-generator-pro --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Report Generator Pro?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/whyzsm-report-generator-pro)More formats (shields.io, HTML) on the badges page.
---
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"
"帮我补写昨天的日报,昨天做了:..."
```
**使用前准备**(首次使用才需要):
1. 告诉我你的姓名和部门(自动记住,以后不用再说)
2. 如果要发邮件,告诉我邮箱地址(会引导你配置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 存储,支持历史查询和二次编辑
---
## 安全与数据隐私
### 隐私保护原则
1. **不存储明文密码**:邮箱授权码/密码通过 `cryptography.fernet` 加密存储,KEY 文件单独存放于 `config/.fernet_key`
2. **不泄露报告内容**:所有生成的报告保存在本地 `skill_data/` 目录,不自动上传到任何云端
3. **发送前确认**:发送邮件前总会展示收件人和报告摘要,用户确认后才实际发送
4. **收件人级别控制**:根据收件人类型(领导/团队/全员)自动调整报告详细度和保密级别
- **直属领导**:完整版(含全部数据和分析)
- **团队成员**:协作版(侧重协作事项和进度同步)
- **全员公告**:公开版(去除敏感数据和内部评估术语)
### 安全注意事项
- ⚠️ 不要在工作内容中包含核心机密数据(如数据库密码、客户身份证号),这些内容会被写入报告
- ⚠️ 邮箱密码/授权码只在首次配置时输入一次,不要在对话正文中发送密码
- ⚠️ 使用第三方邮箱(Gmail/Outlook)发送时,邮件内容走对应服务商的 SMTP 协议传输
- ⚠️ 如果公司有 DLP(数据防泄漏)策略,请确认发送含工作内容的邮件是否符合合规要求
### 禁止行为
- 🚫 不在未获用户明确指令时主动发送邮件
- 🚫 不伪造发件人身份(From 地址必须与 SMTP 登录账号一致)
- 🚫 不向未验证的地址批量发送邮件(防止被标记为垃圾邮件)
- 🚫 不将用户报告内容用于训练或日志分析之外的任何用途
---
## 触发与意图识别
### 各功能精确触发条件
| 你想要什么 | 怎么触发 | AI 识别逻辑 |
|-----------|---------|------------|
| 生成日报 | 说"日报" / "今天的工作汇报" / "daily report" | 自动取今日日期,生成 300~500 字日报 |
| 生成周报 | 说"周报" / "本周总结" / "weekly report" | 自动取本周一~周日,生成 500~800 字周报 |
| 生成月报 | 说"月报" / "本月报告" / "monthly report" | 自动取本月1日~月末,生成 800~1500 字月报 |
| 生成季报 | 说"季报" / "Q2报告" / "quarterly report" | 自动取本季度范围,生成 1500~2500 字季报 |
| 生成年报 | 说"年报" / "年度总结" / "yearly report" | 自动取本年数据,生成 2000~3500 字年报 |
| 发送邮件 | 说"发给" / "发送给" / "用xx邮箱发" + 收件人 | 进入邮件发送流程,自动匹配 SMTP |
| 从文件生成 | 上传文件 + "帮我写报告" | 先调用 `extract_content.py` 解析,再生成 |
| 补写历史报告 | 说"补写昨天的日报" / "生成上周周报" | 日期自动调整到指定日期 |
| 配置邮箱 | 说"配置邮箱" / "设置发件邮箱" / "添加邮箱" | 进入 `setup_email.py` 交互式向导 |
### 意图识别规则
当用户一句话同时包含多个意图时,按以下优先级处理:
1. 检测报告类型(日/周/月/季/年)
2. 检测输出格式(Word/PPT/Excel/PDF 或默认 Word+Markdown)
3. 检测发送意图(有收件人 → 邮件发送流程)
4. 检测内容来源(文件上传 / 口述 / 两者兼有)
5. 检测特殊操作(补写/配置/查询历史报告)
---
## 运行时行为约束
### 输出准确性规则
- **禁止在不确定领域胡编**:如果工作内容不足,先给出一个"假设示例版本"(标注"以下为示例内容,请确认后替换"),并列出需要补充的具体信息
- **每个关键数据注明来源**:如从文件抽取,标注"数据来源:工作记录.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 | 直接读取 |
| 混合 | 合并所有来源,去重后归类 |
**抽取结构**(标准化输出):
```yaml
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 邮件默认模板
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!