Communitygithub.com

kyinwind/videohero-skill

ローカルのVideoHeroアプリを、サポートされているCLIを通じて操作し、音声やモデルの探索、テキストからの音声生成、PPTX/PDFプレゼンテーションのナレーション動画レンダリング、ジョブの監視やキャンセルを行います。ユーザーがエージェントにVideoHeroでメディアを作成するよう依頼した場合に使用し、汎用的なメディアツールやUIクリック自動化には使用しないでください。

videohero-skill とは?

このスキルは、VideoHeroアプリの公式CLI(`videohero`)を通じて、テキスト読み上げ、プレゼンテーションの動画化、ジョブ管理といった機能を提供します。エージェントがVideoHeroのSwiftUIインターフェースやSwiftDataストアを直接操作することを防ぎ、安定したCLIプロトコルに従って安全かつ確実にタスクを実行するよう設計されています。ワークフローは、機能の読み取り、音声の解決、ジョブの送信、そして進捗の監視または結果の待機という段階を経ます。また、永続的なプロジェクトの作成(プレゼンテーション動画)と一時的なオーディオジョブ(テキスト読み上げ)を明確に区別し、ユーザーが許可しない限りモデルのダウンロードや出力の上書きは行いません。このスキルは、VideoHeroのCLIが利用可能な環境でのみ動作し、プロトコル非互換やCLIがない場合は明確な説明と有効化手順をユーザーに提供します。

対応~Claude Code~Codex CLI~Cursor
npx skills add kyinwind/videohero-skill

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

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

ドキュメント

VideoHero

VideoHeroは、サポートされているvideohero CLIを通じてのみ使用してください。SwiftUIインターフェースの自動化、VideoHeroのSwiftDataストアの編集、プライベートヘルパー実行ファイルの呼び出し、またはプロジェクトディレクトリ内へのファイルの直接構築は行わないでください。

CLI実行ファイルは、ユーザーまたはテストキットから提供された絶対パスから解決し、次に絶対パスのVIDEOHERO_CLIから、最後にPATH上のvideoheroコマンドから解決します。ワークフロー全体で、解決した実行ファイルをそのまま使用し続けてください。以下のように開始します。

CLI="/absolute/path/supplied/by/the/user/bin/videohero"
"$CLI" version --format json
"$CLI" capabilities --format json

絶対パスが提供されなかった場合は、command -v videoheroを解決し、返された絶対パスをCLIとして使用します。

実行ファイルが見つからない場合、自動化が無効になっている場合、または報告されたプロトコルに互換性がない場合は、処理を停止し、ユーザーがVideoHeroで有効化またはインストールする必要がある内容を説明してください。推測したコマンドを代用しないでください。期待される最初の安定プロトコルはバージョン1です。

ワークフロー

  1. 記憶されたエンジン、音声、フォーマット、デフォルトに頼るのではなく、現在の機能を読み取ります。
  2. 高価な生成の前に、videohero doctor --workflow <workflow> --format jsonを実行します。具体的なリクエストについては、インストールされているCLIがサポートしている場合、その入力パラメーターと出力パラメーターを含めます。
  3. リクエストされた音声をvideohero voices list --format jsonから解決します。ローカライズされたタイトルではなく、安定したidを使用します。ユーザーの説明が複数の音声と一致する場合は、黙って選択するのではなく、意味のある候補を提示します。
  4. 絶対パスと--format jsonを使用して--waitなしで操作を送信し、返されたジョブIDを解析します。長いテキストや機密性の高いテキストには--text-fileを優先します。
  5. 返されたジョブIDに対して、ユーザーが現在のターンで待機したい場合はvideohero jobs wait <job-id> --format ndjsonを使用します。それ以外の場合は、ジョブIDを報告し、後でjobs statusを使用します。プレゼンテーションジョブ中は、意味のあるステージ/進捗の変更と、estimateが存在する場合はそれを中継します。estimateがない場合は、VideoHeroに互換性のある履歴が不十分であることを意味します。完了時間を invent しないでください。jobs cancelは、ユーザーがキャンセルをリクエストした場合、または現在のタスクが明示的に許可した場合にのみ使用します。
  6. 最終状態がsucceeded、delivery.stateがdelivered、かつCLIが終了コード0で終了した場合にのみ、成功として扱います。レシートの実際のdestinationPathと警告を返します。

プレゼンテーションレンダリングは、capabilities.presentation.persistsProjectがtrueの場合、デフォルトで編集可能なVideoHeroプロジェクトを作成し、継続的に保存します。--save-projectオプションを追加または invent しないでください。テキスト読み上げは一時的なオーディオジョブのままであり、VideoHeroプロジェクトを作成してはなりません。どちらの場合も、VideoHeroのSwiftDataストアやプロジェクトディレクトリを自分で書き込まないでください。永続性はアプリが所有します。

ユーザーがそのアクションを許可しない限り、モデルのダウンロード、ライセンスの承諾、エージェント制御の有効化、個人ボイスの認証、既存の出力の上書き、または大幅に異なる設定での失敗した生成の再試行を行わないでください。タイムアウトは送信の失敗の証拠ではありません。ジョブをクエリするか、同じ冪等性キーで再試行してください。

ルート

パスは個別のコマンド引数として保持してください。ユーザーテキストをシェル構文に interpolate しないでください。リクエストが複雑な場合は、capabilitiesでサポートされているバージョン管理されたリクエストJSONを作成し、そのパスを渡すことで、脆弱なコマンドラインを組み立てるのを避けてください。

関連スキル