DK
Social API

DK Social API Docs

公开 API 文档

本页供智能体和开发者理解 DK 工具的 REST API、MCP 接入、API Key、分页、调用日志和积分扣减方式。

当前公开工具覆盖 XHS、DY、KS、SPH。工具、参数、返回字段、扣费、分页或错误码变化后,必须同步更新本页。

API Key
登录用户端后创建或重置 API Key。完整 Key 只显示一次,请妥善保存。
REST API
统一使用 POST /api/tools/{toolName},请求体为 UTF-8 JSON。
MCP
智能体可通过 /mcp 读取工具清单并调用工具。
调用日志
用户端保留调用日志,便于查看状态、耗时、traceId 和积分扣减。

分页规则

自然页

列表工具返回当前数据页的全部有效记录,不承诺固定 20 条。请以 resultCount 为本页实际条数。

下一页

第 1 页不传 pageToken;下一页只传 data.pagination.nextPageToken,不要解析或修改。

停止条件

hasMore=false 或 nextPageToken 为空时停止。短页不等于失败。

响应契约

REST 正式响应外层为 `creditsUsed`、`creditsRemaining`、`traceId`、`durationMs` 和 `data`。 业务列表位于 `data.items`,分页位于 `data.pagination`。MCP 调用的业务结果位于 `result.structuredContent.data`,积分与追踪信息位于 `result.structuredContent.creditsUsed`、 `result.structuredContent.creditsRemaining` 和 `result.structuredContent.traceId`。旧客户端不得继续读取 `photo_id`、`pcursor` 等来源字段,应按客户端迁移 JSON 改为 DK 标准字段。

安全引用与 MCP 错误

加密引用

authorRef 和 pageToken 是 DK 加密引用,只能原样回传,不要解析、修改或写入公开日志。XHS 搜索或详情返回的 authorRef 可直接作为作者工具的 author_id。XHS 搜索返回 desktopUrl 时可作为官方 PC 内容链接直接使用。

MCP 业务错误

MCP 的 error.code 是 JSON-RPC 传输码;DK 业务错误码读取 error.data.code,并按该值处理 NO_RESULTS、RATE_LIMITED 等状态。

REST 调用示例
curl -X POST "https://api.dk-ai.tech/api/tools/xhs_search_notes" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json; charset=utf-8" \
  --data-binary '{"keyword":"\u5496\u5561"}'
REST 响应外层示例
{
  "creditsUsed": 20,
  "creditsRemaining": 9980,
  "traceId": "trace_xxx",
  "durationMs": 1280,
  "data": {
    "items": [
      {
        "contentId": "example_content_id",
        "title": "示例标题",
        "contentSummary": "搜索列表返回的正文摘要",
        "contentUrl": "https://www.xiaohongshu.com/explore/example_content_id",
        "desktopUrl": "DK 返回的官方 PC 内容链接"
      }
    ],
    "resultCount": 1,
    "pagination": {
      "hasMore": true,
      "nextPageToken": "NEXT_PAGE_TOKEN",
      "cursorParam": "pageToken"
    }
  }
}
MCP 配置示例
{
  "mcpServers": {
    "dk-social": {
      "url": "https://api.dk-ai.tech/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
MCP 结果读取
// MCP tools/call 返回后:
const execution = result.structuredContent
const data = execution.data
const items = data.items
const nextPageToken = data.pagination?.nextPageToken
const creditsUsed = execution.creditsUsed
const creditsRemaining = execution.creditsRemaining
const traceId = execution.traceId
抓 5 页并落盘
import requests

api_key = "YOUR_API_KEY"
page_token = None

for page in range(1, 6):
    payload = {"keyword": "咖啡"}
    if page_token:
        payload["pageToken"] = page_token

    response = requests.post(
        "https://api.dk-ai.tech/api/tools/xhs_search_notes",
        headers={"Authorization": f"Bearer {api_key}"},
        json=payload,
        timeout=60,
    )
    envelope = response.json()
    data = envelope["data"]
    items = data["items"]
    pagination = data.get("pagination") or {}

    append_items_to_csv(items)
    save_checkpoint(page, envelope)

    page_token = pagination.get("nextPageToken")
    if not pagination.get("hasMore") or not page_token:
        break
抓 20 页、保存 checkpoint 并续跑
import json
from pathlib import Path

import requests

api_key = "YOUR_API_KEY"
output = Path("results.jsonl")
checkpoint = Path("checkpoint.json")
state = json.loads(checkpoint.read_text("utf-8")) if checkpoint.exists() else {"page": 0, "pageToken": None}

for page in range(state["page"] + 1, 21):
    body = {"keyword": "咖啡"}
    if state["pageToken"]:
        body["pageToken"] = state["pageToken"]

    response = requests.post(
        "https://api.dk-ai.tech/api/tools/dy_search_videos",
        headers={"Authorization": f"Bearer {api_key}"},
        json=body,
        timeout=60,
    )
    response.raise_for_status()
    envelope = response.json()
    data = envelope["data"]

    with output.open("a", encoding="utf-8") as file:
        for item in data["items"]:
            file.write(json.dumps(item, ensure_ascii=False) + "\n")

    pagination = data.get("pagination") or {}
    state = {"page": page, "pageToken": pagination.get("nextPageToken")}
    checkpoint.write_text(json.dumps(state, ensure_ascii=False), encoding="utf-8")

    if page % 5 == 0:
        print(f"checkpoint saved after page {page}")
    if not pagination.get("hasMore") or not state["pageToken"]:
        break
DK Skill 复制模板
# DK Skill

请先读取并学习 DK 工具文档:https://dk-ai.tech/docs

接入规则:
1. 简单任务优先用 MCP 读取工具清单并少量调用。
2. 中大型任务使用 REST API 分页抓取,每页落盘到 CSV/JSONL 后再汇总。
3. 中文关键词使用 UTF-8 JSON;终端不稳定时可以使用 Unicode escape。
4. 列表工具第 1 页不传 pageToken;下一页只传 data.pagination.nextPageToken。
5. REST 正式响应外层是 creditsUsed、creditsRemaining、traceId、durationMs、data。
6. REST 业务结果位于 envelope["data"],列表位于 data["items"],分页位于 data["pagination"]。
7. MCP 业务结果位于 result.structuredContent.data;积分和追踪信息位于 result.structuredContent.creditsUsed、creditsRemaining、traceId。
8. XHS 搜索返回 contentSummary,表示正文摘要;完整正文请调用 xhs_get_note_detail。
9. XHS 搜索返回 desktopUrl 时,这是官方 PC 内容链接;可直接打开或写表,不要解析、改写或拆出其中参数。
10. 每次记录 toolName、page、pageToken、nextPageToken、traceId、creditsUsed、creditsRemaining、resultCount。
11. NO_RESULTS 停止或更换关键词;CONTENT_NOT_FOUND 检查内容 ID 或公开状态;RATE_LIMITED 等待后重试;INSUFFICIENT_CREDITS 提示补充积分。

学会配置后,先告诉用户你已理解接入方式、分页策略和所需参数,再让用户单独提供 DK_API_KEY。

当前已开放工具

工具名平台用途主要参数积分
xhs_get_primary_commentsXHSXHS 一级评论,仅用于公开信息调研。note_id, pageToken20/页
xhs_get_author_notesXHSXHS 作者作品列表,仅用于公开信息调研。author_id, pageToken20/页
xhs_get_author_profileXHSXHS 作者资料,仅用于公开信息调研。author_id10/次
xhs_get_note_commentsXHSXHS 公开评论,仅用于公开信息调研。note_id, pageToken20/页
xhs_search_notesXHSXHS 内容搜索,仅用于公开信息调研。keyword, pageToken20/页
xhs_get_note_detailXHSXHS 内容详情,仅用于公开信息调研。note_id, note_url, url, note_type10/次
dy_get_author_profileDYDY 作者资料,仅用于公开信息调研。author_id10/次
dy_get_video_commentsDYDY 公开评论,仅用于公开信息调研。video_id, pageToken20/页
dy_search_videosDYDY 内容搜索,仅用于公开信息调研。keyword, pageToken20/页
dy_get_video_detailDYDY 内容详情,仅用于公开信息调研。video_id10/次
dy_get_video_by_share_urlDYDY 分享链接解析,仅用于公开信息调研。share_url10/次
dy_get_hot_search_listDYDY 热搜榜,仅用于公开信息调研。none20/页
dy_get_hot_video_listDYDY 热门内容榜,仅用于公开信息调研。none20/页
dy_get_author_videosDYDY 作者作品列表,仅用于公开信息调研。author_id, pageToken20/页
sph_get_author_homepageSPHSPH 作者主页内容,仅用于公开信息调研。author_id, pageToken20/页
sph_get_video_detailSPHSPH 内容详情,仅用于公开信息调研。video_id, export_id, contentRef10/次
sph_get_video_by_share_urlSPHSPH 分享链接解析,仅用于公开信息调研。share_url10/次
ks_get_video_commentsKSKS 公开评论,仅用于公开信息调研。photo_id, video_id, pageToken20/页
ks_get_video_by_urlKSKS 分享链接解析,仅用于公开信息调研。share_url10/次
ks_search_videosKSKS 内容搜索,仅用于公开信息调研。keyword, pageToken20/页
ks_get_video_detailKSKS 内容详情,仅用于公开信息调研。photo_id, video_id10/次
ks_get_author_videosKSKS 作者作品列表,仅用于公开信息调研。author_id, pageToken20/页

标准返回字段

DK 会补齐稳定标准字段,方便前端和智能体消费。字段只有在数据页返回时才有值;缺失时返回 null, 不用 0 或空字符串伪造。普通公开工具不返回敏感账号标识、受保护媒体字段或内部信息。

账号字段
avatarbioverifiedverifyInfofollowersCountfollowingCountlikedCountcollectedCountpostCountlocation
内容字段
contentIdcoverUrltitlecontentSummarycontentcontentCompletepublishTimelikeCountcollectCountcommentCountshareCountviewCountimageUrlstagscontentUrldesktopUrl
评论字段
commentIduserNameuserAvatarcommentTextlikeCountreplyCountcommentTimeipLocationisAuthorReplyisSticky

能力目录

公开能力范围
具体可用范围以账号权限和管理员开通状态为准。

XHS

6 个公开工具

  • 内容搜索
  • 内容详情
  • 作者资料
  • 作者作品
  • 公开评论

DY

8 个公开工具

  • 内容搜索
  • 趋势列表
  • 内容详情
  • 分享链接解析
  • 作者资料
  • 作者作品
  • 公开评论

KS

5 个公开工具

  • 内容搜索
  • 内容详情
  • 分享链接解析
  • 作者作品
  • 公开评论

SPH

3 个公开工具

  • 内容详情
  • 分享链接解析
  • 作者主页
公开 JSON
智能体可以直接读取这些链接。
DK 工具目录 JSONDK 积分说明 JSONDK 客户端字段迁移 JSON

用户端按积分结算。每个工具的当前扣费以运行时积分说明和调用日志为准。