ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

wx_channels_download 的 Cloudflare 部署命令(deploy)实战指南:一键部署公众号 RSS、视频号查询与 Bridge 桥接 Worker

wx_channels_download 的 Cloudflare 部署命令(deploy)实战指南:一键部署公众号 RSS、视频号查询与 Bridge 桥接 Worker 桌面应用视频网络MCP 服务【免费下载链接】wx_channels_download微信视频号下载器项目地址https://gitcode.com/gh_mirrors/wx/wx_channels_download点击查看免费下载wx_channels_download 是一套集视频号、公众号内容抓取与下载于一体的工具。当你需要把公众号 RSS/API、视频号视频查询页面或 Bridge 桥接服务托管到 Cloudflare 时无需手工登录 Dashboard 逐个创建 Worker、D1 数据库或 Pages 项目——内置的deploy命令会读取本地配置文件通过 Cloudflare REST API 完成全部部署。读完本文你将掌握deploy mp、deploy sph、deploy bridge三条子命令的配置字段、前置权限、部署产物与可用 API并能理解每条命令背后的源码实现逻辑。本文以 docs/cli/deploy.md 为骨架结合仓库源码入口见 cmd/deploy.go各 Worker 部署实现见 internal/workers/mp/deploy.go、internal/workers/sph/deploy.go、internal/workers/bridge/deploy.go进行扩充。deploy 命令概览一个父命令三条子命令deploy是一个父命令本身不执行任何部署动作必须指定二级命令。其 CLI 注册位于 cmd/deploy.go通过 cobra 挂载了mp、sph、bridge三个子命令wx_video_download deploy command命令说明wx_video_download deploy mp部署公众号 RSS/API Workerwx_video_download deploy sph部署视频号查询 Workerwx_video_download deploy bridge部署 Bridge 桥接/转发 Worker 和 Pages 管理页面三个子命令都从配置文件默认config.yaml读取参数通过viper获取对应配置项后调用各自的Deploy函数全程通过 Cloudflare REST API 完成无需本地安装 wrangler。命令执行期间会以 spinner 形式输出各阶段进度成功后打印部署摘要Worker 名称、ID、URL 等失败时给出明确的权限或配置提示。前置条件与通用配置无论部署哪个 Worker都需要先具备一个 Cloudflare 账号并取得Account ID和API TokenAPI Token 需包含Workers 相关的读写权限Workers Scripts:Edit部署公众号 Worker 时还需D1 数据库相关权限D1:Edit部署 Bridge 时还需Pages:Edit权限。通用的 Cloudflare 配置项如下配置文件模板见 internal/config/config.template.yamlcloudflare: accountId: your-cloudflare-account-id apiToken: your-cloudflare-api-token配置项说明cloudflare.accountIdCloudflare 账户 ID可在 Workers 页面找到cloudflare.apiTokenCloudflare API Token需 Workers 读写权限Account ID 与 API Token 是所有子命令的必填项。在源码层各Deploy函数都会在normalize_deploy_options阶段对这两个值做TrimSpace后校验非空缺任一项会直接返回未配置 cloudflare.accountId/未配置 cloudflare.apiToken错误例如 internal/workers/mp/deploy.go。deploy bridge部署 Durable Objects 桥接 Worker 与 Pages 管理页面deploy bridge一次部署两个部分用于桥接/转发远程调用的Durable Objects Bridge Worker以及受密码保护的Pages 管理页面。wx_video_download deploy bridge部署完成后的设备注册、调用 Token 创建、API 协议和多语言示例请参阅 Bridge 使用。bridge 的配置cloudflare: accountId: your-cloudflare-account-id apiToken: your-cloudflare-api-token bridge: deploy: workerName: dm-bridge pagesProjectName: # 留空时使用 dm-bridge-admin token: bridge-client-token adminToken: bridge-admin-token这里bridge.deploy.token与bridge.deploy.adminToken必须使用不同的高强度随机值。源码在 internal/workers/bridge/deploy.go 中强制校验两者都不可为空且不能相同bridge.deploy.adminToken 不能与 bridge.deploy.token 相同。pagesProjectName留空时默认取workerName -admin即dm-bridge-admin。部署流程与失败语义命令会依次执行对应 internal/workers/bridge/deploy.go 中的Deploy函数上传 Worker通过 pkg/cloudflare/durableobjects/deploy.go 上传bridge.js主模块配置名为BRIDGES的 Durable Object 绑定类名BridgeDurableObject存储后端为 SQLite并把bridge.deploy.token、bridge.deploy.adminToken分别写入BRIDGE_TOKEN、BRIDGE_ADMIN_TOKEN两个 secret启用并解析 workers.dev 子域调用 Cloudflare API 为 Worker 启用 workers.dev 路由并查询账户子域名拼出最终访问地址构建管理页面静态资源执行internal/workers/bridge/admin/build.sh产出 Pages 的dist目录创建或更新 Pages 项目把BRIDGE_ADMIN_TOKEN配置为 Pages Secret并建立指向该 Worker 的BRIDGEService Binding上传管理页面静态资源和高级模式 WorkerPages 目录中的_worker.js以高级模式部署作用于全部路由。任一步骤失败都会停止后续部署如果 Pages 阶段失败命令会明确提示Worker 已经部署成功不会回滚 Workercmd/deploy.go中打印“Bridge Worker 已部署请根据上面的 Pages 构建或 API 错误处理后重试”。部署成功后cmd/deploy.go会输出包含 Worker URL、健康检查地址/health、管理页面地址、管理 API/admin/api/overview、WebSocket 地址/v1/connect在内的完整摘要表并提示把 URL 与bridge.deploy.token写入每台设备的bridge.url与bridge.token管理页面使用用户名admin和bridge.deploy.adminToken登录。Bridge 的角色与本地 API从 internal/workers/bridge/README.md 可以完整了解 Bridge 的定位一个 Bridge 由一个人管理是连接外部调用方与多台操作系统设备的桥接/转发服务。它把统一的method args调用转发给合适的在线设备只保存调用参数、结果和下载元数据不代理或保存视频文件。任务采用“至少一次投递”分配时创建 120 秒租约执行设备定期续租连接中断后租约过期的任务会重新排队。设备侧配置示例bridge: enabled: true url: https://dm-bridge.account.workers.dev deviceId: mayfair-macbook deviceName: Mayfair MacBook token: BRIDGE_TOKEN httpTimeoutSeconds: 30 methods: autodeviceId在当前 Bridge 内必须唯一且稳定留空时程序使用系统主机名生产环境建议显式设置deviceName是管理页显示名称留空同样使用主机名methods是通用方法白名单auto发布全部已注册方法none只允许发布调用而不执行远程调用也可填写逗号分隔列表如wxchannels.fetch,wxchannels.contact.feed.list,download.create。本地状态接口为GET /api/bridge/status返回当前设备到个人 Bridge 的连接状态。管理页面每 5 秒刷新展示设备支持查看设备最近 7 天的连接/调用/心跳等事件日志并可创建、充值、设定期限、移除调用 Token。调用 Token 明文只在创建时显示一次Bridge 仅保存其 SHA-256 摘要Token 过期或移除后新请求立即返回401。deploy mp部署公众号 RSS/API Workerdeploy mp用于部署公众号 RSS/API 相关的 Cloudflare Worker适合把公众号订阅内容转成 RSS 或通过 REST API 拉取。wx_video_download deploy mpmp 的配置cloudflare: accountId: your-cloudflare-account-id apiToken: your-cloudflare-api-token workerName: mp-rss-api d1Name: mp-rss-db refreshToken: refresh-token adminToken: admin-token mp: remoteServer: hostname: your-remote-server-hostname配置项说明cloudflare.workerName公众号 Worker 名称cloudflare.d1NameD1 数据库名称命令会按名称查找不存在时会创建cloudflare.d1IdD1 数据库 ID未配置d1Name时可直接指定cloudflare.refreshToken刷新公众号授权凭证接口所需 Tokencloudflare.adminToken管理员接口所需 Tokenmp.remoteServer.hostname注入到 Worker 的远端服务地址模板中的默认值为workerName: mp-rss-api、d1Name: mp-rss-db见 internal/config/config.template.yaml。注意部署 mp 时 API Token 需要Workers Scripts:Edit 与 D1:Edit权限。部署内容与 D1 迁移机制部署内容对应 internal/workers/mp/deploy.go部署嵌入internal/workers/mp/index.js的 Worker//go:embed index.js执行嵌入internal/workers/mp/migrations/的 D1 迁移//go:embed migrations/*.sql实际迁移文件为internal/workers/mp/migrations/0001_init.sql注入 D1 绑定DB以及ADMIN_TOKEN、REFRESH_TOKEN、REMOTE_SERVER三个环境变量均为plain_text绑定。D1 数据库的处理逻辑值得注意当配置了d1Name时命令先调用 D1 API 按名称查找数据库找不到则自动创建随后验证数据库连接并执行迁移。迁移采用自建的d1_migrations记录表CREATE TABLE IF NOT EXISTS d1_migrations (...)按文件名前缀的数字 ID 增量执行已执行过的迁移会跳过见 internal/workers/mp/deploy.go。如果迁移失败命令不会中止部署而是把MigrationWarning放入部署结果并在成功输出中提示。若既未配置d1Name也未配置d1Id部署会直接报错拒绝执行。公众号 Worker 的可用 APIMethodPath说明GET/api/mp/list获取公众号列表GET/api/mp/msg/list获取公众号消息列表POST/api/mp/refresh刷新/同步公众号信息POST/admin/token/add添加访问 TokenPOST/admin/token/delete删除访问 TokenGET/rss/mpRSS 订阅地址其中/api/mp/refresh需要 Refresh Token/admin/token/*需要 Admin Token/rss/mp通过biz参数指定公众号这些细节同样体现在 cmd/deploy.go 部署成功后打印的 API 列表中。deploy sph部署视频号查询 Workerdeploy sph把视频号视频信息查询页面部署为 Cloudflare Worker提供 Web 界面查询视频号视频的下载地址。wx_video_download deploy sph注意文档明确警告不要提供给外部使用仅自己使用即可有被限制使用 yuanbao 的风险。sph 的配置cloudflare: accountId: your-cloudflare-account-id apiToken: your-cloudflare-api-token sphWorkerName: worker-name sphCookie: 元宝 web 端 cookie sphCredential: 页面及 API 的访问凭证配置项说明cloudflare.accountIdCloudflare 账户 ID可在 Workers 页面找到cloudflare.apiTokenCloudflare API Token需 Workers 读写权限cloudflare.sphWorkerName视频号查询 Worker 名称部署后标识该 Workercloudflare.sphCookie视频号接口所需的元宝 Web 端 Cookiecloudflare.sphCredential访问页面和 API 所需的凭证部署时注入ACCESS_CREDENTIAL环境变量元宝 Web 端指https://yuanbao.tencent.com/网站登录后获取cookie填入sphCookie即可。元宝 Web 端 Cookie 有效期约1 个月失效后需要重新登录获取新的 Cookie并到 Cloudflare Worker 更新COOKIE环境变量。源码对必填项的校验更严格internal/workers/sph/deploy.go除 Account ID、API Token、Worker 名称外sphCredential也是必填项未配置时部署命令会直接拒绝未配置 cloudflare.sphCredential。部署内容部署嵌入internal/workers/sph/worker.js的 Worker//go:embed worker.js同时上传嵌入的internal/workers/sph/index.html和build/icon.png图标会先被 base64 编码为一个icon.jsES 模块再随 multipart 上传Cookie 以COOKIE环境变量注入 Worker用于调用视频号接口时的身份认证访问凭证以ACCESS_CREDENTIAL环境变量注入 Worker。访问认证浏览器访问 Worker 时会显示HTTP Basic Auth 登录框。用户名固定为wxchannels密码填写cloudflare.sphCredential。登录后页面对同源 API 的请求会自动携带认证信息。认证逻辑在 internal/workers/sph/worker.js 中实现页面与静态资源公开/api/*路径必须认证Worker 未配置ACCESS_CREDENTIAL时返回503凭证不匹配返回401。凭证校验通过 SHA-256 摘要比对完成不传输明文。直接调用 API 时可使用 Bearer Tokencurl -H Authorization: Bearer sphCredential \ -H Content-Type: application/json \ -d {url:https://weixin.qq.com/sph/example} \ https://worker-name.subdomain.workers.dev/api/fetch_video_profile也可使用 Basic Authcurl -u wxchannels:sphCredential ...。视频号查询 Worker 的可用 APIMethodPath说明GET/视频号视频信息查询页面GET/favicon.ico页面图标GET/icon.png页面图标POST/api/fetch_video_profile通过分享链接获取视频号视频信息POST/api/download_feed_zip将图集及 BGM 打包为 ZIP除 CORS 预检OPTIONS请求外以上 API 均需认证认证失败返回401Worker 未配置ACCESS_CREDENTIAL时返回503。其中/api/fetch_video_profile的实现链路见 internal/workers/sph/worker.js分两步先用元宝 Web 端接口解析分享链接得到wx_export_id与播放地址中的token/eid再调用微信视频号预览接口get_feed_info拉取视频详情/api/download_feed_zip则会把图集图片与 BGM 抓取后由 Worker 内实现的纯 JS ZIP 打包器生成压缩包返回。部署命令的底层实现Cloudflare REST API 封装三条子命令最终都通过仓库内置的 Cloudflare API 客户端完成上传这些客户端位于 pkg/cloudflare 下pkg/cloudflare/worker/deploy.goWorkers Scripts Upload API 封装。以multipart/form-data上传 ES 模块包含metadata与主模块、附加文件支持配置兼容日期、Bindings、ExportsPutSecret写入 secretEnableSubdomain启用 workers.dev 路由GetSubdomain查询账户子域名以拼出最终 URLpkg/cloudflare/pages/deploy.goPages Direct Upload 封装。EnsureProject保证项目存在并写入 Secret 与 Service Binding随后校验并上传静态资源、创建生产部署若目录含_worker.js则以 Pages 高级模式部署并自动补齐默认路由规则pkg/cloudflare/durableobjects/deploy.goBridge 专用负责创建/更新 Durable Object 命名空间与 SQLite 存储绑定。所有 HTTP 请求都使用Authorization: Bearer apiToken头访问https://api.cloudflare.com/client/v4请求头、超时、multipart 构造与错误解析均由这些客户端统一处理这也是命令无需本地 wrangler 的原因。常见问题与排错思路结合源码中的校验与错误分支可归纳以下排错要点未配置 cloudflare.accountId/未配置 cloudflare.apiToken先检查config.yaml中通用 Cloudflare 配置是否填写、是否有多余空格部署 mp 报 D1 相关错误确认 API Token 包含D1:Edit权限源码在 D1 API 返回7500或SQLITE_AUTH错误时会额外提示“请检查 Account → D1:Edit 权限及数据库所属账户”internal/workers/mp/deploy.go部署 bridge 报adminToken 不能与 token 相同两个 Token 必须是不同的高强度随机值部署 sph 被拒绝cloudflare.sphCredential为必填项未配置时命令不会执行部署Bridge Pages 阶段失败但 Worker 已成功命令不会回滚 Worker按输出中的错误处理后重新执行命令即可重复部署会更新代码并保留 Bridge 的设备登记与任务数据sph 查询失效元宝 Web 端 Cookie 约 1 个月过期重新登录后在 Cloudflare 控制台更新 Worker 的COOKIE环境变量即可。小结wx_video_download deploy把公众号 RSS/APImp、视频号查询页面sph、Bridge 桥接服务bridge三条 Cloudflare 部署链路统一收敛为一条本地命令。使用时只需在 internal/config/config.template.yaml 基础上填写 Account ID、API Token 及各业务专用配置命令即可按阶段完成 Worker 上传、secret/绑定注入、D1 迁移、Pages 部署与 workers.dev 地址解析并在终端输出完整的部署摘要与可用 API 列表。部署完成后公众号 Worker 的接口见上文 API 表Bridge 的设备注册、调用 Token 与调用协议参见 docs/feature/bridge.md视频号查询页面则直接通过浏览器或 curl 使用即可。赞分享桌面应用视频网络MCP 服务【免费下载链接】wx_channels_download微信视频号下载器项目地址https://gitcode.com/gh_mirrors/wx/wx_channels_download点击查看免费下载相关推荐wx_channels_download Cloudflare 配置指南公众号 mp-rss Worker 部署参数详解wx_channels_download Cloudflare 配置指南公众号 mp rss Worker 部署参数详解 本文围绕 wx_channels_d桌面应用视频网络MCP 服务微信视频号下载器deploy sph 视频号查询 Worker 部署指南与实现原理微信视频号下载器 deploy sph 视频号查询 Worker 部署指南与实现原理 导读 本文围绕微信视频号下载器项目中 internal/workers/桌面应用视频网络MCP 服务wx_channels_download Bridge 管理页实战指南Cloudflare Pages 架构、Basic Auth 与一键部署wx_channels_download Bridge 管理页实战指南Cloudflare Pages 架构、Basic Auth 与一键部署 Bridge桌面应用视频网络MCP 服务上一篇Haystack Routers 路由组件深度指南用条件路由与类型路由构建可决策的 LLM Pipeline下一篇langchain/mistralai 集成实战在 LangChain.js 中接入 Mistral 聊天模型、嵌入与代码补全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表