跳到正文
cccskills
免费在 GitHub 公开中文介绍

mobile-demo-film

将真实的手机应用录屏剪辑成无声演示视频,可加入手机边框、标题卡、桌面画面和片尾卡。支持竖屏、横屏和方形尺寸,可调整片段时长与布局,用于功能演示或应用发布短片。

原文查看原文说明

Turn mobile screen recordings into a configurable demo video with phone footage, title cards, cutaways, and an end card. Use when asked to edit a mobile feature demo or launch clip. Use mobile-demo-record to capture real app footage first.

ParadevAI/Paradev星标 15,720(GitHub 15,720 + cccskills 0)

实测评分 未实测

查看安装方法

适用场景

  • 制作手机功能短演示
  • 准备应用发布介绍视频
  • 在手机画面间插入桌面画面
  • 导出竖屏、横屏或方形视频

中文介绍

功能

根据真实的手机应用录屏制作无声功能演示视频。可以组合带手机边框的画面、说明性标题卡、桌面画面和片尾卡。通过 JSON 构成文件设置片段、播放速度、背景色、淡入淡出效果和输出尺寸。支持竖屏、横屏和方形格式,还可以生成帧缩略图表供检查成片。

适用场景

适合用短视频展示应用操作及其结果,也适合为新功能发布准备介绍视频。可以缩短等待画面的时长,同时让操作过程和文字保持自然、易读的节奏。

使用示例

  • “请把这段录屏剪成 30 秒竖屏演示,展示操作和结果。”
  • “请在手机画面之间插入桌面画面,并在结尾显示标志。”

注意事项

需要 Python 3.10 以上、Pillow 10.1 以上,以及包含 ffprobe 和 libx264 的 ffmpeg。输出视频会移除音频;需要旁白或应用声音时,应使用其他剪辑流程。使用 mobile-demo-record 录屏需要 macOS,但剪辑已有视频不需要。已有的输出文件会被覆盖。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

文档检查

AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。

安全性发送数据、删除文件、执行命令等是否有说明
B部分不足说明输出会被覆盖且音频会被删除,但没有覆盖前确认步骤。
安装难易度所需工具和 API 密钥是否少且有说明
A良好列出了 Python、Pillow、ffmpeg 版本要求,并提供 Pillow 安装示例。

不计入评分。 由 AI(OpenAI Codex)于 2026年10月29日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(3)

  • SKILL.md7.2 KB
  • scripts/film.py19.9 KB
  • scripts/test_film.py5.0 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Mobile demo film

Use this skill to edit a new demo from real app recordings. The bundled renderer produces silent video with configurable dimensions, frame rate, framing, and fades. Defaults are 1080x1920 at 30fps, with a phone frame on a warm paper backdrop. A useful default is one feature in 20 to 40 seconds; adapt the story and pacing to the request.

Prerequisites

Use Python 3.10+, Pillow 10.1+, and ffmpeg (including ffprobe and libx264). Recording with mobile-demo-record needs macOS; editing existing footage does not. Font discovery tries macOS system fonts, then Linux DejaVu fonts, then Pillow’s fallback. Specify font files for consistent typography across machines. Install Pillow in a scratch virtual environment:

python3 -m venv <scratch>/film-venv
<scratch>/film-venv/bin/pip install "Pillow>=10.1"

Use that environment's Python for the commands below. Commands assume the repo root as working directory. Output directories are created automatically. Existing outputs are overwritten; source assets and the composition spec cannot be used as the film output.

Workflow

  1. Plan one story. Write a short table of on-screen actions and durations. Start with the user's action, show the app responding, and end on the visible result. A tour can start with the finished artifact instead. Verify the feature works before filming it.
  2. Capture real footage with mobile-demo-record. Use demo data and a separate take for each beat. If the story needs an agent doing work, use a working host and agent. Capture desktop cutaways with cdp-verification when needed.
  3. Normalize before choosing cuts. Simulator recordings have variable frame rates: python3 .agents/skills/mobile-demo-film/scripts/film.py normalize raw/01.mov cfr/01.mp4. Choose start/end timestamps from this constant-rate copy. Add --fps 24 for a 24fps project (the default is 30).
  4. Compose using a JSON spec beside the recordings: python3 .agents/skills/mobile-demo-film/scripts/film.py compose <scratch>/film.json.
  5. Review a contact sheet and play the entire film: python3 .agents/skills/mobile-demo-film/scripts/film.py sheet <scratch>/film.mp4 <scratch>/sheet.jpg. Add --frames 12 --height 480 to customize sampling and thumbnail height. By default, the sheet samples eight frames; inspect transitions and typing in playback too. Check for clipped text, unreadable UI, private information, spinners, and unintended clock changes.
  6. Deliver the film and identify the build, environment, staged data, and omitted steps. Draft accompanying post copy only if requested; publishing needs user authorization.

Keep typing and reading at a natural pace. Trim or speed up waiting, and make time jumps clear. Use title cards to explain missing context rather than implying an unrecorded action happened in the app. Framing, masks, and the simulated Dynamic Island are presentation layers; do not fabricate app state inside the recording.

Composition spec

This example combines phone footage, a desktop cutaway, a result, and an end card. Replace its paths, cut points, and text for the feature being demonstrated.

{
  "output": "film.mp4",
  "backdrop": "#F2F0EB",
  "segments": [
    { "type": "phone", "src": "cfr/01.mp4", "start": 1, "end": 7, "label": "Start on your phone" },
    { "type": "card", "eyebrow": "Meanwhile", "title": "The agent works on your Mac.",
      "image": "shots/desktop.png", "duration": 4 },
    { "type": "phone", "src": "cfr/02.mp4", "start": 0, "end": 10 },
    { "type": "end", "wordmark": "Paradev", "caption": "Review the result anywhere", "duration": 2.2 }
  ]
}

Media, output, and optional titleFont/sansFont paths resolve relative to the spec file; absolute paths also work. Top-level backdrop, bezel, ink, and muted accept #RRGGBB.

Output and framing

Add a render object to the spec. Existing specs without it keep the portrait defaults. For a landscape demo:

"render": {
  "width": 1920,
  "height": 1080,
  "fps": 24,
  "crf": 18,
  "fade": 0.2,
  "phone_width": 0.45,
  "phone_height": 0.8,
  "bezel_width": 0.012,
  "corner_radius": 0.1
}

For a square clip, use "width": 1080, "height": 1080. Cards and typography scale with the canvas; the centered phone fits both width and height limits while preserving source aspect ratio. Use raw for unframed desktop footage.

Render optionMeaning and default
width, heightCanvas pixels; even integers at least 64. Defaults: 1080, 1920
fpsInteger 1–120; default 30
crfFinal H.264 quality, 0–51; lower means higher quality/larger files. Default 18
fadeFade duration in seconds; 0 disables fades. Default 0.35; capped at half each framed/still segment’s duration; raw clips have no fade
phone_width, phone_heightMaximum screen width/height as fractions of canvas dimensions, greater than 0 and at most 0.95. Defaults: 0.615, 0.82
bezel_widthBorder thickness as a fraction of the smaller canvas dimension, 0–0.25. Default 0.015
corner_radiusScreen corner radius as a fraction of screen width, 0–0.25. Default 0.137

Segments

SegmentFields
phonesrc, optional start/end in seconds, speed (default 1), label, island (false disables the overlay)
rawsrc, optional start/end, speed; unframed footage fitted to the output canvas with black padding
cardtitle, optional eyebrow, caption, image, footer, duration (default 4 seconds)
endwordmark or transparent PNG logo, optional caption, duration (default 2.2 seconds)

Keep cut points within the source duration and speed positive. Every segment must last at least one output frame. The renderer validates all segments and source paths before encoding. Card titles wrap; captions, labels, and footers should be short. The renderer removes audio, so use another editing workflow if narration or app audio is needed.

Store raw takes, specs, and finished films in a scratch directory. Share the inputs and spec when teammates need to re-edit a particular demo; they are not required to create a new one.

Reusing and checking the renderer

Run film.py --help or a subcommand with --help for CLI options. The Python module can also be imported: normalize(src, dst, fps=30), compose(spec_path) (returns the output Path), and sheet(src, dst, frames=8, height=900) work without invoking the CLI. RenderSettings holds layout calculations without mutable global canvas settings.

After editing the renderer, run its focused tests (requires ffmpeg and Pillow):

python3 -B -m unittest discover -s .agents/skills/mobile-demo-film/scripts -p 'test_*.py'

These render small portrait, landscape, and square compositions, check output dimensions, frame rate and duration, and exercise invalid specs. Also inspect a contact sheet at the intended delivery size; automated checks do not judge readability or composition.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

10x

免费有简介

检查 Superset 的使用情况,找出适合当前工作方式但尚未使用的功能,给出建议并介绍选项;用户选定后,可协助设置定时运行、并行工作区或共享任务等功能。

  • 查找尚未使用的 Superset 功能
  • 设置定时运行的智能体
  • 在多个工作区并行处理任务
ParadevAI/Paradev1.6万2026年10月29日 更新

automate

免费有简介

把重复任务配置为 Superset 自动化,整理智能体指令、定时或事件触发条件及运行工作区。经明确确认后创建设置,检查已保存的条件,并查看首次运行结果以调整指令。

  • 按日或按周运行任务
  • GitHub 新建拉取请求时启动任务
  • 收到 Slack 指定表情反应时触发
ParadevAI/Paradev1.6万2026年10月29日 更新

browser

免费有简介

通过 Superset 工作区的浏览器查看网页、点击、输入并检查截图或控制台信息,可用于预览运行中的网页应用、检查界面操作和表单流程。

  • 预览本地网页应用
  • 截取页面图像
  • 查看控制台错误
ParadevAI/Paradev1.6万2026年10月29日 更新

依据 Stripe 官方文档和 API 参数定义实现支付、订阅、发票及 Webhook 集成,涵盖产品选择、沙盒测试和事件处理,并通过 Webhook 判断支付与订阅状态。

  • 选择定期扣费产品
  • 实现 Checkout 或发票处理
  • 排查行为异常的 Stripe 集成
ParadevAI/Paradev1.6万2026年10月29日 更新

cdp-verification

免费有简介

通过 Chrome DevTools Protocol 操作正在运行的 Electron 桌面应用,复现界面问题并验证修改。按实际操作流程检查页面跳转,记录截图,并对照路由、滚动位置、焦点元素和保存状态等信息。

  • 在运行中的应用里复现界面问题
  • 检查修复后的页面行为
  • 验证包含页面跳转的操作流程
ParadevAI/Paradev1.6万2026年10月29日 更新

ci-triage

免费有简介

分析 GitHub Actions 失败日志,定位最早的有效错误,区分代码缺陷、环境问题、间歇性失败和原有故障,并对照基准分支说明失败与 PR 的关系及后续处理建议。

  • 调查 PR 检查失败原因
  • 区分不稳定测试与代码缺陷
  • 确认基准分支是否已有故障
ParadevAI/Paradev1.6万2026年10月29日 更新

查看 ParadevAI 的全部技能

报告此技能的问题