wechat-robot-skills/skills/export-chat-history/SKILL.md

3.3 KiB
Raw Blame History

name description
export-chat-history 将当前微信群聊指定日期或时间范围内的聊天记录导出为 Excel 并发送到当前群聊。当用户要求导出、下载、整理或备份今天、昨天或某段时间的群聊记录、聊天记录、群消息时使用。

导出群聊记录

运行 scripts/export_chat_history.py,查询当前微信群聊的聊天记录,生成 Excel 工作簿并直接发送到当前群聊。

入参

{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "description": "按自然日导出,格式为 YYYY-MM-DD。"
    },
    "start_time": {
      "type": "string",
      "description": "自定义范围的开始时间(包含),格式为 YYYY-MM-DD HH:mm 或 YYYY-MM-DD HH:mm:ss。"
    },
    "end_time": {
      "type": "string",
      "description": "自定义范围的结束时间(不包含),格式为 YYYY-MM-DD HH:mm 或 YYYY-MM-DD HH:mm:ss。"
    }
  },
  "additionalProperties": false
}

遵守以下时间规则:

  • 使用 Asia/Shanghai 时区。
  • 用户未指定时间时,不传时间参数,默认导出今天 00:00 至脚本执行时的记录。
  • 用户说“今天”时传当天 --date;说“昨天”时传昨天的 --date。
  • 自定义范围必须同时传 --start_time 和 --end_time,结束时间必须晚于开始时间。
  • --date 不能与自定义范围同时使用。

执行

导出今天:

python3 scripts/export_chat_history.py --date 2026-07-29

导出自定义范围:

python3 scripts/export_chat_history.py --start_time '2026-07-28 09:00' --end_time '2026-07-28 18:00'

未指定时间时:

python3 scripts/export_chat_history.py

脚本由 execute_skill_script 在技能根目录运行。运行时自动读取客户端注入的以下环境变量:

  • ROBOT_FROM_WX_ID:当前群聊 ID。
  • ROBOT_WX_ID:机器人自身微信 ID,用于排除机器人消息。
  • ROBOT_WECHAT_CLIENT_PORT:机器人客户端端口,用于发送 Excel。
  • ROBOT_CODE、MYSQL_HOST、MYSQL_PORT、MYSQL_USER、MYSQL_PASSWORD:机器人实例数据库连接。

查询与导出规则

  • 仅允许导出当前群聊 ROBOT_FROM_WX_ID,不接受外部传入群 ID。
  • 复用客户端群聊总结的查询语义:查询 messages,联表 chat_room_members 取得群成员备注或昵称,排除机器人自身发送的消息。
  • 导出普通文本消息,以及引用消息、网页分享和文件消息中可读的标题或描述。
  • 按消息时间、消息 ID 升序排列,结束时间不包含在结果中。
  • Excel 包含“导出说明”和“聊天记录”两个工作表;聊天记录列为序号、发送时间、发送人、发送人微信 ID、消息内容。
  • 单次最多导出 50,000 条记录;超过上限时停止并提示缩短时间范围。
  • 生成后直接调用客户端本地文件发送接口;发送成功后删除临时文件。

结果处理

  • 仅当脚本返回 JSON 且 ok 为 true 时,告知用户导出成功;脚本已经发送文件,不要再次调用发送文件技能。
  • 没有符合条件的记录时,说明该时间范围没有可导出的聊天记录,并建议用户调整日期或范围。
  • 查询、生成或发送失败时,按脚本错误说明原因,不要声称文件已发送。