CommunityCoding & Developmentgithub.com

bounce12340/josh-video-skills

Record the operation screen of public web pages (scrolling, hovering, clicking links, highlighting key points, chapter cards) using Playwright, outputting a 1080x1920 vertical mp4 for Reel tools/site walkthrough materials. Trigger phrases: "Record a webpage operation," "Site walkthrough material," "Screen recording material," "screen record." Only records public pages; no login, no posting.

What is josh-video-skills?

This skill enables automated screen recording of interactions with public web pages, designed specifically for creating Reel-style vertical video content (1080x1920) for platforms like Instagram. Built on Playwright 1.64.0 with Chromium, it does not use persistent profiles, cookies, or extensions—every session is launched with a fresh, in-memory browser context for security and privacy. The `record.mjs` script enforces strict rules: it blocks any specification containing `storageState`, `cookies`, `userDataDir`, `profile`, `cdp`, `extension`, `login`, `password`, `fill`, or `type` fields; it blocks all POST/PUT/PATCH/DELETE requests; and it refuses form submission buttons, localhost, or internal network URLs. Users define a `spec.json` file with the target URL, viewport settings, and a series of actions (scroll, hover, click, highlight, chapter, goto, wait) that the script executes sequentially. The output is a high-quality MP4, optionally enlarged from 720x1280 to 1080x1920 using Lanczos resampling, suitable for use in video editing workflows like stock-footage-reel or OpenMontage. This skill is ideal for developers, content creators, and AI agent users who need to produce polished screen recordings of public websites without authentication or interaction.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bounce12340/josh-video-skills/tree/HEAD/screen-record

Installed? Explore more Coding & Development skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

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 風格」、「素材庫剪輯」。

Related Skills