Communitygithub.com

0xsline/openchatcut

エージェントがユーザーに構造化された入力を求めるためのチャット内フォームを作成します。単一選択、複数選択、テキストフィールド、スタイルピッカー、音声オーディション選択肢をサポートします。

openchatcut とは?

このスキルは、OpenChatCutエディタ内でインタラクティブなフォームカードをレンダリングする `ask_followup_questions` ツールへのアクセスを提供します。AIエージェントは、これを使用して、単一選択、複数選択、テキスト入力、ビジュアルスタイルピッカー、音声オーディションなど、さまざまなフィールドタイプを含む構造化されたアンケートをユーザーに提示できます。ユーザーがフォームを送信すると、その回答がチャット内の次のメッセージとして返されるため、エージェントはそれを処理できます。主なユースケースは、動画作成プロセスの早い段階でユーザーの意図を収集することです。シナリオ選択フォーム(トーキングヘッド編集、モーショングラフィックスなど)を動的に生成したり、クリエイティブな方向性に関する自由形式の質問をしたりできます。このツールは最大12フィールドをサポートしており、フォームのコピーは、堅苦しいアンケートではなく、協力的なクリエイティブパートナーとして、温かく、開放的で、行動を促すトーンで作成する必要があります。現在の制限として、ファイルアップロードフィールドはネイティブサポートされておらず、ユーザーはエディタのドラッグ&ドロップUIを使用してメディアファイルを個別にアップロードする必要があります。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ウィジェットフォーム

フォームツールを使用して、マークアップを手書きする代わりにフォームを作成します。エディタのチャットはフォームをインタラクティブなカードとしてレンダリングし、ユーザーの構造化された回答を返します。

ランタイムルール

ask_followup_questions を呼び出します。これにより、フィールドがエディタのネイティブフォームカードにシリアル化されます。ユーザーの送信は、次のメッセージとして戻ってきます。

ツールを呼び出す前に、アンケート全体を計画してください。試行フォームを送信してから修正フォームを送信するのではなく、1つの最終フォームを送信してください。このツールは最大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 には自然な文章を1つ、質問ラベルは簡潔にしてください。
  • 正直な能力の枠組み。OpenChatCut は多くの動画ワークフローを支援できますが、サポートされていない能力を主張したり、入力が確定する前に結果を保証したりしないでください。
  • ユーザーの言語とローカルな製品用語。「OpenChatCut」、「B-roll」、「モーション グラフィックス」、「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またはデータ画像URLを使用します。
  • デザインスタイルカタログの選択肢については、最初に action: "list" を指定して manage_design_style を呼び出し、返された各プリセットを { id: preset.presetId, label: preset.name } にマッピングします(このビルドではサムネイルなし)。
  • ユーザーが既に選択していない限り、カタログのプリセットIDをハードコードしないでください。

音声カードについて:

  • サンプルファイルには audioUrl を使用します。
  • /voice-samples/doubao-liuchang.mp3 のような文書化されたサンプルパス、またはパブリックなHTTPS URLを推奨します。ローカルホストのサンプルURLを渡さないでください。MCPホストのiframeは、エディタローカルメディアを確実に解決できません。
  • ユーザーから見える説明は、プロバイダーに依存しないものにしてください。ネイティブの OpenChatCut オーディションUIと同じように声を説明します: 性別/年齢層/トーン/ユースケース。例: 女性/若年/フレンドリー、汎用 または 男 / 中年 / 低沉知識解説。オプションの説明に ElevenLabs や Doubao などのプロバイダー名を表示しないでください。
  • オプションの id は、submit_voice で必要なプロバイダーの音声IDと同じにしてください。

ネイティブスタートシナリオカードについて:

  • ユーザーが開始する OpenChatCut 動画ワークフローを選択する場合に使用します。例: トーキングヘッド編集、MGアニメーション、長編動画からショートへの変換、製品/アプリプロモーション、AI短編映画、解説動画。
  • これらは一般的な動画ニーズ/シナリオとして提示し、唯一可能な動画ワークフローとしてではありません。フォームでは、ユーザーが別の動画ニーズを説明できるようにする必要があります。
  • variant: "scenario" の単一選択フィールドを1つだけ使用します。
  • 以下の正規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.

関連スキル