Community编程与开发github.com

bounce12340/josh-video-skills

用 Playwright 錄「公開網頁」的操作畫面(捲動、滑過、點連結、高亮重點、章節卡),輸出 1080x1920 直式 mp4,當 Reel 的工具/網站導覽素材。觸發語:「錄一段網頁操作」「網站導覽素材」「螢幕錄影素材」「screen record」。只錄公開頁面,不登入、不發文。

josh-video-skills 是什么?

josh-video-skills is a Claude Code agent skill that 用 Playwright 錄「公開網頁」的操作畫面(捲動、滑過、點連結、高亮重點、章節卡),輸出 1080x1920 直式 mp4,當 Reel 的工具/網站導覽素材。觸發語:「錄一段網頁操作」「網站導覽素材」「螢幕錄影素材」「screen record」。只錄公開頁面,不登入、不發文。.

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bounce12340/josh-video-skills/tree/HEAD/screen-record

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

screen-record: Public Web Page Operation Recording (Reel Material)

Josh 2026-10-11 Approved Installation. Sole purpose: Record the operation screen of public web pages as video material for IG Reels. The publishing workflow remains completely unchanged (IG/Threads still use the box browser method); this tool does not handle posting.

Hard Rules (Must Follow Every Time)

  1. Always use a fresh, temporary, in-memory browser (chromium.launch() + newContext(), no userDataDir).
  2. Never point to a box logged-in browser profile; never use --extension, attach, CDP/wsEndpoint to connect to the box browser; never load cookies or storageState; do not use --persistent/--profile.
  3. Do not log in to any website, do not input text, do not submit forms, do not post, do not comment, do not like.
  4. Only record public pages (http/https, not localhost/internal network). For IG, Threads, and FB, only view public pages in an "unauthenticated" state; if you encounter a login wall, change the source, do not attempt to log in.
  5. record.mjs has built-in protections: it immediately rejects specs containing storageState/cookies/userDataDir/profile/cdp/extension/login/password/fill/type fields; all POST/PUT/PATCH/DELETE requests are blocked (log will show blocked POST ..., normal); it refuses to click form submit buttons; non-http(s) or internal network URLs are rejected.
  6. Do not modify record.mjs to bypass protections. If you truly need a post-login screen, stop and ask Josh.

Installed

  • Playwright (Node library) 1.64.0: Installed in this folder node_modules/ (Apache-2.0)
  • Playwright CLI @playwright/cli 0.1.22: Global command playwright-cli (~/.local/bin, Apache-2.0). Default session is an in-memory profile, can be used temporarily to manually view pages or take screenshots; do not add --persistent, --profile, attach --extension.
  • Chromium: npx playwright install chromium (~/.cache/ms-playwright/chromium-1248, chromium_headless_shell-1248)
  • @playwright/mcp is not installed (CLI + this script is sufficient; Microsoft also recommends agents use CLI).

Usage

cd <SKILLS_DIR>/screen-record
node record.mjs spec.json                 # Output to spec.out
node record.mjs spec.json --out /path/x.mp4
./contact_sheet.sh x.mp4 x_sheet.jpg 4 3  # 4x3 thumbnail grid, use Read to view

Example: examples/playwright-mcp.json (test clip: <YOUR_WORKSPACE>/media-team/03-drafts/screen-record-test/test.mp4, 19.8 seconds, 4.1 MB).

spec.json

{
  "url": "https://github.com/microsoft/playwright-mcp",
  "out": "<YOUR_WORKSPACE>/media-team/03-drafts/<Topic>/work/screen/clip01.mp4",
  "viewport": {"width": 720, "height": 1280},
  "outSize": {"width": 1080, "height": 1920},
  "hide": [".cookie-banner"],
  "steps": [
    {"action": "chapter", "title": "Playwright MCP", "description": "github.com/microsoft/playwright-mcp", "ms": 2200},
    {"action": "scroll", "by": 500, "ms": 2000},
    {"action": "scroll", "role": "heading", "name": "Key Features", "ms": 2000},
    {"action": "highlight", "role": "heading", "name": "Key Features", "label": "Key Features", "ms": 2500},
    {"action": "hover", "text": "Getting started"},
    {"action": "click", "text": "Apache-2.0 license"},
    {"action": "goto", "url": "https://playwright.dev"},
    {"action": "wait", "ms": 1000}
  ]
}
  • Element selection: choose one of three: selector (CSS), role + name (most stable), text (can add exact).
  • scroll: by pixels, or use to/role/text to scroll to a specific element (offset defaults to 25% from the top), ms scroll duration (ease-in-out).
  • highlight: yellow box with optional label, removed after ms.
  • chapter: Playwright native chapter card (blurred background + title).
  • click, hover have Playwright native showActions: animated cursor + target outline + action description ("showActions": false can be disabled).
  • Other options: fps (default 30), crf (default 23), mobile (mobile simulation), colorScheme, locale, tail, keepWebm.

Screen Dimensions

Playwright's screencast records in CSS pixels (deviceScaleFactor does not affect the video), so:

  • Default: record at viewport 720x1280, then upscale to 1080x1920 using Lanczos: layout resembles a large phone, text is large enough, image quality is slightly soft but sufficient for Reels.
  • For maximum sharpness: "viewport": {"width":1080,"height":1920} (desktop layout, smaller text).
  • To record horizontally and then crop to vertical: "viewport": {"width":1280,"height":720}, "cropTo916": true (can add "cropX": 200 to specify crop start), output is still 1080x1920, but only retains the middle strip; usually not as good as directly using a vertical viewport.

Incorporating into Final Cut

  • stock-footage-reel: In the shots.json for that shot, write "pick": {"source":"file","path":"/abs/clip01.mp4","license":"Screen recording of <site>","author":"<site owner>"}
  • OpenMontage (via openmontage-house): Use as a local clip in the asset list, or as a real recording source in the screen-demo workflow.
  • Home rules remain: vertical 1080x1920, Sarah Explains voiceover, Traditional Chinese main subtitles with small English text, B-roll Vox cover image, final IG video under 45 MB.
  • Add one entry to credits.json: {"source":"screen-record","credit":"Screen recording of <site>","url":"<URL>","recorded":"YYYY-MM-DD"}; in the end credits, write "Screen recording of ".
  • Recording someone else's website: use only as introductory/review footage; do not record pages containing personal information, private messages, or paywalled content.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

bounce12340/josh-video-skills

「名人訪談/演講片段」直式 Reel(Fox Hsiao 式「解說穿插原聲」):配音依語言選聲(中文用「<YOUR_VOICE_NAME>」<YOUR_ELEVENLABS_VOICE_ID>;英文用 Sarah Explains)+繁中主字幕的解說段落,中間穿插 15 到 30 秒的名人原聲片段(16:9 置中、上下模糊底、「原聲 姓名|場合|日期」出處標籤、左上「影片/原頻道」),結尾拋問題給觀眾。一份 JSON spec 一路做到成片、720p 預覽、聯絡表、credits.json、封面。觸發語:「名人訪談」、「演講片段」、「訪談 Reel」、「Fox 式」、「解說加原聲」、「interview reel」。

bounce12340/josh-video-skills

收到「做一支影片/Reel」時先用:判斷影片類型、轉給對應的影片 skill,套用共用本家規則並交給事實編輯。只做草稿,不發文。

bounce12340/josh-video-skills

用 OpenMontage(開源 AI 影片製作流水線,<SKILLS_DIR>/OpenMontage)做 Josh 的影片時的「本家規則」轉接層。適用:長片剪成多支短片(clip-factory)、真實螢幕錄製教學(screen-demo)、翻譯配音(localization-dub)、Podcast 轉影片(podcast-repurpose)、「照這支參考影片做」(reference video 分析)、無旁白紀錄片蒙太奇(documentary-montage),以及幫 stock-footage-reel 加抓 NASA/國會圖書館/NARA/Archive.org 老片。觸發語:「用 OpenMontage」、「長片切短片」、「照這支 Reel 做」、「翻譯配音」、「螢幕教學影片」。

bounce12340/josh-video-skills

「真實素材剪輯」直式短影音(AYi @ayi_ainotes 那種紀錄片風):照口播稿每一句,自動搜尋並下載免費可商用素材(Pexels、Mixkit Free、Wikimedia Commons),加上洋紅調的 1950 到 70 年代 Prelinger 公有領域老片,硬切剪輯,燒上雙語字幕(繁中+英文,重點字金色),左上固定標題,ElevenLabs 配音,暗色合成器配樂,片尾金句卡加出處小字,再用 B 剪報 Vox 樣板出封面。觸發語:「做一支真實素材剪輯」、「stock footage reel」、「AYi 風格」、「素材庫剪輯」。

相关技能