Skill: 通过素材ID爬达人ID(TikTok Shop 创意作品)
适用场景
在 TikTok Shop 卖家后台「创意作品」(ads-creation/manage-analyze) 页面,已知一批素材/作品ID(作品ID / creative_id),需要批量查出每个ID对应的达人用户名(用户名),并去重、导出到本地。
核心思路
页面表格有 38000+ 条数据、每页只显示20条,逐页翻找不可行。关键是利用页面顶部搜索框的**「作品 ID 包含任一项」过滤器**——它支持一次最多 400 个ID,一次性筛出所有目标行,再整表读取。
操作步骤
1. 定位页面元素
- 用 find 找到搜索/筛选输入框(占位符「输入 [/] 进行搜索和筛选」),拿到它的 ref(如 ref_77)。后续始终用 ref 点击,因为页面滚动后坐标会漂移,而 ref 不受滚动影响。
2. 打开「作品ID 包含任一项」批量输入面板
- 点击搜索框 → 输入任意一个ID → 弹出下拉建议「作品 ID 包含任一项: xxx」→ 点击该建议(用 find 拿建议的 ref 再点,比点坐标可靠)。这会应用第一个ID并可打开过滤器编辑面板。
- 面板底部有一个「每行一个」的 textarea 批量粘贴框(最多400个)。
3. 批量灌入剩余ID(最快的一招)
- 直接用 form_input 写值 不生效(框架不识别)。正确做法是用 javascript_tool 先聚焦该 textarea,再用 document.execCommand('insertText', false, ids.join('\n')) 插入——这会触发框架识别的真实 input 事件。
- 插入后计数可能仍未更新,在 textarea 内按一次回车 (Return) 即可把所有行 tokenize 成标签,面板显示「已输入 N 个作品」。
4. 应用并读取
- 点「应用」按钮,过滤器生效,表格只剩目标行。
- 把分页从「20/页」改成「50/页」(或更大),让全部结果落在一页。
- 用 get_page_text 一次读取整表,解析出「作品ID → 用户名」映射。
5. 去重 + 导出本地
- 用 javascript_tool 构造 CSV(含 BOM \ufeff 保证中文/越南语不乱码),用 Set 对用户名去重,通过 Blob + a.download 触发下载。
关键坑与注意
- 搜索框只对单个纯数字ID才提示「作品 ID」建议;多个ID用空格分隔会被当成「名称」搜索,识别不了ID。所以逐个加要一个一个来,批量加必须走面板 textarea。
- 坐标点击不可靠:页面会自动滚动导致坐标失效,一律优先用 find + ref 点击。
- 去重逻辑:系统对重复ID会自动去重(例如47个输入里若有重复,实际匹配数会少于47)。最终唯一用户名数通常远小于ID数(一个达人可能有多条素材)。
- 导出的是用户自己后台的运营数据,非受版权内容,可直接下载。
效率对比
- 逐个ID搜索 + 逐个截图:47个ID 约 150+ 次操作
- 批量 textarea 灌入 + 整表读取:约 8 次操作搞定