Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

wecomdrive

通过企业微信官方网页端操作微盘、文件夹、在线文档和表格。适用于检查登录状态、抓取并发送扫码二维码、下载或导出文件、在本地处理内容、生成报告后再通过网页端导入回企业微信微盘的场景。

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 12 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
Name and description align with the included scripts: a Playwright-based Node script to inspect pages and capture login QR, plus a local Python report generator for Excel exports. However, SKILL.md and metadata declare only node/npm as required binaries while the runtime instructions and README show use of python3 for report generation—this required runtime dependency is not declared.
Instruction Scope
Instructions are focused on the stated task (open WeCom links, detect login, capture QR, download/parse/export files, and upload results). They explicitly direct writing screenshots and JSON into $SKILL_DIR/.outputs and a persistent browser profile under $SKILL_DIR/.state, which is necessary for session persistence but is sensitive because it can contain cookies and tokens. The scripts do not appear to read unrelated host files or call unexpected network endpoints beyond browsing the target web app.
Install Mechanism
This is instruction-first (no install spec). The repo expects running npm install which will fetch playwright-core from the public npm registry (package-lock shows a resolved registry.npmjs.org URL). That is a standard flow but carries the normal npm supply-chain risk. No arbitrary/obscure download URLs or extract-from-untrusted-host operations were found.
!
Credentials
Declared required env vars: none. But the Node script reads process.env.WECOM_DRIVE_BROWSER_PATH to locate a browser binary (an env var the metadata does not declare). The skill also implicitly requires python3 to run the included report script (not declared). The skill writes persistent browser profile data under .state (cookies/session data) — appropriate for keeping a login session but sensitive. These undeclared requirements and the creation of persistent auth-bearing files are disproportionate to what the metadata explicitly lists and should be made explicit.
Persistence & Privilege
The skill creates and uses a persistent browser profile directory ($SKILL_DIR/.state/chrome-profile) to keep sessions and may keep the browser open (--keep-open). It is not marked always:true and does not force inclusion in every agent run, but it does request persistent local storage of session state which can hold authentication cookies—this is functionally justified but privacy-sensitive.
What to consider before installing
What to consider before installing: - Functionality fit: The code and SKILL.md match the described purpose: it uses Playwright (Node) to open WeCom pages, detect login walls, capture QR images, download exports, and a Python script to generate reports from .xlsx files. - Missing declarations: The package and metadata declare node/npm but the repo and SKILL.md also use python3 and respect WECOM_DRIVE_BROWSER_PATH — ask the author to add python3 and any required env vars to the metadata so requirements are explicit. - Persistent data: The skill will create .state (browser profile) and .outputs under the skill directory. Those files can include cookies/session state able to access the user's WeCom account; if you install this skill, treat the .state directory as sensitive and remove it when you no longer need persistent sessions. - Installation: npm install will fetch playwright-core from the public npm registry (normal but remember npm supply-chain risk). Consider running installation in an isolated environment (container or ephemeral VM) if you are unsure. - Operational caution: The script captures and saves a login QR image which the operator must forward to the user to complete login — the SKILL.md enforces this. Ensure you trust the skill source because it will be able to maintain and use a logged-in session. - Recommended actions: request the author to (1) add python3 to required binaries, (2) declare WECOM_DRIVE_BROWSER_PATH in requires.env or documentation, (3) document exactly what .state stores and how to clear it. If you cannot verify the publisher (source is unknown), prefer running in an isolated environment and inspect the .state/.outputs contents before and after use.

Like a lobster shell, security has layers — review code before you run it.

Current versionv0.0.1
Download zip
latestvk97f4h844w2k0a8dss59qcpfjn8380gw

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

Binsnode, npm

SKILL.md

企微微盘网页端

重要:路径解析 执行任何命令前,先根据当前 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

脚本流程

首次使用先安装依赖:

cd "$SKILL_DIR"
npm install

检查一个目标链接;如果需要登录,就保存二维码截图:

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

在同一个持久化浏览器配置目录里等待用户登录:

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.linkspage.editableElements 作为后续浏览器操作的提示信息。 如果 desktopConfirmationRequired 为真,优先按桌面端确认流程处理,而不是继续要求用户扫码。 如果结果是登录页,优先保留同一个页面继续等待扫码;不要抓完二维码后立刻关闭浏览器。

不要把 qrPath 当成仅供内部使用的产物。脚本生成后,必须把这张图展示或附加给用户,并提示用户扫码。

表格导出与报告生成

如果目标是腾讯文档表格,优先尝试网页原生导出:

  1. 打开文档左上或顶部的文件菜单。
  2. 优先使用 导出 -> 本地Excel表格 (.xlsx)
  3. 如果用户只需要当前工作表,且不关心样式,可退而使用 本地CSV文件 (.csv, 当前工作表)
  4. 导出完成后,先确认本地文件实际落盘,再进入后续解析。

仓库里附带了一个 Word 报告生成脚本:

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,再把最新图片发给用户。
  • 如果用户登录后仍未提供目标链接,要求用户给出具体文件或文件夹链接,不要自行在整个空间里盲找。
  • 如果网页端不适合稳定编辑该文件,就退回到“下载到本地处理,再上传”的流程。
  • 如果登录页提示“请在桌面端确认登录,无法扫码”,就明确告知用户需要在企业微信桌面端确认,并暂停扫码流程。

Files

9 total
Select a file
Select a file to preview.

Comments

Loading comments…