获取视频号用户作品列表/Get WeChat Channels User Videos

WeChat Channelsapi

About

获取视频号用户作品列表/Get WeChat Channels User Videos

Documentation

获取视频号用户作品列表/Get WeChat Channels User Videos

[中文]

用途:

  • 获取指定视频号账号主页的作品列表。
  • 每个视频带媒体地址 media(含 url / url_token / full_url / decode_key),可直接下载并解密。
  • 支持翻页获取更多作品。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 id / object_nonce_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • username: 视频号 finder username(v2_…@finder 格式),示例 v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。来源见 fetch_channel_info / fetch_video_detail / fetch_channel_id_to_username 文档。
  • last_buffer: 可选,翻页游标(base64)。首页留空;当响应 up_continue 为真时,传上一页响应的 last_buffer 取下一页。(base64 含 +//= 等字符,故走 body 而非 query。)
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。

返回:

  • 用户作品列表及翻页游标

响应结构与 JSON Path:

raw=false(精简,推荐):

  • 顶层: $.data.username / $.data.nickname / $.data.count(本页视频数)/ $.data.up_continue(是否有下一页)/ $.data.last_buffer(翻页游标)
  • 每个视频 $.data.videos[N](N 为下标):
    • id(作品 objectId,喂 fetch_video_detail / fetch_video_comments): $.data.videos[N].id
    • object_nonce_id: $.data.videos[N].object_nonce_id
    • username / nickname / title: $.data.videos[N].username
    • 互动计数: $.data.videos[N].read_count / .like_count / .fav_count / .forward_count / .comment_count
    • 发布时间: $.data.videos[N].create_time
    • 位置: $.data.videos[N].location

raw=true(原始):

  • 状态码: $.data.baseResponse.ret
  • 视频数组(注意是 object 单数,camelCase): $.data.object[N]
  • 翻页: $.data.upContinueFlag$.data.lastBuffer(另附别名 $.data.last_buffer
  • 账号资料: $.data.contact(昵称/签名/认证 authInfo 等)、$.data.finderUserInfo
  • 对应关系: raw=false 的 videos[] 对应 raw=true 的 object[]nickname 取自 finderUserInfo / contact.nickname

重要提示(视频下载与解密):

  • 直接访问响应里的 url 可能打不开视频页面 —— 微信视频号做了防盗链。把 urlurl_token 拼成完整 URL 再用任意 HTTP 客户端下载(能打开 = HTTP 200,不代表能播放,文件是加密的)。
  • ⚠️ 视频文件加密说明: 下载的 MP4 若无法播放即为加密文件。请使用接口返回的 decode_key 字段和加密视频文件进行解密。
  • ⚠️ 重要: 微信每次请求都返回新的加密链接和 decode_key(即使同一视频)。务必保证 decode_key 与下载的加密文件来自同一次 API 响应,否则解密失败。
  • JSON Path(逐个视频取 —— N 为下标):
    • raw=false推荐做媒体下载)—— $.data.videos[N].media 是单个对象:
      • 视频 CDN 链接(不带 Token): $.data.videos[N].media.url
      • 视频 CDN 链接的 Token: $.data.videos[N].media.url_token
      • 拼接好的完整 CDN URL(= url + url_token,可直接用): $.data.videos[N].media.full_url
      • 视频解密密钥(每次请求都不一样): $.data.videos[N].media.decode_key
    • raw=true —— media 嵌在 $.data.object[N].objectDesc.media[0](camelCase: url / urlToken / decodeKey,完整 URL = url + urlToken)。做媒体下载建议直接用 raw=false,路径更干净。
  • 在线解密工具: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
  • 可自行部署的解密 API(Docker 一键部署): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption

[English]

Purpose:

  • Get the video list from a WeChat Channels account's homepage.
  • Each video carries a media object (url / url_token / full_url / decode_key) ready for download and decryption.
  • Supports pagination for more videos.
  • Price: $0.01 per request
  • ⏱️ Due to WeChat server latency, this endpoint responds slowly; please set your client request timeout to 30 seconds — a timeout that is too small may result in being billed without receiving the response.
  • ⚠️ Large-integer ID precision: IDs such as id / object_nonce_id in the response are 64-bit big integers beyond JavaScript's safe-integer range (2^53-1). Always receive / pass such IDs as strings (parse JSON with json-bigint or read them as text), never through JS Number. Swagger UI rounds the trailing digits of huge integers in its docs view — this is expected and does not affect the actual data returned by the API.

Parameters:

  • username: WeChat Channels finder username (v2_…@finder format), e.g. v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder (People's Daily). See fetch_channel_info / fetch_video_detail / fetch_channel_id_to_username docs for how to obtain it.
  • last_buffer: Optional pagination cursor (base64). Leave empty for the first page; when up_continue in the response is truthy, pass the previous page's last_buffer to get the next page. (base64 contains +//= characters, hence body instead of query.)
  • raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).

Return:

  • User video list with pagination cursor

Response structure & JSON Path:

raw=false (simplified, recommended):

  • Top level: $.data.username / $.data.nickname / $.data.count (videos on this page) / $.data.up_continue (has next page) / $.data.last_buffer (pagination cursor)
  • Each video $.data.videos[N] (N is the index):
    • id (video objectId, feed into fetch_video_detail / fetch_video_comments): $.data.videos[N].id
    • object_nonce_id: $.data.videos[N].object_nonce_id
    • username / nickname / title: $.data.videos[N].username etc.
    • Interaction counts: $.data.videos[N].read_count / .like_count / .fav_count / .forward_count / .comment_count
    • Publish time: $.data.videos[N].create_time
    • Location: $.data.videos[N].location

raw=true (raw):

  • Status code: $.data.baseResponse.ret
  • Video array (note: singular object, camelCase): $.data.object[N]
  • Pagination: $.data.upContinueFlag, $.data.lastBuffer (alias $.data.last_buffer also provided)
  • Account profile: $.data.contact (nickname/signature/authInfo etc.), $.data.finderUserInfo
  • Mapping: videos[] of raw=false corresponds to object[] of raw=true; nickname comes from finderUserInfo / contact.nickname.

Important Note (video download & decryption):

  • Accessing the url field directly may fail to open the video page — WeChat Channels uses anti-hotlinking. Concatenate url and url_token into a full URL and download via any HTTP client (opening = HTTP 200, does not mean playable, the file is encrypted).
  • ⚠️ Video Encryption Notice: If the downloaded MP4 cannot be played, it is encrypted. Use the decode_key field from the response together with the encrypted file to decrypt it.
  • ⚠️ Important: WeChat returns a new encrypted link and decode_key on every request (even for the same video). Make sure the decode_key and the downloaded encrypted file come from the same API response, otherwise decryption will fail.
  • JSON Path (per video — N is the index):
    • raw=false (recommended for media download) — $.data.videos[N].media is a single object:
      • Video CDN link (without Token): $.data.videos[N].media.url
      • Token of the video CDN link: $.data.videos[N].media.url_token
      • Pre-concatenated full CDN URL (= url + url_token, ready to use): $.data.videos[N].media.full_url
      • Video decryption key (different on every request): $.data.videos[N].media.decode_key
    • raw=true — media is nested at $.data.object[N].objectDesc.media[0] (camelCase: url / urlToken / decodeKey, full URL = url + urlToken). For media download, prefer raw=false for cleaner paths.
  • Online decryption tool: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
  • Self-deployable decryption API (one-click Docker deployment): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption

Imported from a validated TikHub OpenAPI document. Pricing must be reviewed before enabling.

Try 获取视频号用户作品列表/Get WeChat Channels User Videos

Test this model in the Sandbase Playground with your own prompts.

Open in Playground

Related Models