从班级群作业照片中识别作业内容,整理成按学科分类的可勾选清单,写入腾讯智能文档。支持多日期管理、进度查询。
> ⚠️ 首次使用必须完成初始化配置! 详见下方「初始化流程」章节。
tencent-docs)
首次使用时,询问用户以下信息:
📋 欢迎使用作业记录助手!
请提供以下信息完成初始化:
1. 📝 文档标题:(例如"小明作业记录本",默认"作业记录本")
2. 🔗 是否已有腾讯智能文档?
- 有 → 请发送文档链接,我来获取 file_id
- 没有 → 我帮你新建一个
file_id
smartcanvas.read 验证文档可访问
create_smartcanvas_by_mdx 创建新的智能文档
file_id 和文档链接保存到本地配置
将初始化结果写入配置文件(Skill 安装目录下的 config.json):
> 配置文件位置:.workbuddy/skills/homework-tracker/config.json
> (与 SKILL.md 同目录,每个 workspace 独立一份)
{
"doc_title": "作业记录本",
"file_id": "用户的file_id",
"doc_url": "https://docs.qq.com/aio/XXXXXX",
"student_name": "",
"initialized_at": "2026-04-17",
"version": "2.0"
}
> 隐私说明:config.json 存储在用户本地 workspace 中,不会随 Skill 分享泄露。
向用户展示:
✅ 初始化完成!
📄 文档标题:{doc_title}
🔗 文档链接:{doc_url}
📝 文档ID:{file_id}
现在可以:
• 发送作业照片 → 自动识别并写入文档
• 说"作业进度" → 查看勾选完成情况
• 说"更新作业" → 刷新最新进度
当以下任一情况发生时,加载此技能:
每次触发时,先检查配置文件是否存在:
file_id 等信息,继续后续流程
将所有图片识别出的作业按科目汇总去重,然后按以下格式规范整理:
| # | 规则 | 说明 |
|---|------|------|
| 1 | 标题 | 使用用户初始化时设置的文档标题 |
| 2 | 学科分类 | 按科目分组(语文/数学/英语等) |
| 3 | 科目标题格式 | ⚠️ 只能用 Markdown 双星号加粗!禁止 标签 |
| 4 | 序号规则 | 每天序号独立从1开始(不跨日期延续) |
| 5 | 日期排序 | 最新的日期在最上面(倒序排列) |
科目标题格式(最重要!)
✅ 正确:<Paragraph>**📖 语文</Paragraph>
❌ 错误:<Paragraph><strong>📖 语文</strong></Paragraph> ← 会原样显示标签文字!
日期排序铁律
⚠️⚠️ INSERT_BEFORE 的目标永远是文档第一个日期 Heading!
❌ 不要按"日历时间顺序"插在中间!(如4月15日在14日和13日之间是错的)
✅ 正确做法:新日期 → INSERT_BEFORE → 第一个日期的 Heading ID
💡 简单记忆法:越新的越在上面,像微信聊天记录一样倒序排列
MDX 内容示例
<Heading level="2">4月16日 作业</Heading>
<Paragraph>**🌍 英语**</Paragraph>
<Todo>1、背诵第1个听力文本</Todo>
<Todo>2、练习册U5SA-1</Todo>
<Paragraph>**📐 数学**</Paragraph>
<Todo>3、课练因式分解二</Todo>
<Divider />
识别完成后,先汇报再写入:
📊 {日期} 作业统计
├── 📚 学科数:X 科
├── 📝 总项数:X 项
├── (如有多张照片)本次合并 X 张照片
└── 即将写入文档...
核心原则:始终在同一个文档上操作!使用配置文件中的 file_id。
| 操作类型 | 方法 | 说明 |
|----------|------|------|
| 追加新日期 | smartcanvas.edit + INSERT_BEFORE | 在第一个日期标题前插入新日期 |
| 修改已有内容 | smartcanvas.edit + UPDATE | 修改指定 Block 的内容 |
| 🚫 禁止 | create_smartcanvas_by_mdx | 初始化之后绝对不能用来新建文档! |
smartcanvas.read 读取文档顶部,找到第一个日期 Heading 及其 ID
smartcanvas.edit + action=INSERT_BEFORE 在该 Heading 之前插入新日期数据
smartcanvas.find 搜索 自检格式
向用户返回:
✅ {日期}作业已写入!
📋 本次操作:
├── 📸 图片识别:X科Y项
├── 📅 日期:{date}
├── 🔢 序号:1~N
├── 🏷️ 格式自检:✅ 通过
├── 📍 排序:最新在上
└── ⏰ 时间戳:已更新
👉 文档链接:{doc_url}
当用户说"更新一下"、"查看作业"、"作业进度"、"更新作业"、"完成情况"时:
⚠️ smartcanvas/read/find/get_content 等 API 都无法返回 Todo 勾选状态!
唯一可靠方式:使用 Playwright 无头浏览器打开文档页面,从 DOM 提取 checkbox 的 checked 属性。
用户需要在本地准备一个 Playwright 脚本(参考 references/playwright-guide.md),脚本需满足:
{doc_url}(来自配置文件)
.dui-checkbox-normal > input[type=checkbox] 的 checked 状态
📅 {YYYY年M月D日} 作业进度
| # | 科目 | 作业内容 | 状态 |
|---|------|----------|:----:|
| 1 | 📖 语文 | xxx | ✅/⬜ |
├── 📚 学科数:X 科
├── 📝 总项数:X 项
├── ✅ 已完成:X 项
├── ⬜ 待完成:X 项
└── 📊 完成度:XX%
| 科目 | 图标 | 备注 |
|------|------|------|
| 语文 | 📖 | |
| 数学 | 📐 | |
| 英语 | 🌍 | |
| 物理 | ⚛️ | |
| 化学 | 🧪 | |
| 生物 | 🧬 | |
| 历史 | 📜 | |
| 地理 | 🗺️ | |
| 政治/道法 | ⚖️ | |
| 音乐 | 🎵 | |
| 体育 | ⚽ | |
| 美术 | 🎨 | |
| 其他 | 📝 | 默认 |
| 条件 | 说明 |
|------|------|
| 视觉模型 | 必须使用支持图片理解的模型来识别手写作业照片 |
| 超级会员 | 腾讯文档 MCP API 调用需要账号开通超级会员 |
| Playwright | 读取勾选状态需要 Playwright + Chromium |
| 文档权限 | 文档需设为"所有人可查看"(方便手机端访问)|
共 1 个版本