微信公众号媒体下载器 WeChat Media Downloader — 微信公众号媒体下载器
v1.0.0下载微信公众号文章(mp.weixin.qq.com)中的视频、音频和音乐卡片。适用于:用户想把公众号文章里的1个或多个视频、多个音频/音乐保存到本地;直接抓取被微信“环境异常/去验证”拦截;需要通过可见Chrome+人工验证+远程调试抓取真实媒体地址,再自动下载、提取标题、重命名并整理输出。优先用于中文微信公众号内容场景。
0· 105·0 当前·0 累计
安全扫描
OpenClaw
安全
high confidence该技能的代码、指令和需求与其声明的目的(通过用户驱动的Chrome远程调试工作流从mp.weixin.qq.com保存媒体)保持一致;它不请求无关凭据,也不联系意外的外部端点。
评估建议
该技能内部一致,实现了声明的CDP+人工验证方法。使用前请注意:1)仅将其用于您有权保存的媒体;2)仅在可信的、防火墙保护的机器上使用远程调试标志启动Chrome(脚本连接到localhost:9222),避免向网络暴露该端口;3)自己检查包含的脚本(简短纯Python),并在本地以普通用户身份运行,而非特权用户;4)该技能建议通过pip安装Playwright和可选的yt-dlp,如您有策略顾虑请审查这些包。如在共享或远程主机上运行,请考虑打开CDP端口的风险以及该主机上存在下载文件的风险。...详细分析 ▾
✓ 用途与能力
名称/描述与包含的脚本和运行时指令相匹配:capture_wechat_media.py和download_wechat_media.py都实现了针对微信文章媒体(mpvideo.qpic.cn和res.wx.qq.com)的基于CDP的捕获和HTTP下载流程。建议的工具(playwright、yt-dlp)对于此任务是合理的。
ℹ 指令范围
SKILL.md保持在声明目的范围内:指示先尝试无头获取,然后使用可见Chrome+人工验证+CDP来捕获媒体URL,保存页面HTML和捕获的请求,然后下载和重命名。一个操作/安全说明:要求用户启动Chrome时使用--remote-debugging-port=9222(本地CDP访问),这对于工作流是必要的,但如果该端口暴露给不受信任网络则存在操作安全影响。指令不要求代理读取无关文件或将数据泄露到第三方端点。
✓ 安装机制
包中没有自动安装规范(仅指令安装)。README建议用户级pip安装playwright和可选的yt-dlp,对于声明的功能来说是适当和成比例的。包中没有来自不受信任URL的下载或存档提取。
✓ 凭证需求
该技能不请求环境变量、凭据和配置路径。脚本仅连接到localhost CDP(127.0.0.1:9222)并获取公共媒体URL,这与预期功能匹配。不请求或使用无关的密钥或令牌。
✓ 持久化与权限
技能元数据不强制always:true,也不请求持久特权。脚本仅将本地工件(manual_page.html、JSON清单、下载的媒体)写入用户指定的目录,不修改其他技能或系统级设置。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/4/1
初始发布:支持公众号文章视频与多段音频抓取、人工验证接管、标题提取、重命名与整理输出。
● 无害
安装命令 点击复制
官方npx clawhub@latest install wechat-media-downloader-weixin
镜像加速npx clawhub@latest install wechat-media-downloader-weixin --registry https://cn.clawhub-mirror.com
技能文档
仅在用户有权访问和保存目标媒体时使用。
核心思路
不要和微信反爬硬碰硬。最稳的成功路径是:
- 先试普通抓取。
- 一旦页面返回“环境异常 / 去验证”,立即切换为:
执行流程
1) 先判定是否被拦截
- 直接请求文章链接。
- 若返回微信验证页,不继续 headless 硬爬,直接进入人工验证路线。
2) 安装最小工具
优先用户级安装,不要求 sudo。
需要:
playwrightyt-dlp(可选;有时直接 HTTP 下载更稳)
推荐命令:
python3 -m pip install --user playwright yt-dlp
3) 让用户启动可见 Chrome
让用户执行:
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/openclaw-wechat-debug
然后让用户:
- 打开目标公众号文章
- 完成微信验证/登录
- 确认页面中的视频和音频能正常显示
4) 连接真实浏览器会话抓 URL
使用:
scripts/capture_wechat_media.py
做法:
- 先读取
http://127.0.0.1:9222/json/version - 取其中
webSocketDebuggerUrl - 用 CDP 连入 Chrome
- 监听 request / response
- 同时保存页面 HTML
若只抓到视频没抓到音频:
- 让用户把每个音频都点一次播放
- 重新抓取
5) 下载媒体
- 视频:优先使用抓到的
mpvideo.qpic.cn直链 - 音频:使用
https://res.wx.qq.com/voice/getvoice?mediaid=
注意:
- 某些 MP4 直链用
yt-dlp可能卡收尾;这时直接用 Python HTTP 流式下载反而更稳。
6) 提取标题并重命名
从文章 HTML 中提取:
- 文章标题
按文章顺序输出成:
00. <视频标题>.mp401. <音频标题>.mp302. <音频标题>.mp3- ...
7) 交付与清理
- 把最终文件放入一个干净的新目录
- 可以清理:临时 HTML、JSON、
.part、乱码副本、抓取脚本输出 - 不要默认删除最终交付目录
经验规则
- 微信公众号抓取的关键不是“更强的爬虫”,而是“接管已通过验证的真实浏览器会话”。
- 纯 headless 路线经常失败。
- 音频 URL 经常只有播放后才出现。
- 如果
connect_over_cdp('http://127.0.0.1:9222')返回 400,不要死磕;先取/json/version里的 websocket 地址再连接。
自带资源
scripts/capture_wechat_media.py:连接 Chrome 调试端口,抓取视频/音频请求与页面 HTMLscripts/download_wechat_media.py:下载视频和音频,并根据文章内容重命名references/reusable-workflow.md:可复用操作清单与故障处理
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制