即刻发帖如何带上圈子:submitToTopic 字段解谜

用 AI 自动发即刻(Jike)帖子时,怎么让帖子发到指定圈子?答案是发帖 body 里用 submitToTopic 字段——不是 topicIds,也不是 topicId。本文记录完整踩坑与解决过程。日期:2026-08-12。

问题背景

在「即刻发布管理」工作流中,需要让 AI 代发帖子到指定圈子(如「AI探索站」「浴室沉思」)。但直接调用即刻 API 发帖时,帖子总是发成”个人动态”,圈子参数怎么传都不生效。

踩坑过程

❌ 尝试 1:topicIds(数组)

payload = {
    "content": "内容",
    "topicIds": ["63579abb6724cc583b9bba9a"],  # AI探索站
}

结果:报 400 错误(请求错误)。

❌ 尝试 2:topicId(单数)

payload = {"content": "内容", "topicId": "63579abb6724cc583b9bba9a"}

结果:发帖成功,但圈子没挂上(帖子是个人动态,无圈子)。

❌ 尝试 3:topics(对象数组)

payload = {"content": "内容", "topics": [{"id": "63579abb6724cc583b9bba9a"}]}

结果:报 400 错误

✅ 正确做法:submitToTopic

payload = {
    "content": "内容",
    "pictureKeys": [],
    "syncToPersonalUpdate": True,
    "submitToTopic": "63579abb6724cc583b9bba9a",  # 圈子 id
}

结果:发帖成功,圈子正确挂上(验证返回 topic 为「AI探索站」)。

答案从哪来

这个字段不是文档里写的,是从 GitHub 开源项目 open-jike/jike-sdk 的源码里找到的:

// src/api/posts.ts
request.post(`1.0/${type}/create`, {
  json: {
    content,
    pictureKeys: options.pictureKeys ?? [],
    syncToPersonalUpdate: options.syncToPersonalUpdates ?? true,
    submitToTopic: options.topicId,  // ← 圈子字段
    linkInfo: options.linkInfo,
  },
})

jike-sdk 是即刻非官方 SDK,作者逆向研究了即刻 App 的 API(api.ruguoapp.com),CreatePostOption.topicId 对应请求体的 submitToTopic 字段——字面意思就是”提交到圈子”。

如何获取圈子 id

# 搜索圈子名
POST /1.0/search/integrate
body: {"keyword": "AI探索站", "limit": 10}
# 返回 data 里 type == "TOPIC" 的项的 id 就是圈子 id

关键经验

  1. 字段名要精确topicIds / topicId / topics 都是错的,正确的是 submitToTopic。API 字段名和直觉不同时,查源码比猜更有效。
  2. 开源 SDK 是宝藏:当官方文档缺失时,社区逆向的 SDK(jike-sdk、okjike-cli 等)直接给出了可用的请求结构。
  3. 先小步验证:发测试帖确认圈子挂上后再发正式内容,避免把正式帖子发成无圈子动态。

相关文章