Communitygithub.com

0xsline/openchatcut

當代理需要透過聊天內的表單向使用者要求結構化輸入時使用,支援單選、多選、文字欄位、樣式選擇器或語音試聽選項。

openchatcut 是什麼?

這個技能為 AI 代理提供了一個使用「表單小工具」(Widget Forms)的標準方法,讓代理可以在聊天中動態渲染互動式卡片,以向使用者收集結構化輸入。它適用於需要精確選項或創造性方向的場景,例如影片製作規劃與角色設定。該技能支援多種欄位類型,包括單選、多選、文字輸入、視覺樣式選擇與語音試聽,並會將使用者選擇的結果轉換為下一輪對話中的結構化 JSON 回覆。使用者必須在一次提問中完成所有欄位設計(最多 12 個),以避免往返修正。常見使用平台為支援 MCP 表單工具的編輯器(如 OpenChatCut 或相容的聊天 UI),透過 `ask_followup_questions` 工具實作。此技能特別適用於 Cursor、Claude Code 或 Codex 等工具,可取代繁複的手寫標記,讓 AI 代理能流暢地主導使用者輸入流程。

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

在你喜歡的 AI 中提問

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

說明文件

Widget Forms

使用表單工具,而不是手寫標記:編輯器聊天會將表單渲染為互動式卡片,並回傳使用者的結構化答案。

執行規則

呼叫 ask_followup_questions。它會將你的欄位序列化為編輯器原生的表單卡片;使用者的提交內容會以他們的下一個訊息形式回傳。

在呼叫工具之前,先規劃好整個問卷。僅發送一份最終表單,而非一份試用表單後再接一份修正表單。該工具最多支援 12 個欄位;如果使用者要求更多問題,請在第一次呼叫前將相關提示合併為組合欄位。

在呼叫 ask_followup_questions 之後,停止該輪並等待提交的答案出現在聊天中。在使用者的選擇出現在對話中之前,不要套用選擇、建立素材,或根據建議繼續規劃。

支援的欄位對應

建立一個 fields 陣列。以使用者的對話語言撰寫所有可見字串。

  • 原生 <form-single> -> { type: "single", variant: "default" }
  • 原生 <form-multi> -> { type: "multi", variant: "default" }
  • 原生 <form-text> / <form-textarea> -> { type: "text" }
  • 原生 <form-visual> -> { type: "single", variant: "visual" }
  • 語音試聽卡片 -> { type: "single", variant: "voice" }
  • 原生開始場景卡片 -> { type: "single", variant: "scenario" }

表單文案語氣

對於表單層級的文字(title、prompt、fields[].label、submitLabel 和 messagePrefix),請以 OpenChatCut 是位能幹的影片製作夥伴,邀請使用者描述他們想要什麼的方式書寫,而不是像一份制式的調查問卷。

目標為:

  • 溫暖、開放式、且以行動為導向。文案應暗示「選擇最接近的影片需求,或直接告訴我你的想法;我們可以一起找出解決方案。」
  • 簡短且易於掃讀。對 prompt 使用一個自然的句子,對問題標籤使用簡潔的問句。
  • 誠實的能力框架。OpenChatCut 可以協助許多影片工作流程,但不要聲稱不支援的能力,或在輸入內容已知之前保證結果。
  • 使用者的語言與當地產品術語。將「OpenChatCut」、「B-roll」、「Motion Graphics」、「MG 動畫」、型號/產品名稱和平台名稱保留為其既定形式。
  • 面向使用者的創意用詞。對於早期規劃或創意輸入表單,偏好使用諸如點子、方向、計畫、故事、鏡頭列表、觀眾、氛圍或影片需求等自然詞語,而非內部生產文件語言。

避免僵硬的標籤,例如「選擇影片類型」、「請為此專案選擇影片類型」或「你想製作什麼類型的影片?」用於場景輸入,除非主機沒有空間容納更溫暖的文案。

對於場景輸入表單,偏好使用類似這樣的文案:

{
  "title": "你想製作什麼?",
  "prompt": "選擇最接近的影片場景,或選擇「其他」並描述你的想法。",
  "submitLabel": "開始創作",
  "messagePrefix": "我想從這個影片方向開始:",
  "fields": [
    {
      "id": "scenario",
      "label": "哪個場景最適合你的影片?",
      "type": "single",
      "variant": "scenario",
      "otherPlaceholder": "例如:將我的旅遊片段轉換為氛圍 Vlog / 為新產品製作宣傳影片"
    }
  ]
}

不要在表單中包含檔案上傳問題。如果任務實際上需要來源媒體,而專案/聊天中尚未擁有它,請另外要求使用者在編輯器中上傳檔案(拖放或上傳按鈕,或貼到聊天撰寫器中)。檔案上傳不是每個問卷的預設必要條件;僅當下一個編輯步驟依賴缺少的媒體時才要求。

對於選擇欄位:

  • 使用 id 作為下一個工具呼叫所需的內部值。
  • 使用 label 作為使用者看到的內容。
  • 對於一般的單選和多選卡片(variant: "default"),僅保留選項標籤。除非使用者僅從標籤無法區分選項,否則不要為每個選項添加 description。
  • 主要為語音卡片使用 description。視覺樣式卡片通常應僅使用 preview + label。
  • 當非列表答案可接受時,使用 id: "__other__" 和與表單其餘部分相同語言的 label 添加一個明確的選項,使用使用者對於非列表答案所期望的詞語。該小工具會在選中時將此選項轉換為文字輸入。如果文字輸入需要預留位置,請使用 otherPlaceholder。

對於視覺卡片:

  • 在 preview 中使用真實的圖片 URL 或 data image URL。
  • 對於設計型錄選項,先呼叫 manage_design_style 搭配 action: "list",然後將每個回傳的預設映射為 { id: preset.presetId, label: preset.name }(在此版本中無縮圖)。
  • 除非使用者已選擇了一個,否則切勿硬編碼型錄預設 ID。

對於語音卡片:

  • 使用 audioUrl 作為範例檔案。
  • 偏好看似 /voice-samples/doubao-liuchang.mp3 的記錄路徑或公開的 HTTPS URL。不要傳遞本地主機範例 URL;MCP 主機 iframe 無法可靠地解析編輯器本地媒體。
  • 保持使用者可見的描述與提供者無關。以與原生 OpenChatCut 試聽 UI 相同的方式描述語音:性別 / 年齡範圍 / 語氣 / 使用案例,例如 Female / young / friendly, general 或 男 / 中年 / 低沉知識解說。不要在選項描述中顯示提供者名稱,如 ElevenLabs 或 Doubao。
  • 保持選項 id 等於 submit_voice 所需的提供者語音 ID。

對於原生開始場景卡片:

  • 當使用者應選擇開始哪個 OpenChatCut 影片工作流程時使用,例如頭部特寫剪輯、MG 動畫、長影片轉短影片、產品/應用程式宣傳、AI 短片或解說影片。
  • 將其呈現為常見的影片需求/場景,而非唯一可能的影片工作流程。表單也必須讓使用者描述不同的影片需求。
  • 使用恰好一個帶有 variant: "scenario" 的單選欄位。
  • 使用以下規範 ID 和本地化標籤(以使用者的語言)提供選項。僅當你需要自訂非列表標籤時,才包含 id: "__other__";否則後端會附加一個本地化的「其他」選項。
  • 英文、中文和西班牙文的場景標籤/描述/起始提示已內建。對於任何其他使用者語言,忠實地將每個場景的英文 label、description 和起始提示翻譯為使用者的語言,並在選項物件中傳遞這些本地化值。保留 OpenChatCut 產品術語和工作流程含義;不要添加新的要求。使用 submitPrompt 來傳遞翻譯後的起始提示。此覆寫專用於 variant: "scenario";一般的選項卡片、語音卡片和視覺樣式卡片已經從你傳遞的值中獲得其可見文字。
  • 不要提供自訂的 preview 或 audioUrl;後端會填入原生的首屏預覽圖片。
  • 規範 ID:talking-head、motion-graphics、long-video-to-shorts、app-promo、ai-cinematic-short-film、explainer,加上 __other__ 用於自由形式的影片需求。
  • 範例選項: { "id": "talking-head", "label": "頭部特寫剪輯" }, { "id": "motion-graphics", "label": "動態圖形" }, { "id": "long-video-to-shorts", "label": "長影片轉短影片" }, { "id": "app-promo", "label": "產品 / 應用程式宣傳" }, { "id": "ai-cinematic-short-film", "label": "AI 短片" }, { "id": "explainer", "label": "解說影片" }, { "id": "__other__", "label": "其他" }。

目前限制

ask_followup_questions 僅用於結構化答案。它不支援原生自訂 HTML、時間軸參數橋接、編輯器項目選取或檔案上傳欄位。對於代理執行時期已持有的檔案或在此卡片外直接附加到聊天的檔案,媒體匯入工作流程仍然有效:呼叫 import_media 並執行輔助/直接上傳路徑。對於使用者想要直接放置到專案中的檔案,請要求他們使用 OpenChatCut 編輯器上傳 UI。

範例

{
  "title": "你的影片點子",
  "prompt": "選擇或填寫你心中的想法,以便 OpenChatCut 可以選出一個好的起點方向。",
  "submitLabel": "傳送點子",
  "messagePrefix": "繼續此影片方向:",
  "fields": [
    {
      "id": "goal",
      "label": "這支影片的主要目標是什麼?",
      "type": "single",
      "options": [
        { "id": "product_intro", "label": "產品介紹" },
        { "id": "social_ad", "label": "社群廣告" },
        { "id": "__other__", "label": "其他" }
      ]
    },
    {
      "id": "elements",
      "label": "它應包含哪些內容?(可複選)",
      "type": "multi",
      "options": [
        { "id": "broll", "label": "B-roll" },
        { "id": "logo", "label": "品牌標誌" },
        { "id": "__other__", "label": "其他" }
      ]
    }
  ]
}

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

Use when a OpenChatCut video editing or creation workflow needs export, render, download, share, final delivery, subtitle-file export, render choice, local-only asset handling, or export fallback explanation.

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.

相關技能