返回博客

TikTok 视频长度分析与公共发布指标

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

04-Sep-2026

TL;DR:

  • TikTok视频长度分析需要有效的持续时间值。 在分配视频分类之前排除缺失和零持续时间记录。
  • 持续时间分类是分析师定义的比较组。 它们不是官方的性能推荐。
  • 创作者和观察窗口需在每个比较中使用。 混合无关账户可能会掩盖受众、主题和发布节奏的差异。
  • 样本计数、中位数和异常值应与每个持续时间结果并列。 一个有一个突发帖子的分类需要可见警告。
  • 公共帖子指标并不揭示完成率或平均观看时长。 持续时间分析不应暗示那些不可用的措施。
  • 免费开始。 新的Scrapeless账户通过Scrapeless仪表板包括免费积分。

引言:持续时间是一个格式维度,而不是裁决

视频持续时间易于分组且易于过度解读。一个短片和一个长教程可能服务于不同的受众需求,而公共播放或互动计数并不能揭示观众观看了多久。

本指南建立了一个TikTok视频长度分析,基于被跟踪创作者的帖子。它过滤不可用的持续时间,应用项目拥有的分类,比较公共指标在匹配的创作者和观察窗口内,并生成一个包含样本和异常值背景的持续时间带报告。

对于收集步骤,Scrapeless演员指南解释了结构化演员请求是如何融入应用程序的。

一览管道

阶段 操作 输出
收集 保存被跟踪创作者的帖子 原始帖子快照
验证 解析持续时间并移除不可用记录 有效视频数据集
分类 分配明确的持续时间区间 格式组
比较 计算创作者内部的统计数据 持续时间比较表
审查 曝露小样本和异常值 决策准备报告

该管道比较观察到的公共帖子结果。它不计算保留率或规定一个通用视频长度。

先决条件

  • 来自scraper.tiktok.user.work的保存响应
  • 与响应一起存储的创作者身份和收集时间
  • 在查看性能结果之前选择的持续时间分类
  • 任何排名比较的最低帖子数量
  • Scrapeless仪表板收集新数据时的Scrapeless API密钥

变换块是一个先决条件缺口,因为读者提供输入快照。它并不声称一个实时结果。

阶段1:在分类之前验证持续时间

TikTok帖子演员可以返回video_duration,单位为秒。对于不携带可用视频持续时间的记录,0的值可能出现,因此分析应从持续时间表中排除零、缺失、布尔值和非数字值。保留那些行在质量报告中,而不是默默删除它们。

TikTok的视频对象文档描述了其视频字段的持续时间(单位为秒)。其查询视频文档也将持续时间和公共互动计数列为单独的字段。这种分离很重要:持续时间是可观察的,而观看行为不是从此处使用的公共计数器得出的。

存储排除原因,如missing_durationzero_durationinvalid_duration。排除计数应出现在最终图表附近,以便读者可以评估覆盖率。

阶段2:在查看结果之前选择分类

项目拥有的分类保持分析的可重复性。一个实用的起始方案是:

分类 规则
under_15s 持续时间大于零且低于15秒
15_to_59s 从15秒到59秒
60_to_299s 从60秒到299秒
300s_plus 300秒或更长

这些边界是分析设置,而不是对理想格式的声明。与输出记录分类版本,以便稍后的边界更改不会使两个报告看起来直接可比。

使用Scrapeless开始抓取

使用Scrapeless强大您的网络抓取和自动化工作流程!
今天注册并获得 $5的免费积分——无需信用卡

现在在Scrapeless仪表板索取您的免费积分。

阶段3:计算持续时间区间统计数据

使用一行每个有效帖子。保持公共计数为整数,仅在播放量为正时计算参与率,并在样本计数旁边比较中位数。

注意:下面的代码需要读者提供来自 scraper.tiktok.user.workposts-snapshot.json。在合并来自多个帐户的快照之前,请添加创作者和观察窗口列。

python Copy
import csv
import json
import statistics


def parse_duration(value):
    if isinstance(value, bool):
        return None
    try:
        duration = int(value)
    except (TypeError, ValueError):
        return None
    return duration if duration > 0 else None


def duration_band(seconds):
    if seconds < 15:
        return "under_15s"
    if seconds < 60:
        return "15_to_59s"
    if seconds < 300:
        return "60_to_299s"
    return "300s_plus"


def count(value):
    try:
        return int(value)
    except (TypeError, ValueError):
        return 0


with open("posts-snapshot.json", encoding="utf-8") as source:
    payload = json.load(source)

posts = (
    payload.get("items", payload.get("data", payload))
    if isinstance(payload, dict) else payload
)
groups = {}
excluded = []

for post in posts:
    duration = parse_duration(post.get("video_duration"))
    if duration is None:
        excluded.append(str(post.get("video_id") or ""))
        continue

    plays = count(post.get("play_count"))
    engagement = sum(count(post.get(field)) for field in (
        "digg_count", "comment_count", "collect_count"
    ))
    group = groups.setdefault(duration_band(duration), {
        "durations": [], "plays": [], "rates": []
    })
    group["durations"].append(duration)
    group["plays"].append(plays)
    if plays:
        group["rates"].append(engagement / plays)

rows = []
for band, values in groups.items():
    rows.append({
        "duration_band": band,
        "post_count": len(values["plays"]),
        "median_duration_seconds": statistics.median(values["durations"]),
        "median_plays": statistics.median(values["plays"]),
        "max_plays": max(values["plays"]),
        "median_engagement_rate": (
            statistics.median(values["rates"]) if values["rates"] else ""
        ),
    })

with open("duration-band-report.csv", "w", newline="", encoding="utf-8") as output:
    fields = [
        "duration_band", "post_count", "median_duration_seconds",
        "median_plays", "max_plays", "median_engagement_rate"
    ]
    writer = csv.DictWriter(output, fieldnames=fields)
    writer.writeheader()
    writer.writerows(rows)

print(f"excluded_duration_records={len(excluded)}")

最大播放列揭示了典型帖子与最强离群值之间的距离。Python 的 统计文档 定义了这里使用的中位数计算。

阶段 4:在创作者和观察窗口内比较

TikTok 视频时长参与表应首先比较同一创作者和收集窗口内的桶。这可以控制受众规模、内容类别和时间覆盖等一些明显差异,而不是假装控制每个因素。

对于多帐户基准测试,使用两级报告:

  1. 创作者级别的行显示每个帐户的持续时间带。
  2. 投资组合行总结创作者级的中位数,并显示有多少创作者进行了贡献。

当一个创作者贡献了大部分样本时,不要将每个帖子集中到一个表中。结果主要描述该帐户的发布组合。

阶段 5:构建时长比较图表

主图表可以将持续时间带放在横轴上,中央値播放或中位参与率放在纵轴上。直接在每个条形上显示帖子数量,并在伴随表中添加最大值或离群值标记。

完整的 TikTok 内容格式分析应显示:

  • 创作者或队列名称
  • 观察窗口
  • 桶定义和版本
  • 按带的有效帖子计数
  • 排除的持续时间记录计数
  • 中位播放和中位参与率
  • 最大播放或另一个可见的离群指标

Scrapeless 通过 Scraping API 提供结构化的帖子收集。在设置创作者覆盖和快照频率之前,请查看 当前定价页面

负责任地处理创作者指标

仅保留分析所需的公共帖子字段,限制对创作者级数据的访问,并记录报告目的。NIST隐私框架 提供了管理隐私风险和保留的一般指导。

时间段应告知内容测试。它们不应对创作者产生自动判断,并且在未收集这些字段时,绝不应将其作为完成率或平均观看时间分析呈现。

结论:将视频时长视为一个观察维度

TikTok 视频时长分析在过滤无效持续时间、提前修复桶规则并对等比较时最有用。在每个结果旁边发布样本计数、中位数、排除情况和离群值。输出可以指导新的内容测试,但仅凭公共帖子指标无法建立普遍的时长规则。

准备比较 TikTok 视频格式吗?

加入 Scrapeless DiscordTelegram 社区 讨论持续时间带报告。当创作者列表准备就绪时,在 Scrapeless Dashboard 创建一个帐户。

常见问题解答

问:TikTok 视频时长分析是如何工作的?

TikTok 视频时长分析将有效帖子持续时间分组到定义的带中,并在同一创作者和观察上下文中比较公共指标。

问:零持续时间记录应该进入最短桶吗?

零持续时间记录不应进入最短桶,因为零可以表示缺失或不可用的视频时长,而不是有效的短视频。

问:公共帖子指标能揭示平均观看时间吗?

公共播放、点赞、评论和收藏计数不会在此工作流程中揭示平均观看时间或完成率。

问:什么使 TikTok 视频表现基准具有可比性?

可比的基准使用一致的创作者组、观察窗口、桶规则、指标定义和样本阈值。

问:团队需要管理 TikTok 帖子选择器吗?

TikTok 帖子演员通过 API 响应返回结构化字段。调用者管理创作者选择、快照时机、存储、质量检查和分析。

问:抓取公共的 TikTok 帖子数据是否合法?

合法性取决于管辖权、目的、访问方式、适用条款和收集的数据。使用公共数据进行允许的目的,并针对预期工作流程寻求法律建议。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录