用途
该技能针对屏幕录制做结构化分析。屏幕录制大部分时间是等待,真正有价值的信息集中在少数发生变化的像素上。通过比较相邻帧,可以找出事情发生的时刻、画面变化的区域位置、每段等待的长度,以及一个步骤在哪里结束、下一个步骤从哪里开始。这一过程不需要具备视觉能力的模型,因此速度快且结果稳定可复现。视觉识别只用于查看关键时刻的静止拼图,用来读取请求、核对结果、挑选钩子、命名阶段。
主要工具与能力
picsart_media_screen_moments:对每条录制调用一次,返回一份 JSON,包含输入信息、按时间顺序排列的事件、等待区间(dead ranges)、内容框与工作区、按横向分带统计的切镜数量、建议步骤以及建议分级(tier)。- 输入信息:录制的宽高、方向(横屏、竖屏、方形)、是否经过剪辑(镜头间的硬切而非同一屏幕变化)、每分钟切镜数与各切镜的具体秒数、是否含音频。
- 事件类型:cut(整帧同时变化,如新页面或新消息)、scroll(页面移动)、reveal(一次性绘制出现)、progressive(随时间逐步绘制,如流式文字或渲染)。每个事件带有开始时间、稳定时间(最后一次变化后区域保持不动的时点)、变化框、最大变化核心区(均以源图像素计)以及稳定时该框的平均亮度。
- 等待区间:画面完全静止时为 still,仅有加载转圈或光标闪烁时为 waiting。
- 内容框:所有曾发生变化的区域;工作区:变化持续出现的区域(画布、视口、聊天栏,不含周边菜单)。
- 建议步骤:在切镜或整页变化处开启一个步骤,其前的打字为引导输入,其后最大的变化为该步骤的结果;每个结果带有变化框、稳定时间和主体(结果卡片中带纹理的部分,如照片而非周围聊天)。延时类录制不产生建议步骤,改以阶段替代。
- 建议分级:prompt_over_result、timelapse 或 recut,并附分级依据 tierReason。建议步骤只是提案而非定论,需查看其静帧后保留、删除或重排;静帧未展示的步骤不要保留。时间来自像素测量,不要用固定偏移量调整。
picsart_media_video_stills({ videoUrl, times, crop }):在指定时间生成一张托管拼图图片,并返回各小图的时间和位置。按需裁剪到事件框、结果框或内容框(源像素)。每张拼图只问一个问题,约八格以内:先请求内容,再结果,再钩子候选。请求取步骤引导输入的末尾,裁剪到打字发生的位置;结果取稳定时间后 0.2 秒,裁剪到其变化框;在剪辑过的视频中不要越过input.cuts中的下一个切镜时间,若结果恰在切镜前稳定,应读取切镜前 0.2 秒的画面,否则会显示下一镜头。除非文字仍太小难辨,保持 tileWidth 与 columns 默认值。用观众会使用的措辞记录每格内容,后续所有屏幕文字均以这些记录为准。picsart_media_screen_stages({ videoUrl, count: 12 }):用于长时间建模、设计或编辑会话,这类录制没有可剪的等待,重点在于工作可见变化的位置。返回与已选阶段最不相似的时刻,先排除持续移动的元素(如画中画摄像头、时钟)。取这些时间点生成一张裁剪到工作区的拼图,用一个词命名每个阶段(如插画的“草图”“线稿”“上色”“发光”)。名称变化处即章节边界;可用 chapters 参数传入章节起始时间以查看更多细节。在全帧拼图上还需确定两个框:过程框(被操作对象,不含应用自有面板,如底部时间轴、节点编辑器、画中画摄像头)与结果(成品出现在屏幕上的时刻及其框;渲染窗口可能先以空棋盘格打开,因此结果从图像真正出现时算起)。
动作整理
当需要记录录制中的每一步操作(例如逐步骤教学点击流程),而非只看结果时,应使用脚本按事件整理为动作。将 picsart_media_screen_moments 原样返回的时刻数据写入文件,在该技能目录下运行 python3 scripts/actions.py <file>。不要自行手动分组事件。动作是观众会命名的行为:打开菜单、输入标题、打开页面;它来自事件而非建议步骤。每个动作包含其事件、类型(reveal、cut、typing、progressive)、at 与 settle 时间、所属建议章节以及屏幕响应的框(用于推近镜头,因为没有事件说明指针点击位置)。滚动归入其导向的动作,时间与位置接近的变化合并为一个动作。章节在整页变化处划分,与建议步骤同一规则;等待会标注其所跟随的动作且不会被丢弃,由具体用例决定展示多少。每个动作都应在其稳定时间按框裁剪生成拼图核对;应用自身动画会读作一个动作,两个小动作也可能是用户会视为一件事的操作,应删除动画、合并两者,静帧未展示的动作不要保留。
私密数据处理
真实账户的录制可能显示邮箱、密钥、电话号码、客户姓名。需要在已读文本中自行查找,没有工具自动监视。对拼图和转写中读到的每段文本记录为一条:文本、所在秒数、来自静帧时的源像素框以及来源。角落也要检查:账户菜单、浏览器地址栏、通知。在该技能目录下对 { texts } 运行 python3 scripts/private_text.py <file>,它会输出每个命中的类型(email、key、token、phone、card)、位置及掩码后的匹配,避免重复泄露秘密。引号内秘密可能含空格;卡号分组之间可有任意水平空白,数字间至多一个换行。卡号会同时按书写形式和以真实日期为字段边界两种方式读取,任一读法发现的卡号都会掩码。相邻且具有可识别电话分组的号码会整体保留,而不会把其中段误报为卡号。每个命中都要在其对应帧上按框裁剪核对:保留,或在静帧显示其并非隐私(如占位示例地址)时丢弃。这些模式无法识别姓名与街道地址,需自行在同一批拼图上查找。密钥或卡号即使在演示账户中也属私密。
分级判断
- prompt_over_result:多轮“打字引导→页面变化→大幅结果”,其间有较长等待;核对打字请求及其结果。
- timelapse:屏幕长时间不停顿,变化持续出现在同一工作区,切镜少;核对被操作对象在早期、中期和结尾的样子。
- recut:输入为已剪辑,镜头间为硬切,每分钟切镜多且无等待,常有人物出镜、烧录字幕和声音;在若干切镜两侧各取一格,确认是不同镜头而非同一屏幕变化。 应以建议分级及 tierReason 为基础,在第一张拼图上核对;拼图与建议不一致时以拼图为准,并说明实际采用的分级。有步骤但没有打字请求的录制(如点击浏览应用)仍属 prompt_over_result,其步骤没有可重复输入的请求,应单独用一行说明每步展示的内容。
剪辑视频(recut)
recut 输入是成品视频而非录制:镜头拼接,常有人在屏幕片段之间出镜讲话。处理单位是镜头,即 input.cuts 中一个时间到下一个时间。所有时间都要保持在所属镜头内,跨越切镜的步骤、静帧或结果会显示下一个镜头。一个长镜头内可能包含多个屏幕片段;人物始终在动会使同一事件横跨整个镜头而无法拆分,此时可用 picsart_media_screen_stages 并将 chapters 设为切镜时间,让每个镜头各自生成阶段,再在拼图上读取这些时间。需在一张全帧拼图上区分哪些镜头是屏幕、哪些是出镜人物、烧录字幕位于何处,以便后续添加文字时避开。记录屏幕文字的语言(字幕与应用的)。
限制
检测阈值截至 2026-09-30 仅基于两条原始录制和七条成品短视频调校。含内嵌视频播放的录制,或暗色界面配小字的情况,可能把一个事件拆成两个或把两个合并为一个。在剪辑视频中,内容框可能把出镜人物而非屏幕纳入。基于步骤和框继续工作前,应先用拼图核对;当 moments 数据与拼图不一致时,以拼图为准。