Skill: junjiantech/unianx-wecomdrive (version 0.0.1)

--- name: wecom-drive-web description: 通过企业微信官方网页端操作微盘、文件夹、在线文档和表格。适用于检查登录状态、抓取并发送扫码二维码、下载或导出文件、在本地处理内容、生成报告后再通过网页端导入回企业微信微盘的场景。 version: 0.2.0 metadata: openclaw: requires: bins: - node - npm homepage: https://clawhub.ai --- # 企微微盘网页端 **重要：路径解析** 执行任何命令前，先根据当前 `SKILL.md` 的所在位置解析 `$SKILL_DIR`。在这个仓库里，包含本文件的目录就是技能根目录。 当 OpenClaw 只能通过企业微信官方网页端访问文件时，使用这个技能。实际操作页面时优先使用浏览器工具，因为这样可以保持会话、查看真实页面，并把截图直接发给用户；当你需要稳定地检查登录状态、抓取二维码、输出页面摘要、导出表格或把导出的 Excel 进一步整理成 Word 报告时，使用随附脚本。 ## 强制规则 如果需要登录，必须把登录二维码图片发给用户。不能只保存在本地，也不能在用户扫码前继续执行任何文件读取或编辑操作。 如果进入二维码登录页，必须保持当前登录标签页或浏览器会话存活，直到用户完成扫码或明确放弃；不要在发出二维码后关闭标签页或重建新的登录页。 每次重新抓取二维码时，都要覆盖同一个本地二维码文件，默认使用 `$SKILL_DIR/.outputs/wecom-login-qr.png`，避免把旧二维码误发给用户。 处理文件内容时，默认先把文件下载到本地，再在本地处理；不要默认直接在网页编辑器里处理完整内容。 如果需要把本地结果重新上传到企业微信文档，固定打开 `https://doc.weixin.qq.com/home/recent` 页面，通过网页端导入文件。 ## 工作流程 1. 确定目标链接。 - 如果用户已经提供了微盘文件、文件夹或在线文档链接，直接打开该链接。 - 如果用户只是想先建立登录会话，从 `https://doc.weixin.qq.com/home/recent` 开始。 2. 检查是否需要登录。 - 如果当前 URL 是 `https://doc.weixin.qq.com/home/recent` 且页面进入登录态检查，或者当前 URL 包含 `/wework_admin/loginpage_wx`、`/scenario/login.html`，或者页面可见文字包含 `企业微信扫码登录`、`企业身份登录`，或者 iframe 地址包含 `/wwqrlogin/`，就视为需要登录。 - 一旦需要登录，先抓取二维码，再把二维码图片发给用户，然后才能做其他事情。 - 抓到二维码后不要关闭当前标签页；要让用户在这一个仍然存活的登录页面上完成扫码。 - 明确告诉用户需要扫码后才能继续。 - 如果页面提示 `请在桌面端确认登录`、`无法扫码` 或类似文案，就切换到桌面端确认兜底流程，不要让用户重复扫码。 3. 等待用户扫码。 - 等待期间保持同一个浏览器会话存活。 - 如果需要重新截图二维码，覆盖 `$SKILL_DIR/.outputs/wecom-login-qr.png`，不要生成新的时间戳文件。 - 用户扫码后重新检查页面，确认登录墙消失后再继续。 4. 如果命中桌面端确认兜底，改走桌面端确认流程。 - 把当前截图或提示文案发给用户，明确说明这次不是普通扫码，而是需要在企业微信桌面端确认登录。 - 不要反复要求用户重新扫码。 - 优先复用已经登录过的持久化浏览器配置；如果仍未登录，再等待用户在桌面端完成确认后继续。 5. 操作文件页面。 - 先判断这是“在线直接操作”还是“下载到本地处理后再回传”。 - 对文件类内容，优先下载到本地再处理。 - 只在用户明确要求且确实适合网页直接修改时，才在页面里做小范围编辑。 - 如果登录后站点跳到了通用首页，重新打开原始目标链接。 6. 需要上传处理结果时，走固定上传入口。 - 打开 `https://doc.weixin.qq.com/home/recent`。 - 在最近页面里使用导入能力上传本地文件。 - 上传完成后，再打开上传后的文件链接继续检查。 7. 如果目标是表格分析或报表整理，优先走“原生导出 + 本地生成报告”。 - 先用网页原生菜单导出 `.xlsx` 或当前工作表 `.csv`。 - 在本地完成统计、分析和报告生成。 - 需要回传时，把 `.docx`、`.xlsx` 或其他结果文件重新导入微盘。 ## 优先浏览器流程 只要浏览器工具可用，就优先使用浏览器工具。 1. 在浏览器中打开目标链接或登录链接。 2. 检查当前页面。 3. 如果页面显示登录墙，截取二维码区域或登录卡片，并在当前对话轮次里把图片发给用户。 4. 登录墙出现后不要关闭该标签页；保留当前页面等待用户扫码，必要时只更新截图文件。 5. 如果页面同时提示“请在桌面端确认登录”或“无法扫码”，立刻告诉用户需要到企业微信桌面端确认，不要继续让用户扫码。 6. 登录完成后，继续使用同一个会话，在输入或点击前再次检查文件页面结构。 7. 如果要处理的是文件而不是少量在线文本，优先走“下载到本地处理”流程，而不是直接在网页里大段改写。 当你需要页面结构和判断规则时，阅读 `references/wecom-web-notes.md`。 ## 脚本流程 首次使用先安装依赖： ```bash cd "$SKILL_DIR" npm install ``` 检查一个目标链接；如果需要登录，就保存二维码截图： ```bash cd "$SKILL_DIR" node ./scripts/wecom-drive-browser.mjs \ --url "https://doc.weixin.qq.com/home/recent" \ --qr-path "$SKILL_DIR/.outputs/wecom-login-qr.png" \ --keep-open ``` 在同一个持久化浏览器配置目录里等待用户登录： ```bash cd "$SKILL_DIR" node ./scripts/wecom-drive-browser.mjs \ --url "https://doc.weixin.qq.com/home/recent" \ --wait-for-login \ --timeout-ms 180000 ``` 脚本会输出 JSON，包含这些字段： - `status` - `targetUrl` - `currentUrl` - `title` - `loginRequired` - `desktopConfirmationRequired` - `loginHint` - `qrPath` - `page.links` - `page.editableElements` - `page.textHints` 用 `qrPath` 对应的图片发给用户。用 `page.links` 和 `page.editableElements` 作为后续浏览器操作的提示信息。 如果 `desktopConfirmationRequired` 为真，优先按桌面端确认流程处理，而不是继续要求用户扫码。 如果结果是登录页，优先保留同一个页面继续等待扫码；不要抓完二维码后立刻关闭浏览器。 不要把 `qrPath` 当成仅供内部使用的产物。脚本生成后，必须把这张图展示或附加给用户，并提示用户扫码。 ## 表格导出与报告生成 如果目标是腾讯文档表格，优先尝试网页原生导出： 1. 打开文档左上或顶部的文件菜单。 2. 优先使用 `导出 -> 本地Excel表格 (.xlsx)`。 3. 如果用户只需要当前工作表，且不关心样式，可退而使用 `本地CSV文件 (.csv, 当前工作表)`。 4. 导出完成后，先确认本地文件实际落盘，再进入后续解析。 仓库里附带了一个 Word 报告生成脚本： ```bash cd "$SKILL_DIR" python3 ./scripts/generate_stutter_report.py "/path/to/exported.xlsx" ``` 脚本会在 `$SKILL_DIR/.outputs/` 下生成： - `*-分析报告.html` - `*-分析报告.docx` 默认适用于“卡顿数据汇总 + 严重卡顿明细 + 播放事件抽样”这一类企业微信表格导出文件。如果后续遇到类似结构的排查表，优先复用这个脚本，而不是每次重新手写统计逻辑。 ## 读取与编辑 读取时： - 先用页面快照。 - 如果页面是文档视图，检查可见标题、段落和链接。 - 如果页面是文件列表，先收集可见文件名和链接，再决定打开哪一个。 - 如果目标是文件处理任务，优先下载文件到本地，再用本地工具处理。 编辑时： - 如果用户的编辑要求还不够具体，先确认具体改动。 - 在输入前先确定当前活跃编辑区域。 - 优先做最小、最安全的修改，不要默认整段替换。 - 如果改动较大、涉及结构化内容转换、批量处理或格式保留，先下载到本地处理，再上传回去。 - 修改完成后，确认变更文本已经在页面上可见。 ## 下载与上传 下载时： - 优先找到页面中的下载、导出或另存为入口，把原文件保存到本地。 - 下载后在本地完成解析、修改、转换或批处理。 - 保留本地输入文件和输出文件路径，方便后续回传。 上传时： - 不要在任意页面里盲找上传按钮。 - 固定打开 `https://doc.weixin.qq.com/home/recent`。 - 从最近页面触发导入，把本地处理后的文件上传回企业微信文档。 - 上传成功后，打开新文件并检查内容是否符合预期。 ## 兜底规则 - 如果目标页面结构不熟悉，先检查 DOM，再执行操作。 - 如果二维码无法被干净地单独截出，就发送整个登录卡片或整页截图。 - 如果需要重新生成二维码截图，优先覆盖已有的 `$SKILL_DIR/.outputs/wecom-login-qr.png`，再把最新图片发给用户。 - 如果用户登录后仍未提供目标链接，要求用户给出具体文件或文件夹链接，不要自行在整个空间里盲找。 - 如果网页端不适合稳定编辑该文件，就退回到“下载到本地处理，再上传”的流程。 - 如果登录页提示“请在桌面端确认登录，无法扫码”，就明确告知用户需要在企业微信桌面端确认，并暂停扫码流程。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)