Communitygithub.com

0xsline/openchatcut

用於 OpenChatCut 影片編輯或創作工作流程的匯出、渲染、下載、分享、最終交付、字幕檔案匯出、渲染選項、僅限本機素材處理,或匯出備用方案說明。

openchatcut 是什麼?

這個技能為 OpenChatCut 影片編輯器提供完整的匯出與交付流程管理。其主要功能包括透過 `submit_export` 或 `submit_render_job` 提交渲染工作,並使用 `track_export` 監控非同步作業的進度與最終結果。技能預設的匯出政策會根據使用者意圖(如匯出、分享、完成編輯)主動選擇 `submit_export`,並在雲端匯出需要遠端素材時,才上傳原始檔案。此技能支援多種匯出格式,包括影片(H.264 MP4 或 VP8 WebM)、音訊(MP3)、XML 時間線(適用於 Premiere 或 DaVinci Resolve)以及字幕文件(SRT 或 TXT)。對於影片/音訊渲染,若長時間執行,建議使用 `track_export` 的 `wait` 動作等待一段時間,若逾時則告知使用者渲染仍在背景進行。下載檔案時,會自動處理下載目錄(`~/Downloads` 或 `%USERPROFILE%\Downloads`)中的衝突、`.crdownload` 檔案,並以安全的方式命名(如 `name (1).mp4`),且必定將下載的影片嵌入聊天視窗中。若專案包含僅限本機的素材,則可選擇先上傳/註冊雲端可讀的替代素材,或使用本地 CLI 匯出路徑。此技能能在多種開發者環境(如 Claude Code、Cursor、Codex)與 OpenChatCut 編輯器之間提供順暢的整合,確保最終交付物能穩定產出。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/0xsline/openchatcut/tree/HEAD/src/agent/skills/export

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

匯出

使用 OpenChatCut 的匯出工具進行最終交付。匯出請求應呼叫 submit_export(或非同步的 submit_render_job),然後使用 track_export 檢查狀態,並在結果未立即返回時取得最終交付物。

預設政策:

  • 當使用者要求匯出/分享/完成 OpenChatCut 時間線時,優先使用 submit_export。
  • 編輯期間預設將原始素材保留在本機。僅當雲端匯出/校樣需要遠端素材,且使用者未禁止上傳時,才上傳原始檔案。
  • 不要將沙箱 ffmpeg 工作包裝成 OpenChatCut 工具。只有在使用者明確要求一個獨立於 OpenChatCut 編輯工作流程之外的本地檔案操作時,才使用沙箱 ffmpeg 進行完整的影片處理。對於 OpenChatCut 編輯任務,不要產生預先編輯或扁平化的本地渲染作為主要的審查/最終交付物;請使用 OpenChatCut 匯出。

持久化匯出

使用 submit_export 作為執行路徑:

{
  "format": "video",
  "codec": "h264",
  "resolution": "1080p",
  "fps": 30,
  "name": "final-cut"
}

影片編解碼器選項為 h264(MP4,預設)和 vp8(WebM)。影片影格率選項與編輯器 UI 一致:24、25、30、50 或 60;省略 fps 以符合時間線設定。音訊匯出為 MP3:傳入 "format":"audio" 並省略 codec / fps,除非您明確傳入 "codec":"mp3"。

submit_export 會返回一個持久化的 renderId。某些匯出類型(例如字幕檔案)可能會立即完成並返回 downloadUrl;影片/音訊通常需要 track_export 來等待完成。

在取得每個 downloadUrl 後:

  • 確認使用者的「下載」資料夾:macOS/Linux 為 ~/Downloads,Windows 為 %USERPROFILE%\Downloads。
  • 在觸發任何代理程式/瀏覽器下載之前,檢查「下載」資料夾中是否有最近幾分鐘內建立的、符合預期匯出名稱、副檔名或渲染/下載 URL 基底名稱的 Chrome 下載檔案。包括已完成的檔案和正在進行中的 .crdownload 檔案。
  • 如果存在匹配的、正在進行中的 .crdownload 檔案,請勿觸發另一個下載。請等候 Chrome 移除 .crdownload 副檔名且最終檔案大小不再變更,然後使用該已完成的檔案。
  • 如果已存在匹配的、已完成的檔案,請直接使用它,而不是再次下載。
  • 如果僅存在較舊的檔案,請將其視為衝突,而非本次匯出的結果。
  • 不要覆寫現有檔案;必要時選擇一個安全的編號檔案名稱,例如 name (1).mp4。
  • 務必將完成的匯出檔案下載到「下載」資料夾,而不是暫存或工作目錄。
  • 務必將下載的影片內嵌在聊天視窗中。如果有多個匯出的影片,請下載所有影片並顯示每個預覽,而不只是第一個。

如果專案包含僅限本機的素材,請在渲染前上傳/註冊雲端可讀的替代素材,或者在使用者想要保持本機作業時使用「本地 CLI 匯出」路徑。

當存在 renderId 時,請回報它。該工作也可以在編輯器右上角的匯出佇列中看到,包括進度和取消功能。當使用者要求將結果保留在「我的素材庫」,或者活躍工作流程(例如 livestream-to-clips)明確預設為自動具體化時,請使用 saveToMediaPool:true;否則預設保持為一般的可下載匯出。對於較長的影片,請使用 action:"wait" 和 timeoutSeconds:20 呼叫 track_export 一次。如果它返回 waitExpired:true,請回報導覽在背景繼續,並結束此輪對話。稍後使用 action:"status" 檢查;重複的等待只會保持代理程式對話輪次開啟。當此渲染處於活躍狀態時,請勿為同一時間線啟動另一個匯出。

當使用者詢問匯出/渲染狀態,或當前輪次確實需要等待已提交的影片/音訊渲染時,請使用 track_export。已完成的連接器匯出會返回 downloadUrl;對於每個完成的條目,請使用上述衝突安全規則將檔案下載到「下載」資料夾,並在聊天中內嵌顯示:

{
  "action": "status",
  "renderIds": "abc123"
}

對於最新的專案匯出,請省略 renderIds 並傳入 "latest": true。track_progress 用於生成/轉錄/上傳工作,而非渲染工作。

對於 NLE XML,請使用 format:"xml" 的 submit_export:

{
  "format": "xml",
  "nleFormat": "fcp_xml_resolve",
  "timelineId": "abc123"
}

nleFormat 的值為 fcp_xml(適用於 Premiere XML,預設)和 fcp_xml_resolve(適用於 DaVinci Resolve XML)。對於非活躍時間線,請省略 timelineId,或傳入時間線 ID/前綴。請閱讀並回報導覽:XML 格式可能會遺失字幕、色塊、SVG、不支援的剪輯屬性以及未渲染的動態圖形。動態圖形僅在透明 ProRes MG 匯出流程提供 motionGraphicRenderKeys 時才能在 XML 中表示;否則匯出工具會報告它們已被遺棄。

對於素材庫來源下載,請對基於檔案的來源素材使用 request_asset_download。它會返回一個受保護的後端下載 URL/路徑,指向原始來源媒體。請勿使用 pull_asset 進行使用者下載;pull_asset 僅限沙箱使用。

對於字幕檔案,請使用 format:"subtitles" 的 submit_export:

{
  "format": "subtitles",
  "subtitleFormat": "srt"
}

格式為 srt 和 txt。匯出會使用字幕項目的實際時間線文字時間、來源範圍、翻譯變體、顯示文字覆寫以及分頁欄位(例如 wordsPerPage / maxCharactersPerLine),並建立一個持久化的可下載匯出工作。它適用於可下載的字幕檔案。它目前還不會重複使用瀏覽器 Remotion 字幕頁面規劃器,因此視覺換行/分頁在時間上是正確的,但近似於內嵌字幕分頁,並非位元組一致。對於非活躍時間線,請從 manage_timelines 或 read_project 傳入 timelineId。

若要將一個動態圖形匯出為透明的 ProRes 4444,請使用 export_motion_graphic_prores:

{
  "itemId": "abc123",
  "filenameMode": "asset"
}

匯出特定時間線實例時,優先使用 itemId,因為該項目攜帶即時的 propertyOverrides(例如編輯過的文字)。對素材庫動態圖形使用 assetId;後端在該素材存在時間線實例時,會使用第一個時間線實例,這與編輯器的素材庫匯出行為相符。若要匯出多個動態圖形,請在單次呼叫中傳入 itemIds 或 assetIds。每個動態圖形仍然會變成一個獨立的持久化渲染;使用返回的 renderIds 呼叫 track_export 來等待,然後透過每個返回的渲染下載路徑進行下載。

準備應參考已渲染動態圖形的 XML 時,請將 "filenameMode":"xml" 和相同的 timelineId 傳遞給 export_motion_graphic_prores,然後保留返回的 motionGraphicRenderKey / motionGraphicRenderKeys;在渲染完成後,將這些金鑰和相同的 timelineId 傳遞給 submit_export.motionGraphicRenderKeys,搭配 format:"xml"。

本地渲染(此版本)

所有渲染都在本地進行:submit_export / submit_render_job 驅動本地渲染服務(無頭 Chrome,使用與編輯器顯示的相同時間線狀態),直接從磁碟上的 /media/uploads/ 讀取媒體。對於磁碟支援的素材,不需要 S3、CLI 或等待的雲端工作。

  • submit_export:字幕/XML 同步返回;影片/音訊也會在此版本的呼叫中進行渲染(長時間處理的時間線可能需要一些時間——請警告使用者而不是輪詢)。
  • submit_render_job + track_export:非同步路徑——立即返回一個 renderId,使用 track_export(renderIds / latest / onlyActive)進行輪詢,然後將返回的下載路徑交給使用者。
  • 仍然處於 blob: 佔位符(上傳中)的素材尚無法渲染——請先等待 track_progress target=upload 報告準備就緒,然後再提交。

備用方案

如果渲染失敗,因為某個素材的位元組缺失(佔位符從未重新連結,檔案從磁碟刪除):

  1. 要求使用者在「我的素材」(離線素材橫幅)中重新連結該素材,或重新匯入檔案。
  2. 對於 URL 來源的媒體,重新執行 download_media 以還原位元組,然後重新提交。

除非正在除錯,否則不要告訴使用者他們需要了解 HTML-in-Canvas、Remotion 或儲存內部機制。請在產品層級解釋:

  • "本地快速匯出"
  • "素材還在上傳,稍等再匯"
  • "需要先重新連結本地素材"

結果追蹤

對於 submit_export,記錄:

  • renderId
  • 時間線/範圍/解析度/編解碼器/影格率
  • 使用者可以從編輯器渲染工作面板下載

記錄已上傳的素材 ID,以及當雲端匯出因僅限本機素材而被阻止時所嘗試的任何備用方案。

Individual skills in this repo

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

0xsline/openchatcut

Connect an MCP-capable coding agent to OpenChatCut and edit local video projects. Use when the user asks to install, connect, or set up OpenChatCut; inspect or edit an OpenChatCut project; work with its timeline, transcript, captions, media, generation, motion graphics, audio, color, or export tools; or recover from an OpenChatCut MCP error.

0xsline/openchatcut

Use when acquiring or importing media into a OpenChatCut project asset library for video editing or creation, including local/attached videos, user-provided paths, public media URLs, web video/audio/image assets, upload fallback decisions, and deciding between import_media, download_media, or manual user action.

0xsline/openchatcut

AI image generation via Fal.ai, gpt-image-2, nano-banana, MiniMax image-01, and xAI Grok Imagine. Use when the user wants to generate or create an image / picture / still.

0xsline/openchatcut

Use when a OpenChatCut tool call fails or returns an unexpected shape.

0xsline/openchatcut

Music generation via Mureka, MiniMax, Atlas Cloud, and Sonilo. Use for instrumentals, songs, soundtracks, track/stem generation, covers, or video-conditioned scoring of the finished cut through `submit_music`.

0xsline/openchatcut

OpenChatCut product knowledge — UI layout, editor features, and how generation providers are configured. Use when the user asks about the product interface, how to use a feature, where to find something, or needs GUI guidance for something the agent cannot do directly. Also use as fallback when a task fails and the user needs to complete it manually in the UI. NOT for live project-state queries ("where are my folders?", "what's on my timeline?", "where is clip X?") — those are answered by `read_project`, not by this skill.

0xsline/openchatcut

AI shader generator for WebGL video effects, transitions, masks, and color grading (LUT / 调色 / 电影感 / film look). Use when the user wants a video effect (滤镜 / 特效), a transition (转场 / crossfade / wipe / cube / 3d), a mask (蒙版 / 遮罩 / reveal), a zoom / push-in (推近 / 推镜头), or a color grade — try the built-in effects (zoom, builtin LUTs) before generating a new shader.

0xsline/openchatcut

Use when checking whether agent edits are reflected in the OpenChatCut project and editor.

0xsline/openchatcut

AI video generation via Fal.ai, Seedance 2.0, Kling, MiniMax Hailuo, xAI Grok Imagine, and OFox. Use when the user wants to generate a video clip — text-to-video, image-to-video, first/last-frame transitions, reference-guided generation, multi-shot, or generatively editing / extending an existing clip.

0xsline/openchatcut

Text-to-Speech (TTS), voiceover, narration placement/sync, and custom sound effects (SFX) generator. Use when the user wants generated speech from text, wants to add/replace/align narration or voiceover for an existing video/timeline, wants to keep existing voiceover synced after visual retiming edits, needs voice audition/selection, or explicitly wants a newly generated/custom sound effect that is not available in the Sound Effects library.

0xsline/openchatcut

Use when the agent should ask the user for structured input with an in-chat form, including single-select, multi-select, text fields, style pickers, or voice audition choices.

相關技能