Communitygithub.com

geoqiao/short-video-skills

抖音、视频号、小红书にショート動画を公開(B 站は台本のみ)。検索サジェストを取得し、タイトル・説明文・ハッシュタグ・カバー文字・固定コメントを作成。その後、playwright-cli を使用してユーザーがログイン済みの Chrome で投稿フォームを自動入力し、動画とカバーをアップロード、コレクション・位置情報・AI 宣言(AI 使用時)・ハッシュタグを設定。公開ボタンは押さず、ユーザーが明示的に「公開」と言った場合のみ押下。

short-video-skills とは?

このスキルは、AI エージェントがショート動画の公開プロセスを「台本作成」と「フォーム入力」の 2 段階に分割して実行するためのものです。まず、検索サジェスト(抖音、小红书、Google)を取得し、ユーザーの検索意図に基づいたタイトル、説明文、ハッシュタグ、カバー文字、固定コメントを作成します。次に、playwright-cli を使ってユーザーがログイン済みの Chrome ブラウザに接続し、各プラットフォーム(抖音、微信视频号、小红书)の投稿フォームに動画とカバーをアップロードし、コレクション、位置情報、AI 声明などの項目を自動入力します。ただし、公開ボタンは押さず、ユーザーが明示的に「公開」と指示した場合のみ押下します。このスキルは、動画の制作方法に関わらず利用でき、台本の作成や編集、サジェストの確認、ハッシュタグの選定、動画の差し替え、フォーム内容の確認などに役立ちます。対応プラットフォームは抖音、微信视频号、小红书で、B 站は台本作成のみ対応。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/geoqiao/short-video-skills/tree/HEAD/skills/video-publish

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

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

ドキュメント

ショート動画公開

2 段階に分けて実施:最初に台本を作成し、次にフォームに入力します。台本は当該エピソードのディレクトリ内の post.md(構造は references/post-template.md 参照)に記述し、フォーム入力時はそれに従います。プラットフォームのルールと根拠は references/platform-rules.md を参照し、公開前は投稿ページを基準とします。

一、台本作成

台本は検索意図に基づいて作成します。まず視聴者が実際にそのように質問しているか、どの呼称を使っているかを確認し、タイトル、カバー文字、説明の最初の文が同じ質問に対応するようにします。抖音と微信视频号では、トラフィックの大部分は検索ではなくレコメンドから来るため、これらのキーワードの主な役割はシステムが適切な視聴者に動画をプッシュすることです。

サジェストを先に取得

  1. この動画が回答できる質問をリストアップします。各質問は意図の種類に対応します:主役を知る(”X 是什么”“X 好用吗”)、ツール選び(”X 对比”“哪个好”)、概念(”某术语是什么”)、方法(”X 怎么用”)。
  2. サジェストを読み、視聴者が実際にそのように検索しているか、どの呼称を使っているかを確認します。サジェストには検索ボリュームはなく、誰かが検索したことだけを示します。公開当日にもう一度読み直し、数日前に保存した結果を使い回さないでください。
    • 抖音:ユーザーがログイン済みの Chrome に接続し(下記「ブラウザに接続」参照)、www.douyin.com のタブを開いて切り替え、scripts/douyin-suggest.js の SEEDS を編集し、playwright-cli -s=chrome --raw run-code --filename=scripts/douyin-suggest.js を実行します。
    • 小红书:www.xiaohongshu.com/explore のタブを開き、scripts/xhs-suggest.js の SEEDS を編集して実行します。各ワードごとにページをリロードし、約 6 秒に 1 ワード、一度に 25 ワードを超えないようにします。
    • Google:node scripts/google-suggest.mjs '[['种子词','zh-CN'],['seed','en']]' を実行します。ブラウザは不要です。
    • これらの 3 つのスクリプトは読み取り専用です。使用後は自分で開いたタブのみ閉じます。
  3. 生の結果は日付ごとに JSON として保存し、台本内でファイル名を引用します。
  4. メインターゲットと完全に一致する意図の種類を、タイトル、カバー、説明の最初の文に記述します。部分的にしか回答できない意図(例えば、2 製品のみ比較しているのに「どれが一番良い」に対応するなど)はハッシュタグのみに入れます。そうしないと、流入した視聴者が離脱します。サジェストに繰り返し出現するが動画が回答していない質問は無理に対応せず、新しい企画として記録します。

何度も検証された経験則:

  • 英語の専門用語を単独でメインキーワードにすると、適切なコンテンツにヒットしないことがよくあります。カバーのメインキーワードは中国語の質問形式を使用し、英語は説明とハッシュタグに入れます。
  • 動画内の呼称と視聴者の呼称が異なる場合、タイトル、カバー、ナレーションは視聴者に合わせます(例:視聴者が「上下文腐烂」と検索する場合、「上下文腐化」ではなく)。
  • 2 つのプラットフォームで呼称が異なることがよくあります。タイトルは両方で出現する方を使用します。

書き方

  • タイトル:視聴者が質問するであろう問題に、具体的な結論を加えます。視聴者が使う呼称を使用します。誰も検索しない専門用語はタイトルに入れません。タイトル、カバー文字、最初のナレーションは同じことを言います。
  • 説明文:最初の文でタイトルの問題を繰り返し、結論と数字を示します。次に動画で説明するいくつかの項目を、動画内に登場した実体語と数字とともに列挙します。最後にデータソースの制限条件を記述します。AI を使用した場合は AI 宣言を記述します(例:「ナレーションは AI 合成です」)。視聴者に向けて書き、制作過程は書きません。
  • ハッシュタグ:主役の正確な呼称、動画内で比較した対象、カテゴリー語、ターゲットオーディエンスにマッチする大きなキーワード。動画内で実際に言及した語のみを使用します。フォーム入力時は投稿ページで #語 を入力し、表示回数を確認します。数百億表示の汎用語(例:#AI)はその場で置き換えます。抖音ウェブ版は最大 5 つ、シリーズ名はコレクションに任せハッシュタグのスペースを占用しません;微信视频号は 1〜2 つ多く付けてもよく、シリーズ名を含めます。
  • 固定コメント:視聴者が自身の経験で回答できる質問を、動画末尾の問いかけと呼応させます。
  • カバー文字:2 行以内のタイトルに、数字や結論を含むフックを加えます。メインキーワードは中国語の質問形式を使用します。
  • 台本、カバー、ナレーション、画面内に URL や外部アカウントを表示せず、「あるサイトを見て」「○○を検索して」とは言いません。コメント、フォロー、コレクション表示を促すことはできます。
  • AI ナレーション、AI 画面、またはデジタルヒューマンを使用した場合は AI 宣言を行います;code-video のナレーションは AI 合成であり、それを使用した動画すべてに宣言が必要です。各プラットフォームのオプション名は references/platform-rules.md を参照します。

二、フォーム入力

各プラットフォームのセレクタ、注意点、方法:

  • 抖音クリエイターセンター:references/douyin.md
  • 微信视频号アシスタント:references/weixin.md
  • 小红书創作サービスプラットフォーム:references/xiaohongshu.md

ルール

  • ユーザーに代わって公開しない。 入力が完了したら公開ボタンの前で停止し、ユーザーの確認を待ちます。ユーザーがこの動画について明確に「公開」と言った場合のみクリックします;前の動画の許可は次の動画に引き継ぎません。
  • 公開をクリックした後、作品リストに新しい作品が表示され、コレクションの巻数とエピソード番号が合っていることを確認し、公開時間を post.md に記録します。
  • ユーザーが要求しない限り、プラットフォーム上で既に公開されたコンテンツを修正したり削除したりしません。
  • 位置情報、コレクション、イベントなど、毎回変わる可能性のある項目は、確定的でなければユーザーに質問します。
  • 自分で開いたタブのみ閉じます。タブ内にまだ公開されていないフォームがある場合、リロードせず、そのタブで他のスクリプトを実行しません。

ブラウザに接続

playwright-cli とそれに対応する Chrome 拡張機能が必要です。ユーザーは Chrome で各プラットフォームのクリエイター管理画面にログインしている必要があります。

playwright-cli -s=chrome attach --extension=chrome   # ユーザーが拡張機能のポップアップページで許可をクリック
playwright-cli -s=chrome tab-new <投稿ページURL>
playwright-cli -s=chrome tab-list
playwright-cli -s=chrome tab-select <番号>            # tab-new では run-code のターゲットページが切り替わりません
playwright-cli -s=chrome --raw run-code --filename=<スクリプト.js>
playwright-cli -s=chrome screenshot --filename=<画像.png>

run-code のスクリプトは async page => { … } 式であり、戻り値が出力されます。セッションが切断された後に再接続すると、以前開いていたタブはすべて消え、フォームを最初から入力し直す必要があります。

共通の方法

  • 各スクリプトの先頭で await page.bringToFront() を実行します。 ユーザーが同時に Chrome を使用している場合、投稿ページがバックグラウンドに回されることがよくあり、ドラッグ&ドロップやクリックがタイムアウトするまで待機します;タイムアウト前にキューイングされたキーボード入力は、ページがフォアグラウンドに戻った後に一気に入力され、説明文が乱れることがあります。タイムアウトが発生した場合は、まず説明文ボックスをクリアしてから再入力します。
  • 1 ステップ 1 スクリプト、実行後確認。 各ステップの終了時に関連領域の innerText を読むかスクリーンショットを撮り、値が実際に変更されたことを確認してから次のステップに進みます。
  • 動画をアップロード:最初に playwright-cli -s=chrome drop '<アップロード領域セレクタ>' --path=<mp4> を試します。ドラッグ&ドロップでアップロードがトリガーされないプラットフォームでは、scripts/ 内の注入スクリプトを使用します。これはファイルを base64 に変換し、それを run-code スクリプトに埋め込み、DataTransfer を使用して file input にセットし、change イベントを発火させます。拡張モードでは setInputFiles とファイル選択ダイアログは使用できません。
  • カバーをアップロード:最初にカバーのポップアップを開き、その後注入スクリプトを実行します。3 つのプラットフォームすべてで 2 枚必要です:4:3 の横カバーと 3:4 の縦カバーです。16:9 のカバーを直接使用するとタイトルが切り取られます。
  • ドロップダウンと検索ボックス:多くの入力ボックスはドロップダウンが展開されているときのみ表示されます。fill や click で「要素が表示されていません」というエラーが出た場合は、現在の値を表示しているボックスをクリックし(必要に応じて boundingBox を使用するか、evaluate 内で座標を取得して page.mouse.click)、入力ボックスが表示されたら入力を開始します。検索をトリガーする必要があるボックスでは、1 文字ずつ keyboard.type を使用します。fill ではトリガーされません。
  • ドロップダウン項目は正確に選択:完全なテキストでマッチングするか、evaluate 内で innerText が完全に等しく、かつドロップダウン領域内で表示されている要素を見つけてから座標をクリックします。部分的なテキストフィルターでは外側のコンテナをクリックし、別の項目を選択してしまう可能性があります。選択後、現在の値を読み取ります。
  • ホバー時のみ表示されるボタン:最初に page.mouse.move でカード上に移動し、0.5 秒待ってからボタンの位置をクリックします。
  • 英語のオプション:一部のプラットフォームではオプションが英語で表示されることがあります(微信视频号の動画ラベルなど)。ページ上に実際に表示されているテキストに従って選択します。

公開後

抖音データセンターで「検索ワード」とトラフィックソース内の検索比率を確認し、今回選択したワードと比較します。書き方を変更した動画は記録しておき、次回比較する際にどの変更が効果を発揮したかを区別できるようにします。日次のデータは video-data スキルで収集できます。

納品時に説明すること

  • 台本が狙った意図、使用したサジェスト、接続しなかったワードとその理由。
  • 各プラットフォームに何を入力したか:タイトル、ハッシュタグの数、カバー、コレクションとエピソード番号、位置情報、宣言、ハッシュタグやイベント。
  • どのステップで停止したか、入力しなかった項目や台本と一致しない項目、その理由。
  • 公開をクリックした場合:公開時間、作品リストの確認結果、コレクションのエピソード番号。

Individual skills in this repo

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

関連スキル