Communitygithub.com

nathankim0/app-demo-recorder

Erstelle saubere, schnelle Demo-Clips einer mobilen App auf einem Android-Emulator oder iOS-Simulator – für Werbung, Store-Vorschauen, Social Posts oder KI-Video-Tools, die eine Bildschirmaufnahme als Eingabe benötigen.

Was ist app-demo-recorder?

Dieses Skill ermöglicht es einem KI-Agenten, professionelle App-Demo-Videos direkt auf einem Android-Emulator oder iOS-Simulator aufzunehmen. Es optimiert die Aufnahmeumgebung (leistungsstarke Emulatorkonfiguration, saubere Statusleiste, Host-basierte Aufnahme), führt den Benutzer durch die Auswahl der zu zeigenden Funktionen und erstellt pro Funktion einen Clip. Nach der Aufnahme werden die Clips mit `ffmpeg` automatisch nachbearbeitet: Wartezeiten zwischen Taps werden entfernt, der Anfang beschnitten und die Geschwindigkeit optional erhöht. Das Skill unterstützt sowohl `adb` (Android) als auch `xcrun simctl` (iOS) und erfordert erhöhte Berechtigungen im Sandbox-Modus. Es ist nicht für automatisierte Tests oder die Bearbeitung fertiger Videos gedacht, sondern produziert rohes, aber bereits gesäubertes Material für die weitere Verwendung.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/nathankim0/app-demo-recorder/tree/HEAD/skills/app-demo-recorder

In Ihrer bevorzugten KI fragen

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

Dokumentation

App-Demo-Rekorder

Erstelle kurze Bildschirmaufnahmen, die aussehen, als würde eine Person die App souverän bedienen: eine Funktion pro Clip, keine Ladeverzögerungen, keine Debug-Overlays, keine Werbung, eine aufgeräumte Statusleiste.

$S ist scripts/appdemo.sh im Verzeichnis dieses Skills. Es benötigt ffmpeg (brew install ffmpeg), sowie adb für Android oder Xcodes xcrun simctl für iOS. In sandboxed Agents muss es mit erhöhten Berechtigungen ausgeführt werden: Es kommuniziert mit dem Emulator, dem Simulator und schreibt außerhalb des Workspace.

1. Vereinbaren, was gezeigt werden soll

  • Frage, welche Funktionen gezeigt werden sollen, falls der Benutzer keine genannt hat. Nimm einen Clip pro Funktion auf und benenne die Clips NN_funktion (01_preissuche, 02_rechner). Zeige zuerst das, worin das Produkt am besten ist, nicht den Bildschirm, auf dem die App startet.
  • Frage nach dem Build und dem Konto, wenn dies nicht offensichtlich ist. Marketing-Aufnahmen benötigen normalerweise einen Production-Release-Build mit echten Daten. Ein Debug/Staging-Build zeigt Entwicklermenüs, Warn-Toasts, Testdaten und läuft langsamer. Gehe nicht davon aus; eine Staging-Aufnahme muss meist wiederholt werden.
  • Wenn der Clip einen bezahlten oder Premium-Zustand benötigt, suche vorher nach einem Debug/Developer-Override in der App, bevor du echte Abrechnungen berührst.
  • Anmeldedaten, die der Benutzer dir gibt: gib sie mit einem Befehl ein, dessen Ausgabe du verwirfst (adb shell input text ... >/dev/null unter Android; printf ... | xcrun simctl pbcopy <udid> und dann Einfügen unter iOS), anstatt durch Tools, die jeden Befehl protokollieren, und schreibe sie nicht in Dateien.

2. Das Gerät schnell und leise machen

  • Android-Emulator: Gib ihm Ressourcen. Ein kleines AVD ruckelt auf dem Bildschirm und das Ruckeln landet im Clip. emulator -avd <name> -memory 6144 -cores 4 -gpu host -no-snapshot-save -no-boot-anim Wenn dieselbe App-ID bereits mit einem anderen Signing-Key installiert ist, verwende ein anderes AVD anstatt zu deinstallieren (Deinstallieren löscht die Benutzerdaten).
  • Release-Build installiert und läuft; einloggen; First-Run-Popups, Berechtigungsabfragen und Interstitial-Anzeigen vor der Aufnahme schließen.
  • $S statusbar on: feste Zeit (APPDEMO_TIME, Standard 9:41), volle Batterie und Signal, Benachrichtigungssymbole ausgeblendet. $S statusbar off stellt sie wieder her.
  • Auf Android: Drücke nicht die System-Zurück-Taste auf dem Startbildschirm der App. Dadurch wird die Aktivität beendet und ein In-Memory-Override (Premium-Schalter, Feature-Flag) geht beim Neustart verloren.

3. Proben, dann aufnehmen

  1. Probe jeden Clip einmal ohne Aufnahme. Lerne die Taps, Koordinaten und Wartezeiten. Das einmalige Öffnen des Bildschirms wärmt auch die Caches auf, sodass der aufgenommene Take schneller lädt.
  2. Aufnahme:
    $S start 01_preissuche
    # Bediene die App: adb shell input tap/swipe/text, xcrun simctl, oder dein UI-Automatisierungstool
    $S stop 01_preissuche        # -> $APPDEMO_OUT/01_preissuche.mp4
    
    Die Aufnahme läuft auf dem Host (adb emu screenrecord / simctl io recordVideo). Verwende nicht das geräteinterne adb shell screenrecord auf einem Emulator: Es konkurriert mit der App um CPU und kann die UI einfrieren, sodass Scrolls und Taps nie angezeigt werden.
  3. Sende die Aktionen für einen Clip als einen Batch mit kurzen Pausen (0,5–2,5 s), nicht als einen Tool-Aufruf pro Tap. Das Inspizieren des Bildschirms zwischen den Schritten hinterlässt lange tote Strecken im Take.
  4. Scrolle in bewussten Schritten (etwa 40 % des Bildschirms, 600–800 ms pro Wischbewegung), damit Betrachter lesen können.
  5. Verwende den Text-Eingabe des UI-Treibers für nicht-ASCII-Text (Koreanisch, Emojis); adb shell input text verarbeitet nur ASCII.
  6. Wenn eine Funktion ihren Wert nur mit Daten zeigt (ein Hauptbuch, ein Tagebuch, ein Warenkorb), nimm das Erstellen eines realistischen Eintrags auf, lösche ihn dann sofort danach und bestätige, dass der Bildschirm wieder im Ursprungszustand ist. Überprüfe zuerst die Freigabeeinstellungen: ein neuer Beitrag könnte öffentlich sein.

4. Jeden Clip prüfen

$S strip $APPDEMO_OUT/01_preissuche.mp4 /tmp/01.jpg 8

Sieh dir den Strip an, nicht dein Skript: Bestätige, dass jeder beabsichtigte Schritt tatsächlich passiert ist (Scrolls bewegt, der Tab gewechselt, das Ergebnis erschienen) und nichts Unerwünschtes auf dem Bildschirm ist: Toasts, Tastaturen, die Inhalt verdecken, Werbung, personenbezogene Daten wie eine echte Adresse oder Debug-Banner. Nimm fehlgeschlagene Clips erneut auf; versende keinen Clip, dessen Aktion stillschweigend nichts bewirkt hat.

5. Das Warten herausschneiden

$S tighten in.mp4 out.mp4          # Leerlauf am Anfang und eingefrorene Strecken -> 0,35 s, endgültiger Ergebnisbildschirm 1,5 s behalten
$S speed  in.mp4 out.mp4 1,3       # optionale gleichmäßige Beschleunigung

tighten beginnt den Clip 0,4 s vor der ersten echten Aktion (die Leerlaufsekunden nach start sind nie perfekt still, daher übersieht die Freeze-Erkennung sie allein) und verkürzt jeden Abschnitt, in dem sich das Bild nicht ändert, sodass Taps wie bei einer Person, die die App kennt, aufeinander folgen. Typische Clips verlieren etwa die Hälfte ihrer Länge. Überprüfe einen gestrafften Clip ebenfalls mit strip: Wenn eine kleine Änderung (Eingabe einer Ziffer, Umschalten eines Chips) herausgeschnitten wurde, senke --noise; wenn Pausen bleiben, senke --min-freeze.

6. Liefern

Lege alles in einen Ordner: Roh-Clips, die gestrafften Versionen (für die Bearbeitung empfohlen) und eine kurze README, die jeden Clip auflistet, was er zeigt und was der Benutzer wissen sollte (erstellte und gelöschte Daten, sichtbare personenbezogene Daten, Kamera-Aussparung des Emulators oben). Berichte über Clip-Längen und was nicht aufgenommen werden konnte und warum.

Verwandte Skills