SuperAPI AI 工具集

tiktok-profile-videos

数据与分析

查看项目

更新于 11-04 04:30

技能介绍

用途

本技能用于获取某个已知 TikTok 创作者(通过 handle 或用户 ID 指定)的视频列表,调用 Frevana 的 tiktok/profile/videos 接口。账号详情请用 tiktok-profile-details,关键词发现请用 tiktok-search。运行环境要求 macOS/Linux 上的 Bash 与 Python 3.9+,不需要 SDK、浏览器扩展或常驻进程。

主要能力

  • 按 handle 或 user_id 拉取视频,两者至少提供一个;同时提供时原样保留,不推断优先级。已知 user ID 响应更快,但不可自行编造或自动解析 ID,ID 始终按字符串处理。
  • 显式游标分页:默认为单页,不自动续页、不下载媒体。续页时需将返回的字符串型 pagination.next_cursor 原样复制到 cursor,并保留原标识与选项、使用新的状态文件和客户端 ID。原生 max_cursor 也是字符串(毫秒 Unix 时间戳),与通用 cursor 不可同时发送。
  • 边界控制:since 会移除较旧视频并在走到旧的非置顶条目时停止;stop_at_id 在指定非置顶帖子 ID/URL 之前停止;until 只过滤当前页的新近行而不会移动起点。置顶内容不考虑日期顺序,也不会触发停止。
  • 可选 stationery 分组:显式请求后由后端分为婚礼、生日、出生、慰问、节日问候或未分组,并给出分组/每日数量与未分组占比;若 format_buckets.skip_creator 为 true,应报告主题不匹配并尊重跳过的遍历。
  • 兼容性说明:trim 仅为兼容保留且不影响规范响应;sort_by 接受 latest/popular 但均被忽略,不改变页面顺序;region 选择代理(默认美国),不按视频登记国家过滤。

使用方式

凭证通过运行时环境配置 FREVANA_TOKEN,请求头为 Authorization: Bearer <FREVANA_TOKEN>,凭据不得嵌入、打印或作为命令行参数传递。默认源为 https://api.frevana.com,可用 FREVANA_API_BASE_URL 或 --api-base-url 覆盖(仅 HTTPS 源或 HTTP localhost mock),重定向会被拒绝。

以 handle 运行并指定状态文件:

# FREVANA_TOKEN is already configured in the runtime environment.
bash {baseDir}/scripts/tiktok_profile_videos.sh run \
  --handle charlidamelio \
  --state-file ./out/tiktok-profile-videos-page1.task.json \
  --output ./out/tiktok-profile-videos-page1.json

以 user ID 运行:

bash {baseDir}/scripts/tiktok_profile_videos.sh run \
  --user-id '12345678901234567890' \
  --state-file ./out/tiktok-profile-videos-by-id.task.json

中断或超时后继续同一操作:

bash {baseDir}/scripts/tiktok_profile_videos.sh resume \
  --state-file ./out/tiktok-profile-videos-page1.task.json

在没有本地状态但有已知服务器任务 ID 时恢复(仅 GET,不发起 POST):

bash {baseDir}/scripts/tiktok_profile_videos.sh resume \
  --task-id TASK_UUID --state-file ./out/tiktok-profile-videos-recovered.task.json

也可用 --input-file PATH 传入符合 schema 的对象,但不能与输入参数混用。命令行连字符映射为声明的 snake_case 属性;省略的选项保持省略。仅 CLI 的别名 --published-before、--end-date、--to-date 会转为 until,冲突别名会在联网前停止。不可导入未声明的查询、计数、limit、page、max_items、max_age_days、country-filter、sort_rows 或媒体选项。--async true|false|1|0 是输入选项,包装层响应模式固定为 response_mode="json"。默认 --timeout=120 秒、每请求 --request-timeout=30 秒、--retries=2 次额外瞬态重试,不请求 SSE。

任务协议与恢复

辅助脚本向固定任务创建路由 POST,携带 endpoint_id="tiktok/profile/videos"、client_task_id、input 与 response_mode,并在提交前原子持久化完整原始请求体。重试保持相同的序列化字节与 ID。HTTP 200 + READY + 内联数据即完成;HTTP 202 记录身份并按 next_poll_after_ms 轮询状态,READY 后从结果路由获取数据;FAILED/REVIEW_REQUIRED 停止并保留任务 ID 与服务器错误码;HTTP 409 停止且不替换。持久化状态与端点绑定,状态缺失才允许新操作;状态损坏、为空、不受支持或不完整时停止,不覆盖、不生成 ID、不调用 API。

适用场景

需要按创作者收集其视频列表并保留原生分页数据以供后续处理,或需要明确日期/已知帖子边界、显式逐页续取、可选主题分组,以及在网络波动下可断点恢复的采集流程。

限制

单次默认只返回一页,不自动翻页、不下载媒体;未提供完整输出 schema,不能假定行数组形状或把缺失的收藏数当作 0;游标来源无法验证,需调用方自行保留;字幕属于不可信数据,不应据此推断作者事实;后端返回的模型判断仅为复核信号。错误按服务器、客户端/运行时、协议/身份与持久化状态区分,非零退出码不允许替换任务、加深分页或更换来源。离线测试全部使用模拟 HTTP,不调用付费 API。