跳到主要内容
知仓学习社ZHICANG

screenstudio-alt

Open-source headless Screen Studio alternative: auto speed-up of idle, auto-zoom on click clusters, keystroke overlay chips, smoothed synthetic curs…

不碰外部(只输出文字)无严重或高危命中sickn33/agentic-awesome-skills

它会碰到什么

扫了多少1 个文本文件,5 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

When to Use

Use when polishing a screen recording / demo video for sharing, when the user mentions Screen Studio, auto-zoom, idle speed-up, or vertical/social video from a screen capture, and for any social-facing demo (vertical output is the default for those).

_Source: connerkward/screenstudio-alternative-skill (MIT)._

screenstudio-alt

The skill's code lives in this directory (polish.py, render.py, studio.py,

events-log.swift, test fixtures, etc.). Published publicly as

connerkward/screen-studio-alternative via the publish-skill skill.

Two components:

  • events-log (Swift) — capture-side input logger (cursor 60Hz, clicks, keys;

drops keys during macOS secure input). Runs ONLY while recording. Needs

Accessibility/Input Monitoring for the terminal. **Auto-zoom/keys/cursor need

this data at capture time — it cannot be recovered from pixels later.**

  • polish.py (Python, ffmpeg + PIL) — the post-production pass:
python3 src/polish.py in.mp4 --events in.events.jsonl \
  --speedup            # compress idle (input-gap ∩ frozen-pixels; animations stay 1x)
  --zoom               # eased auto-zoom on click clusters (zoompan)
  --keys               # accumulating keystroke chips (PIL overlays, no drawtext dep)
  --smooth-cursor      # synthetic eased cursor (best with sck-record --no-cursor)
  --vertical           # ALSO emit 1080x1920 following the action

--speedup works WITHOUT events (freezedetect only) — usable on the whole

existing dailies corpus.

  • render.pyhigh-quality non-destructive renderer (preferred): single-pass

spring-physics camera over the original high-res frames, LANCZOS into a smaller

target (crisp zoom, ~1.3× sharper than the ffmpeg upscale path), 60fps, H + 9:16 V.

Tunable --freq/--zeta (spring), --fps, --target-w. Takes explicit

--regions [{t0,t1,z,cx,cy}]. polish.py is the older ffmpeg-filter fallback.

  • studio.py [recording.mp4] — local web UI, NLE-style fixed-ruler timeline (bar =

source duration, never rescales → upstream always planted): zoom regions are draggable

blocks (move / retime edges / click to add / double-click delete); idle spans are

speed blocks with rate-only editing — source range locked, rate set via inspector

slider on select or right-edge rate-stretch drag (FCP retime / Premiere Rate

Stretch); rate changes ripple downstream only. Tunable cosine-ease ramp, default zoom,

aspect, frame styling. Always-smooth synthetic cursor + click ripple + real recorded

click sound (CC0 #735771). Export uses render.py. Free port, local. (Keystroke overlay

exists in the engine but is off by default.)

Easy path

screencast.sh --demo (screencast skill) does the whole chain: starts the event

logger, records, then polishes + emits the 9:16 vertical automatically. Vertical

is the DEFAULT for social-facing demos.

Gotchas (learned the hard way, kept here so they're not relearned)

  • ffmpeg CANNOT do animated scale=eval=framecrop (link reinit wedges crop's

per-frame exprs). That's why zoom uses zoompan (no t var there — use on/FPS).

  • This machine's ffmpeg lacks drawtext; all text/cursor overlays are PIL-rendered

PNGs + overlay.

  • Test rig: make-fixture.py synthesizes a fake screen recording + ground-truth

events.jsonl — validate any change against it before trusting real footage.

Limitations

  • The workflow assumes FFmpeg plus the companion scripts are available locally; it is not a hosted video editor.
  • Polished cursor, click, and keystroke effects depend on event logs captured during recording; missing logs limit what can be reconstructed.
  • Auto-zoom and idle speed-up still need human review for pacing, framing, and platform-specific taste.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。