FEATURED · 精选文章

用扣子工作流自动统计抖音账号视频列表,搭建数据监控与周报分析流程

发布时间 / 2026/9/20 16:57:26
来源 / 创域科博编辑部
栏目 / 资讯中心
用扣子工作流自动统计抖音账号视频列表,搭建数据监控与周报分析流程 简介这套扣子流程面向抖音内容创作者、运营人员与数据分析师用于自动抓取抖音账号主页视频列表的完整信息并输出关键统计指标。流程覆盖视频发布时间、描述、点赞量、评论量、收藏量、分享量、播放量及下载地址等维度同时提供将数据同步至飞书多维表格和 Excel 的对接方式帮助用户摆脱手动复制粘贴提升数据采集与复盘效率通过持续运行还能用于跟踪账号成长趋势、分析爆款视频共性、评估互动转化率为内容选题、发布节奏和营销决策提供量化依据。资源包为zip压缩格式大小约9KB共2个文件包含1个yml流程定义文件和1个yaml清单文件其中核心yaml可直接导入扣子平台使用manifest文件用于说明流程元数据整体轻量、结构清晰。已有477人学习浏览适合有一定扣子基础、希望快速搭建抖音数据监控流程的读者直接参考或二次修改。 先说个背景。我自己平时要盯几个抖音账号的内容表现每个月都要导出一次视频数据做对比分析哪些视频跑起来了、发布时间有没有规律、账号涨粉和内容更新的关系。刚开始纯手工操作电脑上开着一个网页一个网页地复制粘贴二十个视频就要折腾快一个小时还容易漏项。后来我改用扣子Coze搭了一条工作流把打开账号主页、拉取视频列表、提取核心指标、汇总成一份结构化结果这件事全部自动化现在每天定时跑一次数据自动落到表格里直接省掉了重复劳动。这篇文章就围绕用扣子工作流统计抖音账号主页视频列表信息这条主题把我在搭建和调试过程中的完整思路、节点设计、字段处理和踩过的坑一次讲清楚。如果你正准备做同类的事情——不管是分析自己的账号、调研对标账号还是做内容监控报表这篇文章的流程可以直接照搬再根据自己的需求微调。1. 为什么要用扣子搭这套视频统计流程1.1 一个我实际面对的账号数据分析需求我最初的需求其实特别朴素。我想知道一个账号的内容更新节奏和表现趋势每周发几条视频、每条视频的播放和互动数据如何变化、什么时间段发的视频更容易出爆款。这些数据全部散落在抖音账号主页的视频列表里看单条视频很容易但要横向对比、算均值、看趋势就必须把每一条的结构化字段都提取出来汇总到一张表里再分析。手动操作的问题在于第一视频数量多的时候翻页和复制粘贴的效率极低第二人眼读取数据容易出错尤其播放量、点赞量这些数字看串行是常有的事第三数据是动态的上周看是这个数这周可能又变了手动统计无法做到定期跟踪。这三条凑在一起自动化就变成一个刚需而扣子工作流恰好是解决这类周期性信息采集结构化整理问题的合适工具。1.2 对比手动操作、纯代码方案和扣子工作流在动手之前我其实把几条技术路线都评估过一遍。第一条路线是纯手工前面已经说了成本高、易出错只适合一次性看一两个视频不适合持续跟踪。第二条路线是自己写脚本通过模拟请求去抓取抖音的页面数据。这条路对开发经验要求比较高而且抖音的内容接口通常有签名参数和风控策略接口结构也经常变维护成本很高。最现实的问题是有封禁风险所以我没有采用。第三条路线就是扣子工作流。扣子平台本身提供了一些现成的插件和节点可以承载抖音账号主页视频列表的获取逻辑不需要我自己维护复杂的解析脚本也不直接面对账号安全风险。同时扣子的工作流支持定时触发、循环处理、代码节点、数据库操作和消息推送能够把获取数据、整理数据、输出报告全链路串起来这正是我需要的。站在今天的实际使用情况看如果只是临时查一下某个视频的数据手动打开抖音也就十秒钟但如果要定期跟踪一批账号的内容表现扣子工作流属于一次搭建、长期复用的投入产出比更划算的选择。当然扣子工作流的执行本质上是基于平台提供的插件能力不同插件的字段覆盖程度和支持的接口范围不一样搭建之前需要先确认清楚这部分我会在第3章展开细说。2. 工作流整体骨架从触发到输出的链路设计2.1 先想清楚数据流向再动手拖节点我见过很多新手搭扣子工作流时上来就拖一堆节点边试边接最后搞得节点连线乱成一团出了问题也不知道是哪个环节导致的。我的习惯是先画一条数据流向主线数据从哪里来、中间经过哪些加工、最后输出成什么形式。以统计抖音账号主页视频列表为例主链路是四条触发方式、信息获取、数据加工、结果输出。触发方式解决什么时候跑的问题信息获取解决去哪里拿数据的问题数据加工解决拿到手之后如何清洗、统计的问题结果输出解决产出物放哪里的问题。这四段明确了剩下的就是往对应环节里填充具体节点。我的实际工作流结构是这样的定时触发器每天上午10点自动运行一次用于抓取前一天的更新数据。插件节点输入抖音账号ID或主页链接返回该账号主页的视频列表数据。代码节点循环处理因为插件返回的数据可能是JSON数组我需要用循环节点逐条解析提取每个视频的标题、发布时间、播放量、点赞量、评论数等字段。变量聚合节点将循环中提取的字段拼接成统一的文本或数据结构。数据库节点将结果写入多维表格方便长期积累历史数据。消息通知节点运行完成后把本次共更新X条视频的结果推送到飞书或钉钉。这条链路里最关键的一个设计决策是循环放在哪个位置。有人喜欢让插件一次性返回所有视频再在后续代码节点里循环解析也有人喜欢用遍历账号视频列表这类循环节点逐条调用接口。两种方案各有优劣。如果账号视频数量不多比如100条以内一次性返回再循环解析更简单速度也快如果视频数量上千一次性获取容易触发超时或分页限制就需要走分页循环。我自己的账号视频量在几十条到几百条之间所以我选择一次性获取列表数据后续循环解析的方案逻辑清晰且不容易撞上接口限流。2.2 定时触发与人机交互触发应该怎么选扣子的触发节点一般有几种定时触发、对话触发、工作流直接调用。我做数据统计的场景本质上是一个后台定时任务所以优先选定时触发。选定时触发有一个好处数据节奏固定。比如内容团队每周五复盘数据那我就把工作流固定在每周五下午两点跑一次数据结果直接落到表格复盘时打开表格就能看到完整的周报数据。如果账号更新很频繁也可以每天跑一次保持数据的时效性。但定时触发不适合那种临时想看某个账号数据的需求。比如你在抖音刷到一个有意思的对标账号想马上看它的视频数据这时候再去等定时任务就太慢了。这种场景更适合对话触发也就是在扣子智能体里直接问一句帮我统计一下这个账号的视频数据工作流通软过接口把结果返回到对话里。比较理想的做法是搭两条链路一条定时任务用来沉淀周期性数据一条对话入口用来处理即时查询。如果不想搭两条也可以在同一个工作流里加一个判断节点区分定时触发时跑全量统计和对话触发时只跑指定账号灵活性更高。不过对于首次搭建来说建议先做一条主链路跑通后续再扩展触发方式别一开始就想着把功能做全那样排查问题会复杂很多。2.3 选择合适的信息获取插件插件节点是整个工作流的核心数据源。在扣子平台里抖音相关的插件市场上出现过多个版本有的能查用户主页信息有的能查单个视频详情有的能返回用户发布的视频列表。这些插件的能力边界、字段完整度和更新时效都不一样需要根据实际需求选择。我在第1章也提到过平台的插件是建立在对应平台的开放接口或合规数据能力基础上的所以如果你在插件市场里找不到直接可用的抖音账号主页视频列表插件也不要硬凑。我当时的处理方式是优先找一个能通过账号主页链接或账号唯一标识返回用户视频列表的插件作为主力如果返回字段不够全再配合一个视频详情查询插件逐条补齐播放、点赞、评论等明细数据。这里要特别说明一下插件的返回内容一般是JSON格式不要指望插件直接给你一张漂亮的表。拿到原始JSON只是第一步后续的字段解析和统计才是真正费功夫的地方。所以选插件的时候除了看它能不能拉到数据还要注意两点一是返回字段里是否包含你关心的指标二是插件是否支持分页或指定返回数量。这两点直接决定了后续代码节点的处理逻辑。3. 核心环节拆解账号主页视频列表的抓取与字段处理3.1 从原始JSON到结构化字段的解析思路插件返回的JSON数据通常长这样外层是状态码和消息内层才是真正的视频列表数据。视频列表的每一项包含视频ID、标题、发布时间戳、播放量、点赞量、评论数、转发数、封面图URL等字段。但不同插件的字段命名差异很大有的是aweme_id有的是video_id有的是create_time有的是timestamp还有的是嵌套结构播放量藏在statistics对象的play_count里。所以第一步是摸清字段结构。我在调试阶段会把插件返回的JSON原样打印出来把它贴到格式化工具里仔细看一遍确认每个我需要的指标对应哪个路径。这一步千万不要省略很多人在工作流里写了半天代码一运行就报错找不到字段根本原因就是没有先确认JSON的实际结构。确认结构之后就需要在代码节点里做解析。如果使用的是扣子的代码节点JavaScript或Python核心逻辑就是把JSON数组遍历一遍把需要的字段提取出来组成一个新的对象数组。我会额外注意几个点有的字段可能为空比如新视频还没有评论数有的字段可能不是数字而是字符串需要转换后再计算发布时间如果是时间戳需要转换成可读的日期格式。3.2 视频列表字段映射表这里把我实际用到的字段整理成了一张表供参考。你拿到的字段名可能略有不同但处理思路是一样的。原始字段示例含义我的处理方式aweme_id/video_id视频唯一标识原样保留作为去重和排序的依据desc视频文案/标题截断到前50个字符方便表格展示create_time发布时间戳转为YYYY-MM-DD HH:mm格式同时提取星期几statistics.play_count播放量转为数字保留原始值用于计算statistics.digg_count点赞量转为数字计算互动率用statistics.comment_count评论数转为数字注意空值处理statistics.share_count转发/分享数转为数字duration视频时长毫秒转为分:秒格式便于判断短视频/中视频占比cover_url封面图不写入统计表避免表格过重字段映射表的价值是防止遗漏。我曾经漏掉了视频时长这个字段后来想分析中长视频和短视频的互动差异时发现历史数据里根本没有这一列只能重新跑一遍历史数据费了不少时间。建议你在设计阶段就把关心的字段完整列出来宁可多采集也不要后面再补。3.3 处理循环逐条解析还是批量解析在扣子工作流里处理视频列表有两种常见方式。一种是直接用一个大代码节点把整个视频列表JSON传进去在代码内部用循环解析完一次性输出处理后的数组。另一种是使用循环节点把列表拆成单个元素逐个丢给后续节点处理再通过变量聚合节点汇聚结果。我两种方式都试过。对于视频数量在几百条以内的场景我更推荐前一种——一个大代码节点搞定。原因是直接在代码里循环解析逻辑完整、环境可控、调试方便而且不会因为循环次数过多导致工作流执行时间过长。如果用循环节点每一条视频都会触发一次后续节点的调用如果后续节点里有插件调用或网络请求执行时间会线性拉长甚至有可能触发超时。不过有一种情况适合用循环节点如果你需要针对每个视频再调用一次详情接口来补齐数据比如列表接口不返回互动数据需要逐个查详情那就只能把获取详情的过程当作循环体里的一个步骤。这时的流量控制和异常重试就需要更细致的考虑我在第5章会单独讲这个问题。3.4 代码节点中的具体解析示例如果工作流里已经拿到了插件的返回值并且你把返回值传给了某个代码节点的输入参数比如我习惯命名为video_list_json那核心解析代码可以这么写。这里以JavaScript为例因为扣子的代码节点对JS的支持比较友好function main({ video_list_json }) { // 兼容两种常见情况直接传数组或者传包含data字段的对象 const raw typeof video_list_json string ? JSON.parse(video_list_json) : video_list_json; const list Array.isArray(raw) ? raw : (raw.data || raw.video_list || []); const result list.map(item { const stats item.statistics || {}; const ts item.create_time || item.timestamp || 0; const date timestampToDate(ts); return { videoId: item.aweme_id || item.video_id || , title: truncate(item.desc || item.title || , 50), publishDate: date.dateStr, weekday: date.weekday, playCount: Number(stats.play_count || stats.playCount || 0), diggCount: Number(stats.digg_count || stats.diggCount || 0), commentCount: Number(stats.comment_count || stats.commentCount || 0), shareCount: Number(stats.share_count || stats.shareCount || 0), durationSec: Math.round((item.duration || 0) / 1000) }; }); return { parsedList: result, totalCount: result.length }; } function timestampToDate(ts) { // 抖音的时间戳一般是秒级如果发现是毫秒级要除以1000 const d new Date(ts 1e12 ? ts : ts * 1000); const weekdays [周日,周一,周二,周三,周四,周五,周六]; const pad n String(n).padStart(2, 0); return { dateStr: ${d.getFullYear()}-${pad(d.getMonth()1)}-${pad(d.getDate())}, weekday: weekdays[d.getDay()] }; } function truncate(str, len) { return str.length len ? str.slice(0, len) ... : str; }这段代码并不复杂但有一个很小的细节值得注意时间戳的单位。抖音的发布时间戳有的是秒级有的是毫秒级解析之前需要先判断大小。我最初没注意这个问题结果日期全部换算成了1970年附近的时间当时排查了好一阵才发现是对时间戳单位判断错了。代码里我加了ts 1e12这个判断就是为了兼容两种情况。4. 统计口径与结果呈现从有一堆数据到看得懂4.1 确定统计维度播放趋势、互动率、更新节奏把视频列表解析成结构化数据之后如果只是罗列出来那和手动复制粘贴没有本质区别。自动化统计的价值在于对数据进行二次加工让人一眼能看出规律。我实际常用的统计维度有三个。第一个是播放量与点赞量的分布情况用来判断是否出现了明显的头部爆款第二个是互动率点赞量除以播放量、评论量除以播放量用来衡量粉丝粘性和内容质量第三个是发布时间的分布比如按小时统计看看哪个时段发布的内容在表现上更优。这三个维度基本覆盖了看自己的账号内容表现和看对标账号的内容策略两类需求。第三个维度尤其值得展开。很多人只统计发了哪些视频但忽略了什么时间发的。视频发布时间和内容表现之间的关系虽然不能简单归因但把历史数据按月或按周汇总后能看出一些趋势性规律。比如我自己的账号历史上工作日晚间发布的视频平均播放量明显高于上午发布的这就为后续排期提供了一个参考依据。4.2 核心统计指标表在代码节点中我会在解析列表之后紧接着计算一组汇总指标。以下是计算逻辑统计指标计算方式我的关注点视频总数解析列表的长度判断账号更新频率是否在持续产出总播放量所有视频播放量求和判断账号整体流量规模平均单条播放总播放量除以视频总数与行业基准对比判断账号位势中位数播放按播放量排序取中间值避免单条爆款拉高均值导致误判最高播放视频取播放量最大的一条快速定位爆款内容和它的标题/发布时间平均互动率总点赞量除以总播放量衡量粉丝质量和内容认同度近7天新增视频数按发布时间过滤监测账号最近更新是否活跃爆款率播放量超过5万可按需定义的视频占比判断账号产出爆款的能力这组指标计算量不大直接复用第3章的解析结果就可以不需要额外请求接口。这里我特别想提一下中位数播放这个指标。如果只看平均播放一条播放量500万的爆款视频会把平均值拉得很高造成账号整体表现很好的错觉。而中位数代表的是典型的视频表现更适合用来判断账号的稳定输出水平。我有一次分析一个对标账号时平均值看起来超过10万但中位数只有不到2万说明这个账号的视频波动极大所谓的高数据几乎全靠一两条爆款撑着这个判断直接影响了要不要把它当作主要对标对象的决策。4.3 输出方式选择多维表格与消息推送统计结果最终要落到一个方便查阅的地方。我目前用的方案是把全量视频明细写入飞书多维表格把汇总指标通过消息卡片推送到群里的机器人。多维表格的优势是方便二次筛选和排序。我在表格里建了发布时间、播放量、点赞量这几个视图做周报时按发布时间筛选做爆款分析时按播放量降序排列非常顺手。而且多维表格有历史记录的概念每周跑一次数据把新增内容追加进去表格自动形成一个可持续对比的数据集。消息推送则承担轻提醒的角色。每天定时任务跑完之后工作流会向内容团队群推送一条简洁的消息本日新增视频数、最近一周总播放量、最高播放视频标题和链接。大家不用打开表格就知道今天的核心数据是什么。需要深入分析时再去多维表格里看明细。这种汇总走推送、明细进表格的组合方式是我认为最贴近实际运营需求的结果呈现方案。5. 搭建与调试过程中踩到的坑5.1 插件返回为空或字段不完整的排查链路我在搭建过程中遇到频率最高的一个问题插件节点返回结果是空的或者字段缺失。第一次遇到时我的第一反应是插件可能不支持这个账号但换一个账号测试又正常说明问题不一定出在插件上。后来我总结了排查链路按顺序执行基本能定位问题确认账号主页的可见性。有些账号开启了隐私保护非登录状态下主页视频列表不公开这类账号任何合规的信息获取方式都拿不到完整数据。确认传入参数是否准确。抖音账号ID和用户唯一标识有时候不是一回事传错了参数自然拿不到数据。把插件返回的原始日志打开看确认请求是否真的发出了。确认插件是否需要先进行账号授权。部分插件支持的信息获取范围取决于账号授权范围用游客模式能获取到的内容非常有限。确认返回结构里是否被包了一层错误码。比如返回里带了一个status_code或error_code字段通常非零就是请求失败直接看错误码查原因比自己猜快得多。如果你做过接口调试这其实就是最常见的三层排查法先看请求层再看业务层最后看数据层。我的教训是不要跳步尤其不要一上来就改代码节点里的解析逻辑——因为问题往往不在解析而在数据根本没回来。5.2 循环次数太多导致工作流执行超时另一个高频问题出现在逐条调用详情接口的场景。当时我搭的流程是先获取视频列表然后对每个视频循环调用详情接口补全数据结果视频一多工作流直接超时了。扣子工作流的单次执行时间是有上限的循环体内每调一次接口就多几百毫秒到几秒的时间几十个视频可能就能耗掉几分钟。如果账号的视频数量上千逐条调用的方案基本不可行。我的应对方案有两个。第一个方案是调整数据获取策略优先使用返回字段完整的列表接口避免列表只有ID、详情才有数据这种拆分发起的请求。第二个方案是合理限制处理范围如果只是想统计最近30条视频那就在循环开始前用slice()把列表截断而不是全量处理。这里有一个通用原则工作流的每一次外部调用都要估算成本能少调就少调能用批量接口就不用单条接口。优化之后我的执行时间从原来的偶尔超时降到了稳定在几十秒以内。5.3 定时任务运行失败如何快速定位定时任务跑失败是另一个常见问题。和手动触发不同定时任务没有人盯着经常是过了几个小时才发现数据没更新。我一开始总是打开工作流的执行历史从最后一个节点往前看错误日志但有一次发现日志里报的错误信息非常笼统根本看不出是插件问题还是代码问题。后来我把工作流的失败重试机制利用了起来。扣子工作流支持对节点设置重试次数我通常把插件调用节点设置成3次重试把代码节点设置成1次重试。插件调用失败很可能是网络抖动造成的瞬时问题重试几次就能解决代码节点如果失败大概率是逻辑问题重试再多也是白费不如直接看日志改代码。此外我还会在关键的失败分支接一个通知节点。万一某个环节彻底崩了至少会收到一条工作流运行失败请检查第X个节点的推送。这个设计在自动化任务里非常重要——定时任务可以无人值守运行但一定要让它会喊救命。5.4 避免被识别为异常请求的几个习惯虽然使用了扣子平台来对接抖音侧的内容信息但我在实际使用中依然会比较克制。具体习惯包括控制定时任务的运行频率尽量减少非必要的重复调用对大量视频做统计分析时优先使用返回全量列表的接口减少逐条请求把需要处理的历史视频做分页或分批处理避免一次性拉取过多数据。这套低频、批量、分批的原则本质上是在降低请求侧的压力。做数据自动化采集这类功能数据源侧的稳定性是第一位的如果因为自己的使用方式导致数据源临时不可用反而是得不偿失。把这个原则融入工作流设计中出来的方案成熟度会有明显提升。6. 进阶玩法从统计一个账号到监控一组账号6.1 批量账号统计的循环改造单账号流程跑通之后很自然的下一步就是做批量账号。无论是自己运营了多个账号还是有一组持续跟踪的对标账号都会遇到一次性把多个账号的视频数据都拉下来的需求。批量改造的核心是利用循环节点在获取账号信息这一步增加一个账号维度的循环。账号列表可以从多维表格里读取也可以直接在代码节点的配置里维护一个数组。每循环到一个账号就执行一遍我们前面搭好的获取列表、解析字段、汇总统计的流程最终输出一个包含账号维度标识的数据集。这里同样要注意循环次数和执行时间如果账号数量很多建议改用多个定时任务分时运行避免单个工作流压力过大。我做批量改造时还额外给每条数据增加了一个account_name字段。这个字段非常重要——多账号数据如果混在一起没有账号标识后续筛选统计会非常痛苦。你可以在解析代码里通过外部传入的账号名参数来附加这个字段。6.2 定期生成周报/月报批量账号的数据积累了足够长的周期后可以再做一层二次统计也就是周报和月报的自动生成。逻辑很简单从多维表格里查询过去7天或过去30天的历史数据按账号维度汇总播放量均值、互动率、爆款数和发布数再拼装成一段汇报文案推送到群里。我通常会把历史数据查询和汇总计算放在一个代码节点里完成避免为了算几个数字再去频繁读表格。扣子平台支持通过数据连接器或插件读取多维表格数据你可以按周维度过滤出时间范围内的数据再基于这些数据分析。如果代码逻辑较长我习惯把查询出来的数据先打印一遍日志确认查询范围没有问题再做下一步汇总。这个周期报告的价值是让数据统计从日常看数升级为周期复盘。到这一步整套流程就不只是帮自己省时间了而是在帮整个团队的运营决策提供数据支撑。6.3 结合知识库做更智能的内容建议最后再说一个我最近在探索的方向把统计结果和知识库结合起来。扣子智能体可以挂载知识库把历史统计数据和运营经验沉淀成文档然后让智能体基于这些数据回答一些问询比如我们账号哪个时段发的视频互动率最高、最近一个月有哪些视频进入了播放量前10。这个方向还在完善中但我认为它代表了一种更高级的用法从单纯的数据统计提升到数据问答。工作流负责持续产出数据知识库负责承接这些数据智能体负责把自然语言问题翻译成数据查询和结论输出。对非技术背景的运营同学来说直接在对话框里问一句这个月哪个视频最好比打开表格自己筛选要友好得多。当然要让数据问答准确前提还是工作流产出的数据足够规范、字段足够完整。所以如果你还没有把第一层的数据统计流程搭稳建议先不要急着做知识库的对接——先把数据管道打通后续的智能化才有可靠的基础。本文还有配套的精品资源点击获取
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻