Communitygithub.com

fake-screencast

Verwandle statische SCREENSHOTS in eine simulierte Bildschirmaufnahme (TSX) – einen gefälschten Screencast mit animiertem Cursor, der zu Zielen easet und klickt, einer Browser-URL-Leiste, die sich pro Seite aktualisiert, harten Schnitten, In-Seiten-Filter-Überblendungen, sanftem Scrollen und einem Ken-Burns-Zoom auf das finale Element.

Was ist fake-screencast?

Dieses Skill ermöglicht es, aus einer Serie von Screenshots eine täuschend echte Bildschirmaufnahme zu generieren, ohne tatsächlich eine Aufnahme machen zu müssen. Es erzeugt animierte Cursor-Bewegungen entlang von Bézier-Pfaden, Klick-Ripple-Effekte, Seitenübergänge mit harten Schnitten oder Überblendungen, eine dynamische URL-Leiste und einen Ken-Burns-Zoom. Entwickelt für den Einsatz mit Remotion (TSX-first) und folgt den strikten Regeln von `vidtsx-2d-generator` (frame-basiert, kein useState/useEffect). Es ist als Technik innerhalb von Schritt 2 (`make-tsx`) definiert: Die Orchestrierung von Timeline/Rendering/Baking wird an `make-tsx` delegiert, die rohen Crash-freien TSX-Regeln an `vidtsx-2d-generator`.

Funktioniert mit~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/raisaksham377-bot/youtube-shorts-ai-editor/tree/HEAD/.claude/skills/fake-screencast

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

fake-screencast – Screenshots → simulierte Bildschirmaufnahme

Vervollständige einen Screenshot-Walkthrough so, dass er wie eine echte Bildschirmaufnahme wirkt: ein permanenter Browser-Chrome mit einer URL-Leiste, die sich pro Seite ändert, einem benutzerdefinierten Cursor, der entlang eines Bézier-Pfades zu jedem Klickziel easet und beim Klick kräuselt, Seitennavigation als harter Schnitt (URL-Pfad ändert sich), ein In-Seiten-Filter als kurze Überblendung (URL-Query ändert sich), sanftes Scrollen, ein langsamer Ken-Burns-Zoom auf das finale Element und eine konstante Drift, damit es nie wie eine Diaschau aussieht. TSX-first: steuerbar, wieder-renderbar, wiederverwendbar über mehrere Videos.

Dies ist eine Beat-Building-Technik innerhalb von make-tsx (Schritt 2). Verwende make-tsx für die timeline.json-/render-/bake-Mechanik und die Sync-to-Words-Prinzipien; verwende vidtsx-2d-generator für die Low-Level-Regeln, die eine Remotion-Datei vor Abstürzen bewahren (nur frame-basiert, monotones interpolate, Easing.bezier, kein useState/useEffect). Der Shot, den du hier schreibst, folgt diesen Regeln.

Wann dieses Tool richtig ist (Entscheidungstor)

  • Gefälschter Screencast (dieses Skill) – Du hast oder kannst Screenshots der Zustände aufnehmen und möchtest einen kontrollierten Walkthrough (Cursor-Pfad, Hervorhebung, Zoom, Timing synchron zur Erzählung). Dies ist P4 „echte UI für Konfiguration“, nur simuliert. Am besten einsetzbar, wenn es im Walkthrough um wo die Dinge sind/die Schritte geht, nicht um rohe Geschwindigkeit.
  • Echte Bildschirmaufnahme – Nur wenn es um echten Beweis geht: echte Latenz, ein Live-Ergebnis, das erscheint, etwas, das du nicht glaubwürdig fälschen kannst. Hinterlasse einen klar markierten pending_recording-Platzhalter, bis er eintrifft (siehe make-tsx).
  • Einzelne statische Seite klonen – Wenn es eine Seite ohne Navigation/Cursor ist (z. B. eine Preisseite, die du nur hervorheben/scrollen möchtest), verwende direkt WebBrowserFrame aus lib/browser.tsx. Greife nicht zur Screencast-Mechanik.

Schritt 1 – Screenshots besorgen (Benutzer fragen)

Teile dem Benutzer die genaue Shot-Liste mit, die du benötigst (ein Screenshot pro Seite oder Zustand, auf den der Cursor landet), und warte dann auf ihn. Anforderungen:

  • Eingeloggt / echte Daten, die tatsächliche Produkt-UI, aufgenommen in einer konsistenten Fenstergröße (idealerweise ~1920 breit).
  • Einer pro Zustand, einschließlich Zwischenzustände: Eine ungefilterte Liste UND ihr gefiltertes Ergebnis zählen als zwei Screenshots (die Überblendung verkauft das „Suche angewendet“).
  • Für ein echtes Scrollen durch eine lange Seite benötigst du einen hohen Capture (gesamte Seite, unter dem Falz) – ein Einzel-Viewport-Screenshot kann nicht wirklich scrollen (du kannst nur ein paar Pixel Drift vortäuschen). Sage dies und bitte um den hohen Capture, wenn der Beat es benötigt.
  • Frage nach fehlenden Ansichten mit Namen (z. B. „die Modelle-Liste gefiltert auf X“, „die Einstellungsseite nach dem Umschalten von Y“).

Speichere sie in media/library/images/<service>/ mit klaren Namen (account-home.png, workers-ai.png, models-all.png, models-flux.png). Referenziere sie in einer Seite als library/images/<service>/<name>.png (das ist der staticFile-relative Pfad, den die Komponente erwartet).

Schritt 2 – Die Library-API (remotion/src/lib/screencast.tsx)

<Screencast pages cursor clicks box glow favicon appearAt />. Koordinaten sind BRÜCHE, damit sie jede Größenänderung überleben:

  • Cursor x/y und Klick-Kräuselungen → VIEWPORT-BRUCH (0..1 des Seitenbereichs unter der URL-Leiste).
  • Zoom fx/fy → BILD-BRUCH (Transformationsursprung des Push).
import { Screencast, ScreencastPage, CursorKey } from '../../lib/screencast';

const PAGES: ScreencastPage[] = [
  { img: 'library/images/svc/home.png',  url: 'app.svc.com/…/home',        tabTitle: 'Home | Svc',    enterAt: 0 },
  { img: 'library/images/svc/list.png',  url: 'app.svc.com/…/items',       tabTitle: 'Items | Svc',   enterAt: 130, transition: 'cut' },       // Navigation → harter Schnitt + neuer Pfad
  { img: 'library/images/svc/filtered.png', url: 'app.svc.com/…/items?q=x', tabTitle: 'Items | Svc',  enterAt: 262, transition: 'crossfade', transitionFrames: 5,   // In-Seiten-Filter → Überblendung + gleicher Pfad + Query
    drift: 0.01, zoom: { from: 1.0, to: 1.4, fx: 0.32, fy: 0.52, range: [266, 289] } },  // Ken-Burns auf die Auszahlungskarte
];

const CURSOR: CursorKey[] = [   // {frame, x, y} in Viewport-Brüchen; pro Segment ge-eased
  { frame: 0, x: 0.60, y: 0.42 }, { frame: 128, x: 0.09, y: 0.68 }, /* … */ { frame: 294, x: 0.36, y: 0.52 },
];
const CLICKS = [130, 206, 255]; // Frames, bei denen eine Kräuselung ausgelöst wird (platziere sie am Ankunft-Keyframe)

export const compositionConfig = { id: 'SvcRecording', durationInSeconds: 10.0, fps: 30, width: 1920, height: 1080 };
const SvcRecording = () => <Screencast pages={PAGES} cursor={CURSOR} clicks={CLICKS} />;
export default SvcRecording;

Seitenfelder: img, url, tabTitle, enterAt (erforderlich); transition?: 'cut'|'crossfade' (Standard cut), transitionFrames? (Standard 5), scroll?: {to, range:[a,b], from?} (Bild-px translateY), zoom?: {from,to,fx,fy,range:[a,b]}, drift? (Standard 0.02 — der konstante langsame „lebendig“-Push). Screencast-Props: box? (Standard {x:60,y:63,w:1800,h:954}), glow?, appearAt?, favicon? (Standard Cloudflare-Wolke — übergib dein eigenes für andere Dienste).

Schritt 3 – Timing + Koordinaten

  • Frame 0 = der master_in_s des Shots. Für einen Erzählungs-Hinweis bei t Sekunden: frame = round((t − master_in_s) × fps). Durchsuche edited-transcript.json nach dem genauen Wortanfang/-ende (ms). Setze den Klick / das enterAt der Seite ein paar Frames vor dem Wort, damit das Ergebnis auf dem Wort landet; beende einen Ken-Burns zoom.range auf dem Auszahlungswort.
  • Finde einen Klickziel-Bruch aus dem Screenshot: Pixelposition des Elements ÷ Bildbreite/-höhe ≈ der Viewport-Bruch (das Bild füllt den Seitenbereich, oben ausgerichtet, an Breite angepasst). Setze dort das Ankunft-Keyframe des Cursors und füge den Klick-Frame ~2f nach der Ankunft hinzu. Dann rendere und schaue (Schritt 4) – justiere den Bruch, bis der Zeiger auf dem Element sitzt.
  • Ordne jede Seite/Cursor-Bewegung ihrem Hinweis zu: Dashboard-Haltepunkt auf der Einleitungszeile → Cursor easet zu einem Sidebar-Element und klickt, während dieses Element genannt wird → nächste Seite erscheint → Zoom zur Auszahlung, während das Auszahlungswort gesprochen wird.

Fallstricke (jeder hat ein Render zum Finden gekostet)

  • Null-Höhe enthaltender Block. WebBrowserFrame umschließt Kinder in einem transformierten Div, das zum enthaltenden Block für absolute Nachkommen wird und auf Höhe 0 kollabiert. Seitenebenen benötigen daher explizite Regionsabmessungen (width/height aus der Box), nicht inset:0 – die Lib macht das bereits; behalte es bei, wenn du es erweiterst.
  • Navigation vs. Filter ist der Realismus-Verrat. Ein Seitenwechsel = harter Schnitt + anderer URL-Pfad. Eine In-Seiten-Suche/Filter = kurze Überblendung + gleicher Pfad (Query angehängt). Diese zu verwechseln wirkt gefälscht.
  • Einzel-Viewport-Screenshots können nicht scrollen – täusche „Lebendigkeit“ stattdessen mit drift + einem Ken-Burns zoom vor. Verwende ein echtes scroll nur, wenn du einen hohen Capture hast.
  • Render --scale=1 für die Vorschau (1080p, korrekt für bake.py); erneut rendern mit --scale=2 für das 4K60-Finale.
  • Der Cursor-Hotspot (die Spitze) befindet sich nahe der oberen linken Ecke des Zeiger-SVGs; die Lib korrigiert dies. Wenn ein Zeiger ein paar Pixel daneben aussieht, justiere den Zielbruch, nicht das SVG.

Schritt 4 – Verifizieren, dann zurück zu make-tsx

  • Rendere + Screenshot bei JEDEM Hinweis (niemals ein Standbild): node remotion/scripts/render-all.mjs --scale=1 <Id>, dann extrahiere Frames mit ffmpeg beim Cursor-auf-Ziel-Frame, jedem Klick-Frame, dem Seitenwechsel-Frame und dem Zoom-Auszahlungs-Frame. Bestätige, dass der Zeiger auf dem Element landet, URLs korrekt wechseln und der Zoom das Richtige einrahmt. Iteriere die Brüche/Frames und rendere erneut.
  • Folge dann make-tsx für den Rest: aktualisiere timeline.json (tausche/ändere die Zeitspanne, entferne jeglichen pending_recording-Hinweis), python tools/bake.py, und überprüfe die zusammengesetzten Frames des Shots über dem echten Master beim Beat und an beiden Grenzen.
  • Wenn du die Komponente verbesserst (pro Seite Favicons, echten getippten Text in einem Feld, eine Untertitel-Ebene), fördere sie zurück in lib/screencast.tsx, damit zukünftige Videos davon profitieren.

Die kanonische Form – kopiere diese Choreographie

Die Bewegung, die wie eine echte Bildschirmaufnahme wirkt, über ~4 erfasste Seiten und ~10s:

  1. Halte auf der Landeseite, während die Erzählung sie aufbaut (ein Beat von drift, niemals ein eingefrorener Frame).
  2. Cursor easet zu einem Sidebar-Element und klickt auf das Wort, das es nennt – der Klick landet auf dem Nomen, nicht davor.
  3. Harter Schnitt zu dieser Seite, URL-Pfad ändert sich. Dies ist eine Navigation.
  4. Tippe einen Filter → kurze Überblendung, gleicher Pfad mit angehängter Query. Dies ist keine Navigation, und es als eine solche zu rendern, ist der größte Verrat.
  5. Ken-Burns-Zoom auf die Auszahlung genau dann, wenn das Auszahlungswort gesprochen wird.

Lies remotion/src/lib/screencast.tsx, bevor du eines baust – es ist die Engine, und seine Props sind die Dokumentation für jede Bewegung oben. Das Seiten-Array, die Cursor-Keyframes, die URL und der Zoom pro Seite sind dort alle typisiert.

Individual skills in this repo

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

raisaksham377-bot/youtube-shorts-ai-editor

Makes this repo's videos look like YOUR channel instead of the house default — interviews you for palette, fonts, wordmark, motion energy, delivery specs and SFX taste, then rewrites brand.md + remotion/src/brand.ts + remotion/src/fonts.ts together and renders a proof card so you SEE it. Use whenever the user wants to set up or change their brand, rebrand the repo, "make it my colors/fonts", change the accent color, set their wordmark, adjust the motion feel, or asks why their videos look like someone else's. Run it once before the first video. Not for per-video art direction (that is /make-tsx) and not for thumbnails, which are deliberately louder than the brand (that is /packaging).

raisaksham377-bot/youtube-shorts-ai-editor

Build a split-frame vertical Short/Reel (1080x1920) from talking-head footage — real face cropped into the bottom half throughout, bespoke motion-graphic beats + word-by-word captions in the top half. Use when the user wants a "vertical short", "reel", "9:16 video", "split-frame" format, asks to keep their face on screen the whole time while graphics play above it, wants an in-context app/UI mockup moment (like clicking a button in a browser) without cutting away from their face, or hits caption-pill-covers-my-face / no-GPU-rendering / audio-duration-mismatch problems while building one. Covers the crop-offset technique for framing the face, the caption-pill safe zone, the top-half-only UI-mockup scene pattern, the full pipeline from raw footage to final SFX mix, and the environment gotchas (no NVIDIA GPU, AAC priming gap, comp-native transcode). Topic-agnostic — this is a layout/technique skill, not tied to any one video's content. Builds on /clean-cut, /make-tsx conventions, and /suggest-sfx; doesn't rep...

raisaksham377-bot/youtube-shorts-ai-editor

Voice/audio cleanup step of the AI Video Editor pipeline — diagnose a video's background noise, pick the right denoise method, and produce a cleaned master (voice isolated, levels preserved, video stream copied). Use when the user wants to "clean the audio / voice", "remove background noise", "denoise", "isolate voice", fix outdoor/room/water/hum/hiss noise, run ElevenLabs Voice Isolator or local RNNoise, A/B denoise methods, or produce a cleaned master for a video-N in this repo. Covers diagnosing the noise (spectrogram + levels), choosing eleven vs rnnoise by noise type, the sample A/B, tools/clean_voice.py, preserving levels (RMS-match, not LUFS), and rewiring the pipeline to the clean master. Not the SFX/music mix (that is /suggest-sfx + the final-mix step) and not the cut (that is /clean-cut).

raisaksham377-bot/youtube-shorts-ai-editor

Step 1 of the AI Video Editor pipeline — turn raw talking-head footage into a clean master cut. Use when the user wants to "clean cut", "cut the raw footage", "remove filler / dead air / bad takes", "tighten the pacing", produce cuts.json, run the cut editor, or render a cleaned preview/master for a video-N project in this repo. Covers audio extraction, AssemblyAI transcription, authoring cuts.json (keeps/cuts/fluff categorized), the cut policy (content-aggressive, pause-natural ~0.5s), QA + review docs, the local cut-editor UI, tight/natural previews, the final 4K60 render, and producing edited-transcript.json as the handoff to /make-tsx. Not for building TSX overlays (that is /make-tsx) or the raw TSX authoring rules (that is vidtsx-2d-generator).

raisaksham377-bot/youtube-shorts-ai-editor

Step 2 of the AI Video Editor pipeline — build the visual beats (Remotion TSX shots) over a project's master cut and bake a composited preview. Use when the user wants to add/edit overlays or full-screen animation segments, "make a shot / beat", implement an edit plan or a v2 update, retime a beat to the narration, re-render shots, or re-bake the video-N preview in this repo. Covers reading the plan + edited-transcript + brand + reusable kit, authoring shots library-first, syncing reveals to word times, updating timeline.json (cutaway vs overlay), rendering, verifying by screenshot, and baking with tools/bake.py. Defers raw TSX authoring rules to vidtsx-2d-generator and the cut itself to clean-cut.

raisaksham377-bot/youtube-shorts-ai-editor

Generates click-optimized YouTube packaging — 3 thumbnail bets under one fixed title, engineered for YouTube's built-in A/B/C thumbnail test, plus a value-forward description, then renders the thumbnails as real images. Use this whenever you want to package a long-form video or turn a video idea into titles and thumbnails. Triggers include how would you package this, title ideas for, thumbnail concept, package this video, A/B variations, and make this clickable. Calibrates to your channel's own CTR data if you have it. Long-form only, never Shorts. Not for non-YouTube copywriting.

raisaksham377-bot/youtube-shorts-ai-editor

Step 4 of the AI Video Editor pipeline — the SFX pass. Analyze a video's beats + narration and propose tasteful sound effects synced to them, drawing from (and growing) a shared, reusable SFX library, then render an SFX-mixed audition preview. Use when the user wants to "add SFX / sound effects", "suggest sfx", "score the transitions", "sound-design this beat", generate/source sound effects, build or extend the sfx library/catalog, author or audit a sfx-plan, or mix SFX over a video-N preview in this repo. Covers reading timeline + edited-transcript + brand §10, the library-first flow, generating misses with the ElevenLabs Sound Effects API, the per-video sfx-plan.json, the hard user-audit gate, and mixing with tools/mix_sfx.py (light voice ducking). Not the music bed (that is the final-mix step) and not the visual beats (that is /make-tsx).

raisaksham377-bot/youtube-shorts-ai-editor

Generate production-ready 2D TSX video files for VidTSX (Remotion-based) from a shot, scene, or video description. Use whenever the user wants to create or generate a VidTSX video, a 2D TSX shot or scene, an animated clip, title card, or rendered motion graphic — including when they describe a visual animation they want built, or say "make a shot", "build this scene", "generate the TSX", or "turn this into a video". Covers the mandatory file structure and composition config, dimension presets (horizontal/vertical/square), six style presets (minimalist, memphis, neo-brutalism, glassmorphism, neon, corporate), and the hard rules that keep renders from crashing, covering frame-based animation only (no useState/useEffect/setTimeout), strictly monotonic interpolate ranges, Easing.bezier not wrapper syntax, and the chroma-js and @remotion/paths import gotchas. Not for 3D/three.js compositions, general React work, or editing video files.

Verwandte Skills