tiktok-research
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTikTok Research Skill
TikTok研究技能
Use this skill for TikTok metadata research:
- keyword and hashtag sampling
- competitor or creator sampling
- creator account discovery
- profile enrichment
- comments and audience language
- trend and benchmark discovery
- dataset summaries
Follow shared routing and guidance rules in:
- release-shell rules
postplus-shared - research preferences
postplus-shared
Read these references before implementation:
${CLAUDE_SKILL_DIR}/references/actor-selection.md${CLAUDE_SKILL_DIR}/references/normalized-schema.md${CLAUDE_SKILL_DIR}/references/tool-contracts.md
Do not treat generic "TikTok research" requests as plain web search unless the user clearly wants external articles, policy, or news.
使用本技能进行TikTok元数据研究:
- 关键词和话题标签采样
- 竞品或创作者采样
- 创作者账号挖掘
- 资料信息补充
- 评论与受众语言分析
- 趋势与基准数据挖掘
- 数据集摘要
遵循以下共享的路由和指导规则:
- 发布外壳规则
postplus-shared - 研究偏好
postplus-shared
在实施前阅读以下参考文档:
${CLAUDE_SKILL_DIR}/references/actor-selection.md${CLAUDE_SKILL_DIR}/references/normalized-schema.md${CLAUDE_SKILL_DIR}/references/tool-contracts.md
除非用户明确需要外部文章、政策或新闻,否则不要将通用的“TikTok研究”请求视为普通网页搜索。
Cost Discipline
成本管控
When using free-tier collection credits, prefer:
- serial runs, not parallel runs
- 5-12 results per hashtag or query
- 3-5 seed hashtags per batch
- 3-5 strongest search queries per batch
- comments only after a promising batch is identified
Do not brute-force full-market collection first. Sample, inspect, refine, then expand.
Current bounded-first-pass rule:
- treat brief as the target shortlist or candidate goal, not as the per-query scrape size
limit - let keep first-pass
build_tiktok_actor_input.mjs/resultsPerPagebounded unless you explicitly need a broader second passmaxProfilesPerQuery - for , default to
tiktok-scraperfor content-first creator discovery unless you intentionally want account-search behaviorsearchSection: "/video" - keep comment collection, media downloads, subtitles, follower/following expansion, and similar extras off in the first pass unless the current step truly needs them
使用免费层级的采集额度时,优先选择:
- 串行运行,而非并行运行
- 每个话题标签或查询返回5-12条结果
- 每批次使用3-5个种子话题标签
- 每批次使用3-5个最有效的搜索查询
- 仅在确定有前景的批次后再收集评论
不要一开始就强行进行全市场采集。先采样、检查、优化,再扩展范围。
当前的首轮受限规则:
- 将简短的视为目标候选名单或筛选目标,而非每个查询的抓取规模
limit - 除非明确需要更广泛的二次抓取,否则让保持首轮的
build_tiktok_actor_input.mjs/resultsPerPage受限maxProfilesPerQuery - 对于,默认设置
tiktok-scraper以优先基于内容发现创作者,除非有意进行账号搜索searchSection: "/video" - 首轮抓取时关闭评论收集、媒体下载、字幕提取、粉丝/关注者拓展及类似额外功能,除非当前步骤确实需要
Key Files
关键文件
${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs${CLAUDE_SKILL_DIR}/scripts/rank_tiktok_accounts.mjs${CLAUDE_SKILL_DIR}/scripts/expand_tiktok_creator_graph.mjs${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_dataset.mjs${CLAUDE_SKILL_DIR}/scripts/collect_top_video_comments.mjs${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_comments.mjs${CLAUDE_SKILL_DIR}/scripts/generate_tiktok_report.mjs- — sample hashtag, search, and competitor input files
${CLAUDE_SKILL_DIR}/templates/
${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs${CLAUDE_SKILL_DIR}/scripts/rank_tiktok_accounts.mjs${CLAUDE_SKILL_DIR}/scripts/expand_tiktok_creator_graph.mjs${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_dataset.mjs${CLAUDE_SKILL_DIR}/scripts/collect_top_video_comments.mjs${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_comments.mjs${CLAUDE_SKILL_DIR}/scripts/generate_tiktok_report.mjs- — 示例话题标签、搜索和竞品输入文件
${CLAUDE_SKILL_DIR}/templates/
Prerequisites
前置条件
In the product-shell runtime, follow release-shell rules.
postplus-sharedTikTok-specific runtime notes:
- when this skill references its own scripts, references, or templates, use absolute paths anchored at ; do not rely on bare
${CLAUDE_SKILL_DIR},scripts/...,references/..., ortemplates/...paths that depend on the current working directoryskills/20-research/tiktok-research/... - when extracting creator handles from a normalized video dataset, use
.items[].authorUsername - if hosted capability is unavailable, unauthorized, or returns a stable network error, stop immediately instead of switching to ad hoc shell glue
Node 18+ is required. This workspace already has Node available.
在产品外壳运行时,遵循发布外壳规则。
postplus-sharedTikTok特定运行时注意事项:
- 当本技能引用自身脚本、参考文档或模板时,使用以为锚点的绝对路径;不要依赖依赖当前工作目录的裸路径,如
${CLAUDE_SKILL_DIR}、scripts/...、references/...或templates/...skills/20-research/tiktok-research/... - 从标准化视频数据集中提取创作者账号时,使用字段
.items[].authorUsername - 如果托管功能不可用、未授权或返回稳定的网络错误,请立即停止操作,不要切换到临时的外壳粘合方案
需要Node 18+版本。本工作区已提供Node环境。
Default Actors
默认工具
- creator discovery by matched videos:
tiktok-scraper - keyword account-search supplement:
tiktok-user-search-scraper - profile enrichment:
tiktok-profile-scraper - keyword / hashtag video discovery:
tiktok-scraper - direct video enrichment:
tiktok-video-scraper - hashtag-only sampling:
tiktok-hashtag-scraper - comment collection default:
tiktok-comments-scraper - low-cost search expansion fallback:
tiktok-scraper - low-cost exploratory query fallback:
tiktok-scraper-api - TikTok Shop creator discovery:
tiktok-shop-creators
Treat these as defaults, not hard requirements.
Release-shell note:
- (secondary provider) remains shelved for current product-shell runs. Do not route to it until billing adds and verifies a provider cost rule.
tiktok-profile-scraper
- 通过匹配视频发现创作者:
tiktok-scraper - 关键词账号搜索补充:
tiktok-user-search-scraper - 资料信息补充:
tiktok-profile-scraper - 关键词/话题标签视频发现:
tiktok-scraper - 直接视频信息补充:
tiktok-video-scraper - 仅话题标签采样:
tiktok-hashtag-scraper - 默认评论收集:
tiktok-comments-scraper - 低成本搜索扩展备选:
tiktok-scraper - 低成本探索性查询备选:
tiktok-scraper-api - TikTok Shop创作者发现:
tiktok-shop-creators
将这些视为默认选项,而非硬性要求。
发布外壳注意事项:
- (次要提供商)在当前产品外壳运行中暂不启用。在计费系统添加并验证提供商成本规则前,不要路由到该工具。
tiktok-profile-scraper
Routing Rules
路由规则
Start from the user's real collection surface, not from one favorite actor.
- creator search with follower-band or content-fit constraints -> first
tiktok-scraper - creator search as account-search supplement ->
tiktok-user-search-scraper - profile enrichment ->
tiktok-profile-scraper - bulk profile enrichment stays on
tiktok-profile-scraper - topic/search video discovery ->
tiktok-scraper - hashtag-only sampling ->
tiktok-hashtag-scraper - known video URL enrichment ->
tiktok-video-scraper - focused comments ->
tiktok-comments-scraper - larger or cheaper comment runs ->
tiktok-comments-scraper - region-aware low-cost discovery ->
tiktok-scraper - shop creator analytics ->
tiktok-shop-creators
Do not use TikTok Shop actors for generic creator discovery.
Do not use Creative Center ad actors as if they were organic creator data.
If the user wants paid ad intelligence, route to .
If the user specifically wants TikTok music or sound discovery, route to:
tiktok-ad-research- trending music by region -> use the music-discovery path within
tiktok-research - videos under a specific music/sound -> when released
tiktok-music-sound-collector - local download and audio extraction ->
tiktok-music-archive-downloader
For multi-step TikTok music workflows, read TikTok music workflow.
postplus-shared从用户实际的采集需求出发,而非偏好某一个工具。
- 带有粉丝量级或内容匹配约束的创作者搜索 -> 优先使用
tiktok-scraper - 作为账号搜索补充的创作者搜索 -> 使用
tiktok-user-search-scraper - 资料信息补充 -> 使用
tiktok-profile-scraper - 批量资料信息补充 -> 持续使用
tiktok-profile-scraper - 主题/搜索视频发现 -> 使用
tiktok-scraper - 仅话题标签采样 -> 使用
tiktok-hashtag-scraper - 已知视频URL信息补充 -> 使用
tiktok-video-scraper - 定向评论收集 -> 使用
tiktok-comments-scraper - 大规模或低成本评论收集 -> 使用
tiktok-comments-scraper - 区域感知的低成本发现 -> 使用
tiktok-scraper - 店铺创作者分析 -> 使用
tiktok-shop-creators
不要将TikTok Shop工具用于通用创作者发现。
不要将创意中心广告工具当作自然创作者数据使用。
如果用户需要付费广告情报,路由到。
如果用户明确想要TikTok音乐或音效发现,路由到:
tiktok-ad-research- 区域热门音乐 -> 使用内的音乐发现路径
tiktok-research - 特定音乐/音效下的视频 -> 待发布后使用
tiktok-music-sound-collector - 本地下载与音频提取 -> 使用
tiktok-music-archive-downloader
对于多步骤TikTok音乐工作流,请阅读的TikTok音乐工作流文档。
postplus-sharedCreator Discovery V2 Rule
创作者发现V2规则
For TikTok creator discovery, do not default to plain user search when the brief includes:
- follower bands like
5k-10k - recent activity
- local language or geo fit
- audience fit inferred from what creators actually post
Prefer this order:
- collect matched videos
- extract authors
- expand around strong seed videos if recall is weak
- enrich profiles
- rank with profile plus content evidence
Use as a supplement, not the default first pass, unless the user explicitly wants account-search recall.
tiktok-user-search-scraper对于TikTok创作者发现,当需求包含以下内容时,不要默认使用普通用户搜索:
- 粉丝量级区间如
5k-10k - 近期活跃度
- 本地语言或地域匹配
- 从创作者实际发布内容推断的受众匹配
优先遵循以下顺序:
- 收集匹配的视频
- 提取作者信息
- 如果召回率低,围绕优质种子视频拓展
- 补充资料信息
- 结合资料和内容证据进行排名
将作为补充工具,而非默认的首轮方案,除非用户明确需要账号搜索召回结果。
tiktok-user-search-scraperInput Compilation
输入编译
When the request is expressed as a research goal instead of actor JSON:
- write a small brief JSON with fields such as ,
task,queries,hashtags,usernames,urls,limitcountry - run
${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs - inspect the compiled actor input before the collection run if the request is high-cost or ambiguous
This keeps the workflow stable even when actor input shapes differ.
Bounded brief rule:
- keep the first pass small by default:
- 3-5 strongest queries
- 2-4 seed hashtags
- set to the candidate or shortlist goal, not the per-query scrape size
limit
- only add explicit actor-size overrides such as ,
resultsPerPage,maxProfilesPerQuery, orcommentsPerPostwhen the current step truly needs themscrapeRelatedVideos - if the first pass is too thin, expand in a second pass instead of starting broad
当请求以研究目标而非工具JSON形式表达时:
- 编写一个简短的JSON摘要,包含、
task、queries、hashtags、usernames、urls、limit等字段country - 运行
${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs - 如果请求成本高或存在歧义,在采集运行前检查编译后的工具输入
即使工具输入格式不同,这也能保持工作流稳定。
受限摘要规则:
- 默认保持首轮规模较小:
- 3-5个最有效的查询
- 2-4个种子话题标签
- 设置为候选名单或筛选目标,而非每个查询的抓取规模
limit
- 仅在当前步骤确实需要时,添加明确的工具规模覆盖参数,如、
resultsPerPage、maxProfilesPerQuery或commentsPerPostscrapeRelatedVideos - 如果首轮结果过于单薄,在第二轮扩展范围,而非一开始就大规模抓取
Product-shell temp-file flow
产品外壳临时文件流程
Inside the product-shell runtime, prefer this order:
- when possible, skip the temporary brief file and call directly with repeated flags such as:
build_tiktok_actor_input.mjs--query--hashtag--username--url--limit--country--actor--output
- write the actor input JSON into the current work folder's directory
.postplus/ - keep raw datasets and other intermediate files in
.postplus/ - keep only final user-facing deliverables outside
.postplus/
Direct-output rule:
- creates that actor-input file itself
${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs --output <actor-input.json> - do not or
Readthe actor-input output path before running that scriptWrite - do not pre-read the actor-input output path just because it does not exist yet
- let the script create the file, then consume that same file path in the next step
Fallback only when the direct flag path is genuinely awkward:
- write the brief JSON into the current work folder's directory with the
.postplus/toolWrite - run against that
build_tiktok_actor_input.mjsbrief.postplus/*.json
在产品外壳运行时,优先遵循以下顺序:
- 尽可能跳过临时摘要文件,直接使用重复标志调用,如:
build_tiktok_actor_input.mjs--query--hashtag--username--url--limit--country--actor--output
- 将工具输入JSON写入当前工作文件夹的目录
.postplus/ - 将原始数据集和其他中间文件保存在中
.postplus/ - 仅将最终面向用户的交付物放在之外
.postplus/
直接输出规则:
- 会直接创建该工具输入文件
${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs --output <actor-input.json> - 在运行该脚本前,不要读取或写入工具输入输出路径
- 不要仅仅因为工具输入输出路径尚未存在就预先读取它
- 让脚本创建文件,然后在下一步使用相同的文件路径
仅当直接标志路径确实操作不便时才使用备选方案:
- 使用Write工具将摘要JSON写入当前工作文件夹的目录
.postplus/ - 针对该摘要运行
.postplus/*.jsonbuild_tiktok_actor_input.mjs
First move for clear KOL discovery
KOL发现明确需求的第一步
For a clear request like:
帮我在 TikTok 上找 20 个适合卖护肤仪的 KOL,优先微中腰部账号,给我一个可继续筛选的 shortlist。
default to this first move:
- skip the temporary brief JSON
- run with
${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs,--query,--limit, and--actor--output - place the output under the current work folder's
.postplus/ - then run against that output file
${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs
Do not start by reading or writing a new file when the direct actor-input path already fits.
.postplus/*.json对于明确的请求,例如:
帮我在 TikTok 上找 20 个适合卖护肤仪的 KOL,优先微中腰部账号,给我一个可继续筛选的 shortlist。
默认采取以下第一步操作:
- 跳过临时摘要JSON
- 使用、
--query、--limit和--actor参数运行--output${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs - 将输出放在当前工作文件夹的下
.postplus/ - 然后针对该输出文件运行
${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs
当直接工具输入路径已适用时,不要一开始就读取或写入新的文件。
.postplus/*.jsonProfile-enrichment bridge
资料信息补充桥接
For creator discovery from a normalized dataset:
videos- extract usernames from
.items[].authorUsername - write a real profile-request JSON file under
.postplus/ - run with
collection_actor_run.mjstiktok-profile-scraper - normalize the profile dataset
- run
rank_tiktok_accounts.mjs --profiles <profiles-normalized.json> --videos <videos-normalized.json>
Do not call with only .
rank_tiktok_accounts.mjs--videos从标准化数据集进行创作者发现时:
videos- 从字段提取用户名
.items[].authorUsername - 在下编写真实的资料请求JSON文件
.postplus/ - 使用运行
tiktok-profile-scrapercollection_actor_run.mjs - 标准化资料数据集
- 运行
rank_tiktok_accounts.mjs --profiles <profiles-normalized.json> --videos <videos-normalized.json>
不要仅使用参数调用。
--videosrank_tiktok_accounts.mjsMerge rule
合并规则
If you collect ranked results in multiple batches:
- write each ranked batch to its own JSON file
- merge them from disk with a plain file-based command such as:
bash
jq -s 'map(.items) | add | sort_by(-.followersCount) | .[0:20]' file-a.json file-b.json如果分批收集排名结果:
- 将每个排名批次写入单独的JSON文件
- 使用基于文件的普通命令从磁盘合并,例如:
bash
jq -s 'map(.items) | add | sort_by(-.followersCount) | .[0:20]' file-a.json file-b.jsonMinimal Workflow
最小工作流
Hashtag sampling
话题标签采样
Build input:
bash
node ${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs \
--brief ${CLAUDE_SKILL_DIR}/templates/hashtags.json \
--actor tiktok-scraper \
--output <work-folder>/.postplus/hashtags-input.jsonRun actor:
bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-videos \
--input <work-folder>/.postplus/hashtags-input.json \
--output <work-folder>/.postplus/hashtags.jsonThen summarize:
bash
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/hashtags.json \
--actor tiktok-scraper \
--dataset-type videos \
--output <work-folder>/.postplus/hashtags-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_dataset.mjs \
--input <work-folder>/.postplus/hashtags-normalized.json构建输入:
bash
node ${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs \
--brief ${CLAUDE_SKILL_DIR}/templates/hashtags.json \
--actor tiktok-scraper \
--output <work-folder>/.postplus/hashtags-input.json运行工具:
bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-videos \
--input <work-folder>/.postplus/hashtags-input.json \
--output <work-folder>/.postplus/hashtags.json然后生成摘要:
bash
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/hashtags.json \
--actor tiktok-scraper \
--dataset-type videos \
--output <work-folder>/.postplus/hashtags-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_dataset.mjs \
--input <work-folder>/.postplus/hashtags-normalized.jsonSearch-query sampling
搜索查询采样
Build input:
bash
node ${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs \
--brief ${CLAUDE_SKILL_DIR}/templates/searches.json \
--actor tiktok-scraper \
--output <work-folder>/.postplus/searches-input.jsonRun actor:
bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-videos \
--input <work-folder>/.postplus/searches-input.json \
--output <work-folder>/.postplus/searches.jsonThen summarize:
bash
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/searches.json \
--actor tiktok-scraper \
--dataset-type videos \
--output <work-folder>/.postplus/searches-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_dataset.mjs \
--input <work-folder>/.postplus/searches-normalized.json构建输入:
bash
node ${CLAUDE_SKILL_DIR}/scripts/build_tiktok_actor_input.mjs \
--brief ${CLAUDE_SKILL_DIR}/templates/searches.json \
--actor tiktok-scraper \
--output <work-folder>/.postplus/searches-input.json运行工具:
bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-videos \
--input <work-folder>/.postplus/searches-input.json \
--output <work-folder>/.postplus/searches.json然后生成摘要:
bash
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/searches.json \
--actor tiktok-scraper \
--dataset-type videos \
--output <work-folder>/.postplus/searches-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_dataset.mjs \
--input <work-folder>/.postplus/searches-normalized.jsonCompetitor sampling
竞品采样
json
{
"profiles": ["grammarly", "notionhq", "raycastapp"],
"resultsPerPage": 10
}bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-profiles \
--input <work-folder>/.postplus/competitors.json \
--output <work-folder>/.postplus/competitors-results.jsonThen normalize and rank:
bash
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/competitors-results.json \
--actor tiktok-profile-scraper \
--dataset-type profiles \
--output <work-folder>/.postplus/competitors-profiles-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/rank_tiktok_accounts.mjs \
--profiles <work-folder>/.postplus/competitors-profiles-normalized.jsonjson
{
"profiles": ["grammarly", "notionhq", "raycastapp"],
"resultsPerPage": 10
}bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-profiles \
--input <work-folder>/.postplus/competitors.json \
--output <work-folder>/.postplus/competitors-results.json然后标准化并排名:
bash
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/competitors-results.json \
--actor tiktok-profile-scraper \
--dataset-type profiles \
--output <work-folder>/.postplus/competitors-profiles-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/rank_tiktok_accounts.mjs \
--profiles <work-folder>/.postplus/competitors-profiles-normalized.jsonCreator discovery by keyword
通过关键词发现创作者
json
{
"searchQueries": ["ai tools", "productivity workflow", "gmail tips"],
"maxProfilesPerQuery": 8
}bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-users \
--input <work-folder>/.postplus/creator-search.json \
--output <work-folder>/.postplus/creator-search-results.json
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/creator-search-results.json \
--actor tiktok-user-search-scraper \
--dataset-type user-search \
--output <work-folder>/.postplus/creator-search-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/rank_tiktok_accounts.mjs \
--profiles <work-folder>/.postplus/creator-search-normalized.jsonjson
{
"searchQueries": ["ai tools", "productivity workflow", "gmail tips"],
"maxProfilesPerQuery": 8
}bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-users \
--input <work-folder>/.postplus/creator-search.json \
--output <work-folder>/.postplus/creator-search-results.json
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/creator-search-results.json \
--actor tiktok-user-search-scraper \
--dataset-type user-search \
--output <work-folder>/.postplus/creator-search-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/rank_tiktok_accounts.mjs \
--profiles <work-folder>/.postplus/creator-search-normalized.jsonCreator discovery by matched videos and graph expansion
通过匹配视频和图谱拓展发现创作者
Use this when the request cares about small creators, real topical activity, or content fit more than user-search ranking.
bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-videos \
--input <work-folder>/.postplus/topic-video-search.json \
--output <work-folder>/.postplus/topic-video-search-raw.json
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/topic-video-search-raw.json \
--actor tiktok-scraper \
--dataset-type videos \
--output <work-folder>/.postplus/topic-video-search-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/expand_tiktok_creator_graph.mjs \
--input <work-folder>/.postplus/topic-video-search-normalized.json \
--output <work-folder>/.postplus/topic-graph-raw.json \
--top 10 \
--results-per-seed 6当请求更关注小创作者、真实话题活跃度或内容匹配度,而非用户搜索排名时,使用此方法。
bash
node ${CLAUDE_SKILL_DIR}/scripts/collection_actor_run.mjs \
--collection-key tiktok-videos \
--input <work-folder>/.postplus/topic-video-search.json \
--output <work-folder>/.postplus/topic-video-search-raw.json
node ${CLAUDE_SKILL_DIR}/scripts/normalize_tiktok_dataset.mjs \
--input <work-folder>/.postplus/topic-video-search-raw.json \
--actor tiktok-scraper \
--dataset-type videos \
--output <work-folder>/.postplus/topic-video-search-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/expand_tiktok_creator_graph.mjs \
--input <work-folder>/.postplus/topic-video-search-normalized.json \
--output <work-folder>/.postplus/topic-graph-raw.json \
--top 10 \
--results-per-seed 6Comment sampling
评论采样
bash
node ${CLAUDE_SKILL_DIR}/scripts/collect_top_video_comments.mjs \
--input <work-folder>/.postplus/searches.json \
--output <work-folder>/.postplus/comments.json \
--collection-key tiktok-comments \
--top 8 \
--max-comments 40Then summarize:
bash
node ${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_comments.mjs \
--input <work-folder>/.postplus/comments.jsonbash
node ${CLAUDE_SKILL_DIR}/scripts/collect_top_video_comments.mjs \
--input <work-folder>/.postplus/searches.json \
--output <work-folder>/.postplus/comments.json \
--collection-key tiktok-comments \
--top 8 \
--max-comments 40然后生成摘要:
bash
node ${CLAUDE_SKILL_DIR}/scripts/analyze_tiktok_comments.mjs \
--input <work-folder>/.postplus/comments.jsonReport output
报告输出
bash
node ${CLAUDE_SKILL_DIR}/scripts/generate_tiktok_report.mjs \
--keyword-summary <work-folder>/.postplus/searches-summary.json \
--hashtag-summary <work-folder>/.postplus/hashtags-summary.json \
--competitor-summary <work-folder>/.postplus/competitors-summary.json \
--comments-summary <work-folder>/.postplus/comments-summary.json \
--output reports/tiktok-research.mdbash
node ${CLAUDE_SKILL_DIR}/scripts/generate_tiktok_report.mjs \
--keyword-summary <work-folder>/.postplus/searches-summary.json \
--hashtag-summary <work-folder>/.postplus/hashtags-summary.json \
--competitor-summary <work-folder>/.postplus/competitors-summary.json \
--comments-summary <work-folder>/.postplus/comments-summary.json \
--output reports/tiktok-research.mdDefault Sequence
默认流程
- choose the route first: content-first, handle-first, graph-first, or mixed
- collect 3-5 seed hashtags or 5-10 jobs-to-be-done searches
- extract authors from matched videos before relying on account search
- expand around strong seed videos when recall is weak
- enrich a shortlisted set of profiles
- rank with both profile and video evidence
- summarize each dataset locally
- merge findings into hooks, formats, and content pillars
- 首先选择路由:内容优先、账号优先、图谱优先或混合模式
- 收集3-5个种子话题标签或5-10个目标搜索词
- 在依赖账号搜索前,先从匹配视频中提取作者信息
- 当召回率低时,围绕优质种子视频拓展
- 补充候选名单中的资料信息
- 结合资料和视频证据进行排名
- 本地汇总每个数据集
- 将发现结果整合成钩子、格式和内容支柱
Skill Handoff
技能交接
Escalate to when:
skills/40-creative/video-analysis- the user wants hook or structure breakdowns
- the user asks why specific videos work
- the user wants shot-level or spoken-line analysis
- the user wants to recreate or adapt benchmark videos
When the request is broad, ask one short guiding question before running:
- "你是想先看 TikTok 上哪些方向值得研究,还是已经有几条视频想让我直接拆内容结构?"
Mention that this skill finds good samples first, and can read the actual videos later.
video-analysisEscalate to when:
skills/20-research/tiktok-ad-research- the user wants Creative Center top ads
- the user wants paid ad hooks, objectives, or ad brief inputs
- the request is about ad-market scanning rather than organic creator or content behavior
当出现以下情况时,转至:
skills/40-creative/video-analysis- 用户想要钩子或结构拆解
- 用户询问特定视频成功的原因
- 用户想要镜头级别或台词分析
- 用户想要复刻或调整基准视频
当请求范围较广时,在运行前先问一个简短的引导问题:
- "你是想先看 TikTok 上哪些方向值得研究,还是已经有几条视频想让我直接拆内容结构?"
说明本技能先找到优质样本,可以后续分析实际视频内容。
video-analysis当出现以下情况时,转至:
skills/20-research/tiktok-ad-research- 用户想要创意中心热门广告
- 用户想要付费广告钩子、目标或广告摘要输入
- 请求是关于广告市场扫描,而非自然创作者或内容行为
Download Recovery Note
下载恢复说明
This skill is primarily for research, not guaranteed video asset persistence.
If a later workflow needs the actual benchmark videos and the earlier local files are gone:
- recover from saved local video paths if available
- otherwise download directly from the TikTok post URLs with
yt-dlp - store the recovered videos in a stable workspace folder
- hand those files to
video-analysis
Do not assume collection dataset items will always contain reusable or fields.
mediaUrlsdownloadAddr本技能主要用于研究,不保证视频资产的持久存储。
如果后续工作流需要实际的基准视频且早期本地文件已丢失:
- 如果可用,从保存的本地视频路径恢复
- 否则使用直接从TikTok帖子URL下载
yt-dlp - 将恢复的视频存储在稳定的工作区文件夹中
- 将这些文件交给
video-analysis
不要假设采集数据集条目始终包含可复用的或字段。
mediaUrlsdownloadAddrGood Output
优质输出
For each run, extract:
- strongest opening lines
- repeated framing patterns
- recurring hashtags
- recurring creators
- bio-link or outbound-link signal on creator profiles
- comments that reveal pain points or objections
- source surface and source query so later analysis can distinguish search vs hashtag vs profile vs direct URL runs
- region or location signal when the actor supports it
- creator-discovery evidence:
- which queries surfaced each creator
- how many matched videos each creator contributed
- whether the creator was found directly or through graph expansion
- whether the profile has contactable public signals
- visual format types:
- screen demo
- before/after
- POV/relatable
- listicle
- talking head
每次运行应提取:
- 最有效的开场白
- 重复出现的框架模式
- 高频话题标签
- 高频创作者
- 创作者资料中的 bio链接或外部链接信号
- 揭示痛点或异议的评论
- 来源渠道和来源查询,以便后续分析区分搜索、话题标签、资料或直接URL运行
- 当工具支持时的区域或位置信号
- 创作者发现证据:
- 每个创作者是通过哪些查询找到的
- 每个创作者贡献了多少匹配视频
- 创作者是直接找到的还是通过图谱拓展找到的
- 资料是否有可联系的公开信号
- 视觉格式类型:
- 屏幕演示
- 前后对比
- POV/共情类
- 清单类
- 访谈类