app_status
Check whether the mobile app is connected and show device info. Call first.
無需輸入參數。

io.github.Rudrasamadhiya由 GitHub 帳號 Rudrasamadhiya 發布v0.1.2更新於 Oct 30, 2026
Record your Expo app on a real phone and edit a 1080p launch video with motion graphics and sound.
在真實手機上錄製 Expo 應用程式,讓助理規劃、剪輯並輸出帶字幕、動態圖像與音效的 1080p 上線影片。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
[expo-launch-video — your AI agent shoots and edits a launch video of your app, live]
[npm version] [CI] [node] [MIT license]
Website · Docs · The studio · Tools reference · Changelog
expo-launch-video lets your AI agent shoot and edit a launch video of your Expo app — live from your phone. Ask Claude Code, Antigravity or Cursor for a video; it records the real app (page loads, scrolling, taps, panels opening), picks the best takes, writes the captions and cuts a polished video with motion graphics, break-out pop-outs and sound. Then it opens a studio where you tweak the result by dragging, or just by typing what you want. Export is a real 1080p MP4, rendered in your browser. No After Effects, no ffmpeg, no screen-recording app.
"Make a 45 second launch video of the app: landing, login, dashboard, the question bank and one exam. Captions should sell the benefits."
init writes .mcp.json with a launch-video server — it includes every app_* tool from expo-mcp-bridge, so one server does both — plus the directing skill for Claude Code (.claude/skills/launch-video), the same playbook in AGENTS.md for Antigravity, Cursor and others, and a .gitignore entry for the project folder.
The one-shot way. Paste this into your agent inside your Expo project:
By hand:
Install the packages and run init (above).
Mount the bridge once in your root layout:
Run npx expo start and open the app on your phone (same Wi-Fi).
Restart your agent and ask for a video.
On Windows the MCP config uses "command": "cmd", "args": ["/c", "npx", "expo-launch-video"].
video_plan alternates sides, video_edit sets side:"left"|"right" per scene.Install this package next to expo-mcp-bridge, run npx expo-launch-video init, open the app on your phone and ask your agent: "Make a 30 second App Store preview, portrait." It records the real app, plans the video and opens a studio; export gives you a 1080p MP4.
Yes, any MCP agent can. The agent records page loads, scrolls and taps live from the phone, writes captions from the real content on screen, and adds zooms, pop-outs, motion graphics and sound.
No. Recording happens inside the app through expo-mcp-bridge, editing happens in a browser studio you can drag or prompt ("speed up analytics 2x"), and the MP4 is rendered in Chrome or Edge.
16:9 for YouTube and websites, 9:16 for App Store and Play Store previews, Reels, Shorts and TikTok, and 1:1 for social feeds.
In addition to every app_* tool from expo-mcp-bridge. Full parameters are in the tools reference.
A browser editor with live preview, a drag-to-reorder and drag-to-resize timeline, a per-scene inspector (captions, duration, speed, transitions, draw a zoom area, scroll amount), video settings (format, caption side, colors from your app, sound) and a prompt box. It understands common edits on its own:
With ANTHROPIC_API_KEY set (or an ant auth login profile), free-form requests go straight to Claude (claude-opus-5-5); otherwise they go to your agent through video_wait_for_prompt. Prompts carry the scene you have selected, so "fix this" means that scene.
Reopen a project without an agent with npx expo-launch-video studio.
Projects live in launch-video/ inside your app (captures, project.json, renders in out/); init adds the folder to .gitignore.
expo-mcp-bridge mountedSee CONTRIBUTING.md for details.
MIT © Rudra Samadhiya
Exports are muxed with Mediabunny (MPL-2.0).
來源:README.md,提交 dbe4d25
Check whether the mobile app is connected and show device info. Call first.
無需輸入參數。
Compact text outline of the current screen (buttons, inputs, text, lists) with refs like [e3] to act on. Prefer this over screenshots.
maxLinesPositions (dp, window coordinates) and font sizes of elements on the current screen. For layout checks and visual work; app_snapshot is cheaper for acting.
limitJPEG screenshot of the app. Use only for visual/layout questions; app_snapshot is cheaper for finding elements. With saveTo, writes the file and returns only its path (no image tokens).
areasaveToqualitymaxWidthfullScrollRun several actions in one call (fastest way to fill forms or walk a flow). Returns the screen once at the end. Steps: {action:"tap"|"type"|"scroll"|"toggle"|"navigate"|"wait"|"dismiss_keyboard", ...that tool's args}.
fullsteps必填snapshotPress a button/pressable element. Returns what changed on screen plus any new errors.
reffulllongtexttestIDsnapshotSet text in an input (replaces by default). Target by ref, testID, or placeholder text.
reffulltextvalue必填appendsubmittestIDsnapshotScroll a list/ScrollView (first one on screen if no target).
reffulltextamounttestIDsnapshotdirectionFlip a Switch (or set it with value).
reffulltextvaluetestIDsnapshotOpen a route (expo-router path like "/settings") or a full deep link.
fullpath必填replacesnapshotWait until text or a testID appears (or disappears with gone=true). Cheaper than polling snapshots.
gonetexttestIDtimeoutConsole logs and JS errors captured in the app.
clearlevellimitsincesearchHTTP requests made by the app (fetch/XHR) with status, timing and truncated bodies.
limitsincebodiessearchfailedOnlyRun JavaScript inside the app (dev only) and return the JSON result. Expression or statements with return. `bridge` and `RN` (react-native) are in scope.
code必填Reload the JS bundle (like pressing r in Metro).
無需輸入參數。
Hide the on-screen keyboard.
無需輸入參數。
Press a hardware/system key on an Android device via adb (USB or Wi-Fi debugging): volume_up, volume_down, mute, back, home, app_switch, enter, tab, delete, power, menu, escape.
key必填repeatCapture app screens for the launch video: screenshot, element positions and the full scroll content. Give routes to capture several screens in one call (in video order), or nothing to capture the current screen.
nameroutesscrollScreen-record the phone for a few seconds (real frames, ~6-12 fps): optionally navigate first, scroll smoothly, or tap an element mid-way. The clip plays in the video as a live recording.
tapnameroutetapAtscrollsecondsliveLoadscrollFromCapture an interaction: the current screen, a tap on an element (animated finger + ripple in the video) and the screen it leads to.
refnametexttestIDBuild the video timeline from all captured screens: intro, one scene per screen with automatic timing, zooms, scroll speed-ups and captions, then an outro. Replaces the current timeline.
ctaformatappNametaglinetargetSecondsShow the current video timeline (compact).
無需輸入參數。
Edit the timeline. ops is a list of: {op:"update", scene, duration?, speed?, title?, subtitle?, transition?("slide"|"fade"|"zoom"|"rise"|"none"), focus?(element label | {x,y,w,h} dp | null), zoom?(1-3), zoomTimes?([inStart,inEnd,outStart,outEnd] recording seconds, for recordings), scroll?(0-1 | false), callouts?, popouts?} {op:"move", scene, to(number|"first"|"last") | before | after} · {op:"remove", scene} · {op:"add", asset, at?} · {op:"drop", asset} (discard a bad capture) {op:"settings", format?, appName?, tagline?, cta?, captionSide?("left"|"right"), sound?{sfx: bool, volume: 0-1}, theme?{accent, bg:[c1,c2]}} · {op:"plan", targetSeconds?} scene = id ("s3"), 1-based position, or a screen name/route ("dashboard").
ops必填Open the studio in the browser: live preview, timeline, per-scene controls and a prompt box where the user can type edits.
openRender the video to MP4 (in the studio tab, opening it if needed) and return the file path.
無需輸入參數。
Wait for the user to type an edit request in the studio prompt box (ones the studio could not apply itself). Apply it with video_edit, answer with video_reply, then call this again to keep collaborating.
timeoutSecondsShow a short message to the user in the studio chat.
text必填已滿足適用檢查項的 90%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
npx expo install expo-mcp-bridge react-native-view-shotnpm install --save-dev expo-launch-videonpx expo-launch-video initRead https://raw.githubusercontent.com/Rudrasamadhiya/expo-launch-video/main/AI_SETUP.md and set up app control and launch videos in this project.import { Stack, router } from 'expo-router';import { AgentBridge } from 'expo-mcp-bridge';
export default function RootLayout() { return ( <> <Stack /> <AgentBridge router={router} /> </> );}1. Shoot video_record {route:"/dashboard", seconds:8, scroll:true} live from the phone video_record {tap:"My Analytics", seconds:6} tap → hero / side pop-out2. Plan video_plan {targetSeconds:45, format:"landscape"} timing, zooms, captions, chips3. Direct video_edit [{op:"update", scene:"dashboard", title:"…", side:"right"}] refine any scene4. Studio video_studio → you drag, trim and type prompts video_wait_for_prompt / video_reply5. Render video_render → launch-video/out/launch-landscape.mp4make dashboard 4s · speed up analytics 2x · slow down the 3rd scene · remove pricingmove faq after help · zoom on Log In in login · no zoom on dashboard · scroll mistakes 60%title dashboard: Your day at a glance · fade transition on analytics · portrait · squaretext on the right · make it 30 seconds · cta: Get it on Google Play · color #7c3aed · mute · volume 60%npx expo-launch-video init # .mcp.json ("launch-video" server), skills, AGENTS.md, .gitignorenpx expo-launch-video studio # reopen the studio for ./launch-video (edit, preview, export)npx expo-launch-video # run the MCP server (your agent starts this for you)npx expo-launch-video --helpserver/ MCP server, director (auto-planning), capture and recording, studio server, prompt parser, optional Claude editsstudio/ the editor (vanilla JS): renderer, motion graphics, sound design, MP4 export (Mediabunny / WebCodecs)skill/ the directing playbook installed by initAI_SETUP.md one-shot setup guide an AI agent can follownpm installnpm test