扫码登录抓取公众号文章并分析内容方法
29/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add bescriptkiddie/dsh-wechat-collector该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 65 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/6) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-wechat-collector(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/23 11:36:01
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 80 处,展示前 39 条)
- 发起网络请求client.js:78
return fetch(ACTION_URL, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(payload) }) - 发起网络请求client.js:84
fetch(QRCODE_URL, { cache: "no-store" }).then(function (res) { return res.json(); }).then(function (envelope) { - 发起网络请求client.js:95
fetch(ANALYSIS_URL + "?reportId=" + encodeURIComponent(reportId), { cache: "no-store" }) - 发起网络请求client.js:245
function load() { if (busy) return; error = ""; fetch(STATE_URL, { cache: "no-store" }).then(function (res) { return res.json(); }).then(function (env - 读取本地文件lib/service.js:160
try { await stat(path); return true; } catch { return false; } - 读取本地文件lib/service.js:164
try { return (await readdir(dir, { withFileTypes: true })).filter((entry) => entry.isFile() && entry.name.endsWith(".md")).length; } - 读取本地文件lib/service.js:269
try { installedCommit = compact(JSON.parse(await readFile(join(this.collectorProjectRoot, "RUNTIME.json"), "utf8")).commit, 80); } - 发起网络请求lib/service.js:307
await this.request("/api/auth/status", { signal }); - 发起网络请求lib/service.js:325
await this.request("/api/auth/status", { signal }); - 发起网络请求lib/service.js:336
try { auth = await this.request("/api/auth/status", { signal }); } - 发起网络请求lib/service.js:348
this.request("/api/crawl/status", { signal }), - 发起网络请求lib/service.js:349
this.request("/api/content-loop/overview", { signal }), - 发起网络请求lib/service.js:350
this.request("/api/accounts", { signal }), - 写入本地文件lib/service.js:581
await Promise.all([mkdir(clipsDir, { recursive: true }), mkdir(receiptsDir, { recursive: true })]); - 写入本地文件lib/service.js:607
await writeFile(path, `${frontmatter({ - 写入本地文件lib/service.js:633
await writeFile(receiptPath, `${JSON.stringify(receipt, null, 2)}\n`, "utf8"); - 读取本地文件scripts/runtime-manager.mjs:48
try { await access(path); return true; } catch { return false; } - 发起网络请求scripts/runtime-manager.mjs:101
const response = await fetch(url, { redirect: "follow", signal }); - 写入本地文件scripts/runtime-manager.mjs:109
await writeFile(destination, bytes, { mode: 0o600 }); - 写入本地文件scripts/runtime-manager.mjs:126
await mkdir(binDir, { recursive: true }); - 写入本地文件scripts/runtime-manager.mjs:136
await copyFile(extracted, staged); - 写入本地文件scripts/runtime-manager.mjs:137
await chmod(staged, 0o755); - 写入本地文件scripts/runtime-manager.mjs:139
await rename(staged, uvPath); - 写入本地文件scripts/runtime-manager.mjs:140
await writeFile(join(binDir, "uv-receipt.json"), `${JSON.stringify({ - 删除本地文件递归scripts/runtime-manager.mjs:150
await rm(tempRoot, { recursive: true, force: true }); - 读取本地文件scripts/runtime-manager.mjs:181
const info = await lstat(path); - 读取本地文件scripts/runtime-manager.mjs:183
const current = resolve(dirname(path), await readlink(path)); - 读取本地文件scripts/runtime-manager.mjs:214
const marker = JSON.parse(await readFile(markerPath, "utf8")); - 读取本地文件scripts/runtime-manager.mjs:257
const changed = !(await exists(plistPath)) || await readFile(plistPath, "utf8") !== plist; - 发起网络请求scripts/runtime-manager.mjs:274
const response = await fetch(`${target.baseUrl}/api/auth/status`, { signal: AbortSignal.any([signal ?? new AbortController().signal, AbortSignal.timeo - 读取本地文件lib/analysis.js:93
try { return JSON.parse(await readFile(path, "utf8")); } - 写入本地文件lib/analysis.js:98
await mkdir(join(path, ".."), { recursive: true, mode: 0o700 }); - 写入本地文件lib/analysis.js:100
await writeFile(staged, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf8", mode: 0o600, flag: "wx" }); - 写入本地文件lib/analysis.js:101
await chmod(staged, 0o600); - 写入本地文件lib/analysis.js:102
await rename(staged, path); - 发起网络请求lib/analysis.js:198
response = await fetch(chatUrl(settings.baseUrl), { - 写入本地文件lib/analysis.js:307
await mkdir(this.reportsRoot, { recursive: true, mode: 0o700 }); - 写入本地文件lib/analysis.js:309
await writeFile(markdownPath, `${markdown}\n`, { encoding: "utf8", mode: 0o600 }); - 读取本地文件lib/analysis.js:316
try { files = await readdir(this.reportsRoot, { withFileTypes: true }); }
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-tools@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 扫码登录公众号
- 抓取公众号文章
- 分析内容方法
DSH 原生微信公众号采集器,可对接 ContentStudio。
README
由 DeepSeek 最新模型翻译生成dsh-wechat-collector
这是一个原生 DSH 公众号采集与博主分析插件:在 DSH 右侧提供「公众号」面板和 Agent 工具,负责扫码登录、公众号管理、文章抓取、DeepSeek 内容方法分析、结果回看、素材筛选、反馈写回,以及把来源卡交给 ContentStudio。
DSH 公众号采集面板
插件内置的 Python 运行时来自 pika-weixin-collection,发布包只保留运行所需代码,不包含任何微信凭证、历史文章或个人信源配置。
安装
当前正在等待精选市场目录收录。收录前可以直接从公开 GitHub 仓库安装:
dsh plugin --profile web add github:bescriptkiddie/dsh-wechat-collector
如果当前 DSH 没有热加载新 bundle,请重启由系统托管的 DSH web 进程。加载后,屏幕右缘会出现「公众号」。
macOS 首次使用
打开「公众号」,点击「安装本地运行时」。插件会先把将要发生的本机改动完整展示出来,并要求你明确确认。
展开完整文档(README 剩余 1 节)
dsh-wechat-collector 这是一个原生 DSH 公众号采集与博主分析插件:在 DSH 右侧提供「公众号」面板和 Agent 工具,负责扫码登录、公众号管理、文章抓取、DeepSeek 内容方法分析、结果回看、素材筛选、反馈写回,以及把来源卡交给 ContentStudio。 DSH 公众号采集面板 插件内置的 Python 运行时来自 pika-weixin-collection,发布包只保留运行所需代码,不包含任何微信凭证、历史文章或个人信源配置。 安装 当前正在等待精选市场目录收录。收录前可以直接从公开 GitHub 仓库安装: dsh plugin --profile web add github:bescriptkiddie/dsh-wechat-collector 如果当前 DSH 没有热加载新 bundle,请重启由系统托管的 DSH web 进程。加载后,屏幕右缘会出现「公众号」。 macOS 首次使用 打开「公众号」,点击「安装本地运行时」。插件会先把将要发生的本机改动完整展示出来,并要求你明确确认。确认后才会: 1. 从 Astral GitHub Release 下载 uv 0.12.6,并校验固定 SHA-256; 2. 把随插件打包、无凭证、无用户数据的采集代码部署到 ~/.local/share/dsh-wechat-collector; 3. 创建只属于当前用户、监听 127.0.0.1:8000 的 launchd 常驻服务; 4. 真实检查本机 API 就绪后再报告安装完成。 插件不会通过 postinstall 静默执行这些动作。内置运行时目前支持 Apple Silicon 和 Intel Mac;其他平台仍可在 collectorBaseUrl 中连接自行运行的兼容 API。 能力 - wechat_collector_runtime:查看、明确安装、启动、停止或停用本地运行时。 - wechat_collector_login:启动或查看扫码登录;二维码数据只进入本机面板路由。 - wechat_collector_account:搜索、添加、查看或移除公众号。 - wechat_collector_crawl:立即抓取、查看进度、管理每日定时,以及读取/调整请求节奏策略(账号间隔、翻页间隔、随机抖动、限流冷却时长)。 - wechat_collector_credentials:列出、切换或删除多套凭证档案;档案只能由扫码登录创建,工具不返回 token/cookie。 - wechat_collector_sources:管理外部信源(文章 RSS、播客、B 站);公众号文章 RSS 作为限流期间也能独立更新的第二水源。 - wechat_collector_items:读取最近的公众号候选素材和短预览。 - wechat_collector_feedback:把真实人工判断写回采集端。 - wechat_collector_analysis_config:查看分析配置或测试 DeepSeek 连接,不接收密钥。 - wechat_collector_author_analysis:按指定公众号生成、列出或读取本地分析报告。 - wechat_collector_import_to_studio:幂等创建 ContentStudio 来源卡和 JSON 回执。 - studio_wechat_collect:给 ContentStudio 内容工作流使用的兼容入口。 面板对应的正常路径是:安装/启动 → 扫码登录 → 添加公众号 → 抓取 → 配置 DeepSeek → 选择博主和分析 Skill → 查看报告 → 筛选 → 导入来源卡。 多套凭证与限流保护 每次扫码登录都会把凭证存成一套命名档案,可随时在面板或工具间切换;当前激活的档案不允许删除,凭证值永远不进入 DSH。爬取按可配置节奏进行(账号间默认 20 秒、翻页间默认 8 秒,带随机抖动);微信返回 freq control 时会立刻终止本轮并进入可配置时长的冷却期,冷却期内手动与定时抓取都会被拒绝(HTTP 429),避免在风控窗口内反复请求加重处罚。 外部信源(第二水源) 运行时支持 rss_feed 文章信源:任何文章 RSS/Atom(典型用法是配合本机 WeWe RSS 的公众号订阅源)都会以公众号文章身份进入统一内容池,与后台抓取走同一条管道。微信公众平台接口被限流时,这条水源仍能独立更新;两者互为备份,互不影响。 用 WeWe RSS 搭公众号第二水源(可选) rss_feed 能力随插件发布,但 RSS 源本身需要自己提供。推荐用 WeWe RSS(走微信读书接口,免费、自托管),任何机器上的 Agent 都可以按下面的步骤带用户完成: mkdir -p ~/.local/share/wewe-rss && cd ~/.local/share/wewe-rss cat > docker-compose.yml .atom?auth_code=&limit=20; 5. 在插件面板「信源管理」粘贴该地址,或调用 wechat_collector_sources(action=add, sourceType="rss_feed", url=...) 注册并立即同步。 RSS 条目以 wechat_article 身份进入统一内容池,wechat_collector_items 与 import_to_studio 对两条水源一视同仁;feed 地址中的 auth_code 在面板和工具输出中一律打码。 博主分析 打开「博主分析设置」,配置 API 地址、模型、分析 Skill 和文章数量。API Key 写入 DSH 自带的凭据服务,默认引用 DEEPSEEK_API_KEY;插件设置和分析报告都不保存密钥。 当前内置三个分析 Skill: - author-methodology-analysis:完整分析选题、标题、开头、结构、句式和判断标准。 - topic-title-analysis:重点分析选题桶、读者问题和标题公式。 - structure-style-analysis:重点分析开头、论证节奏、案例位置和表达结构。 抓取完成后,在具体公众号旁点击「分析」。确认后,插件最多发送设置数量的文章,单篇最多 6000 字符、总计最多 60000 字符到配置的 DeepSeek-compatible API。 分析结果写入 ~/.local/share/dsh-wechat-collector/analysis/reports,并直接显示在插件面板。有效长文少于 5 篇时,报告会强制标记为小样本,不能表述为博主长期风格。 证据和发布边界 采集结果只是来源线索,不是已经核验的事实,也不能进入个人 IP 风格语料。博主分析只提炼内容方法、结构和判断逻辑,不冒充作者身份,不复制其经历、私有资源、数据或标志性原句。这个插件不负责公众号发表;排版、草稿箱上传和最终发表继续走独立的 ContentStudio 发布链,并保留人工确认。 数据与卸载 微信凭证和采集数据保存在 ~/.local/share/dsh-wechat-collector/data,不会进入 npm 包,也不会由 Agent 工具返回。DeepSeek API Key 由 DSH credentials 保存;分析设置和报告位于 ~/.local/share/dsh-wechat-collector/analysis。 卸载插件前,在面板点击「停用常驻服务」,或明确调用 wechat_collector_runtime(action=unconfigure)。它会停止 launchd,并把 plist 移动到可恢复备份;插件卸载默认保留登录态、历史文章和运行文件。详见 PRIVACY.md 与 SECURITY.md。 开发验证 需要 Node.js 22.19 或更高版本: bash npm install --ignore-scripts npm run check npm test npm pack --dry-run 发布包已经包含可运行的 JavaScript 和 Python 源码,没有安装期构建步骤。 许可证 MIT。内置运行时源码及其来源回执位于 runtime/。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
bescriptkiddie/dsh-wechat-collector
扫码登录抓取公众号文章并分析内容方法
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,170已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,041已汉化DSH
70.7
这是你的仓库?认领条目