mcpField
V
video-uploader

video-uploader

github.com/lijingpanマーケティング・グロース1290 回インストール37 週間前に更新
リポジトリ

video-uploader について

Playwrightによるブラウザー自動化で、中国および海外のソーシャルプラットフォームへの動画投稿を行うスキルです。直接投稿、設定ファイルからの投稿、一括処理、項目生成に対応し、プラットフォーム別の設定とCookie認証を備えています。

主な機能

  1. 015つのソーシャルプラットフォームへの投稿
  2. 02直接投稿と設定ファイル投稿
  3. 03設定に基づく一括投稿
  4. 04タイトル、タグ、説明文の生成
  5. 05プラットフォーム別の予約投稿と項目

活用シーン

  1. 01複数のプラットフォームへの動画投稿
  2. 02設定ファイルによる投稿日時の指定
  3. 03動画ファイル名から投稿情報を作成
  4. 04動画の一括投稿

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lijingpan/video-uploader --skill video-uploader

インストール後、Claude Code で/video-uploaderを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

OPENCLAW_INTEGRATION.md
README.md
CHECKLIST.md
openclaw-quickstart.md
references/
platform_fields.md
requirements.txt
platform_details.md
scripts/
conf.py
test_page_load.py
upload_video.py
upload_from_config.py
generate_upload_config.py
scripts/douyin_uploader/
__init__.py
main.py
scripts/ks_uploader/
main.py
__init__.py
scripts/tencent_uploader/
main.py
__init__.py
scripts/tk_uploader/
__init__.py
main.py
main_chrome.py
tk_config.py
scripts/utils/
base_social_media.py
browser_config.py
files_times.py
log.py
stealth.min.js
scripts/xhs_uploader/
__init__.py
accounts.ini
xhs_login_qrcode.py

詳細

動画アップロードスキル

包括的な検出回避対策と投稿フィールド生成機能を備えた、Playwright によるブラウザー自動化を使用して、中国および海外の主要なソーシャルメディアプラットフォームに動画を自動アップロードします。

対応プラットフォーム

Douyin (抖音):中国を代表するショート動画プラットフォームです。サムネイル、商品リンク、予約投稿、Toutiao/Xigua へのサードパーティー同期など、すべての機能に対応しています。

Kuaishou (快手):人気の中国ショート動画プラットフォームです。タイトル、ハッシュタグ(最大3個)、確認ダイアログを伴う予約投稿に対応しています。

Xiaohongshu (小红书):中国のライフスタイルおよびソーシャルコマースプラットフォームです。画像投稿と動画投稿の両方に対応しており、署名サービスを必要とする API ベースのアップロードを使用します。

TikTok:海外向けのショート動画プラットフォームです。Firefox ブラウザーを使用し、タイトル、ハッシュタグ、予約投稿(5分単位)、プライバシー設定に対応しています。

Tencent Video / WeChat Channels (视频号):WeChat に統合された動画プラットフォームです。短いタイトルの書式設定、コレクション、オリジナルコンテンツの宣言、カテゴリ選択に対応しています。

前提条件

Python 環境:Python 3.8 以降と pip がインストールされている必要があります。

依存関係:references/requirements.txt からインストールします。

sudo pip3 install playwright==1.52.0 loguru==0.7.3 requests==2.32.3 PyYAML==6.0.2

Playwright ブラウザー:パッケージのインストール後にインストールします。

playwright install chromium firefox

アカウント Cookie:各プラットフォームの認証には Cookie ファイル(Playwright のストレージ状態 JSON 形式)が必要です。初回使用時にはブラウザーのログイン画面が表示されます。

主なスクリプト

1. 直接アップロードスクリプト

scripts/upload_video.py - 直接アップロード用のコマンドラインインターフェイスです。

基本的な使い方:

python scripts/upload_video.py \
  --platform douyin \
  --title "Video Title" \
  --video /path/to/video.mp4 \
  --tags "tag1,tag2,tag3" \
  --account /path/to/cookie.json

必須引数:

  • --platform:対象プラットフォーム(douyin/kuaishou/tiktok/tencent/xhs)
  • --title:動画のタイトル(プラットフォームごとに文字数制限があります)
  • --video:MP4 動画ファイルの絶対パス
  • --tags:# を付けずにカンマ区切りで指定するハッシュタグ
  • --account:Cookie JSON ファイルの絶対パス

任意の引数:

  • --publish-date:予約投稿時刻「YYYY-MM-DD HH:MM:SS」、または即時投稿の場合は 0
  • --thumbnail:サムネイル画像のパス(Douyin のみ)
  • --product-link:商品 URL(Douyin のみ)
  • --product-title:商品の短いタイトル(Douyin のみ)
  • --category:動画カテゴリ(Tencent のみ)
2. 設定ファイルを使用したアップロード

scripts/upload_from_config.py - JSON/YAML 設定ファイルからアップロードします。

単一のアップロード:

python scripts/upload_from_config.py config.json

一括アップロード:

python scripts/upload_from_config.py batch_config.json --batch

設定形式(JSON):

{
  "platform": "douyin",
  "video": {
    "path": "/path/to/video.mp4",
    "title": "Video Title",
    "description": "Description text",
    "tags": ["tag1", "tag2", "tag3"]
  },
  "account": {
    "cookie_file": "/path/to/cookie.json"
  },
  "options": {
    "publish_date": "2024-12-31 18:00:00",
    "thumbnail": "/path/to/thumbnail.jpg"
  }
}

設定形式(YAML):

platform: douyin
video:
  path: /path/to/video.mp4
  title: Video Title
  description: Description text
  tags:
    - tag1
    - tag2
    - tag3
account:
  cookie_file: /path/to/cookie.json
options:
  publish_date: "2024-12-31 18:00:00"
  thumbnail: /path/to/thumbnail.jpg
3. フィールド生成ツール

scripts/generate_upload_config.py - 動画ファイルからアップロード設定を自動生成します。

設定の生成:

python scripts/generate_upload_config.py \
  --platform douyin \
  --video /path/to/video.mp4 \
  --output json

自動生成機能:

  • タイトル:ファイル名から抽出し、インテリジェントに書式設定します
  • タグ:タイトルから抽出し、ストップワードを除外します
  • 説明:タイトルを元に内容を拡張します
  • 短いタイトル:Tencent 向けに自動で書式設定します(6~16文字、特別なルールあり)

出力形式:

  • --output json:JSON 設定ファイル
  • --output yaml:YAML 設定ファイル
  • --output command:すぐに使えるコマンドライン
  • --output-file:標準出力ではなくファイルに保存します

スケジュールの生成:

python scripts/generate_upload_config.py \
  --platform douyin \
  --video /path/to/video.mp4 \
  --schedule-days 1 \
  --schedule-hour 18 \
  --output command

プラットフォーム固有のフィールド

Douyin (抖音)

必須:title(最大30文字)、video_path、tags、account_file

任意:publish_date、thumbnail_path(縦向き)、product_link、product_title(最大10文字)、description、location、sync_third_party

自動生成:title、tags、description、thumbnail(動画フレームから生成)

注記:2種類のページバージョン(v1/v2)を自動検出し、Toutiao/Xigua へのサードパーティー同期に対応しています。

Kuaishou (快手)

必須:title、video_path、tags(最大3個)、account_file

任意:publish_date、description

自動生成:title、tags(上位3個まで)、description

注記:ハッシュタグは最大3個で、確認ダイアログが必要です。

TikTok

必須:title、video_path、tags、account_file

任意:publish_date(5 分単位)、description、privacy(public/friends/private)、allow_comments、allow_duet、allow_stitch

自動生成:title、tags、description

メモ:Firefox(Chromium ではありません)を使用します。UI は 2 種類あります(iframe/直接表示)。

Tencent Video / WeChat Channels (视频号)

必須:title、video_path、tags、account_file

任意:publish_date、short_title(6~16 文字)、category、is_original、collection_id、description

自動生成:title、tags、short_title(自動整形)、description、category

メモ:短いタイトルには書式ルールがあります(使用可能な文字:《》"":+?%°)。システムの Chrome が必要です。

Xiaohongshu (小红书)

必須:title、video_path、tags、account_file

任意:publish_date、description、cover_path、location、post_type(video/image)、images

自動生成:title、tags、description、cover_path

メモ:別途 Flask 署名サービスが必要です。動画と画像の投稿に対応しています。

ブラウザーの検出回避設定

このスキルには、scripts/utils/browser_config.py に包括的な検出回避対策が含まれています。

Chromium の引数:

  • 自動操作を示すフラグを無効化
  • blink の機能検出を無効化
  • カスタムのユーザーエージェントとビューポート
  • 位置情報の偽装(中国のプラットフォーム向けに北京を設定)
  • タイムゾーンの設定
  • プラグインと言語の偽装

Firefox の引数:

  • 言語とロケールの設定
  • カスタムのユーザーエージェント
  • タイムゾーンの設定

実行時スクリプト:

  • navigator.webdriver を上書き
  • navigator.plugins を上書き
  • navigator.languages を上書き
  • chrome プロパティを追加
  • 権限クエリを上書き

プラットフォーム固有の設定:各プラットフォームには最適化されたブラウザー設定があり、get_platform_specific_config(platform) によって返されます。

認証と Cookie の管理

初回ログイン:Cookie ファイルが存在しない場合、または期限切れの場合、スクリプトは手動ログイン(QR コード/認証情報)のためにブラウザーウィンドウを開きます。ログインに成功すると、セッション Cookie が指定されたファイルに保存されます。

Cookie の検証:アップロードのたびに、アップロードページにアクセスして Cookie を検証します。検証に失敗すると、ログイン処理が開始されます。

Cookie の保存:セッションデータ、トークン、認証情報を含む Playwright のストレージ状態形式(JSON)で保存されます。

Cookie の再利用:有効な Cookie ファイルは、期限が切れるまで(通常 7~30 日間)、複数回のアップロードに再利用できます。

推奨される整理方法:

/home/ubuntu/cookies/
├── douyin_account1.json
├── douyin_account2.json
├── kuaishou_account.json
├── tiktok_account.json
└── tencent_account.json

OpenClaw 統合ワークフロー

ステップ 1:動画ファイルを準備

  • 動画ファイルがアクセス可能なパスに存在することを確認します
  • 形式が MP4 であることを確認します
  • プラットフォームの要件(長さ、サイズ、解像度)を確認します

ステップ 2:設定を生成

python scripts/generate_upload_config.py \
  --platform douyin \
  --video /path/to/video.mp4 \
  --schedule-days 1 \
  --output-file config.json

ステップ 3:確認とカスタマイズ

  • 生成された config.json を編集します
  • プラットフォーム固有のオプションを追加します
  • 必要に応じてタイトル、タグ、説明を調整します

ステップ 4:アップロードを実行

python scripts/upload_from_config.py config.json

ステップ 5:アップロードを確認

  • コンソール出力で成功/エラーメッセージを確認します
  • プラットフォームで公開された動画を確認します
  • 該当する場合は、予約時刻を確認します

一括アップロードのワークフロー

一括設定を作成:

[
  {
    "platform": "douyin",
    "video": {
      "path": "/path/to/video1.mp4",
      "title": "Video 1 Title",
      "tags": ["tag1", "tag2"]
    },
    "account": {
      "cookie_file": "/path/to/douyin.json"
    }
  },
  {
    "platform": "tiktok",
    "video": {
      "path": "/path/to/video2.mp4",
      "title": "Video 2 Title",
      "tags": ["tag3", "tag4"]
    },
    "account": {
      "cookie_file": "/path/to/tiktok.json"
    }
  }
]

一括アップロードを実行:

python scripts/upload_from_config.py batch.json --batch

一括処理の概要:アップロード総数、成功数、失敗数、エラーの詳細が表示されます。

トラブルシューティング

Cookie 期限切れエラー:古い Cookie ファイルを削除し、スクリプトを実行して新たにログインします。

アップロード失敗エラー:動画形式、サイズ、ネットワーク接続、プラットフォーム固有の要件を確認します。

ブラウザーが見つからないエラー:Playwright のブラウザーをインストールします:playwright install chromium firefox

ページ構造変更エラー:プラットフォームの UI が変更された可能性があります。スクリプトの更新を確認するか、ページ構造を手動で調査してください。

ヘッドレスモードの問題:ほとんどのプラットフォームでは、ヘッドレスモードは使用できません。アップロード中はブラウザーウィンドウが表示されます。

検出回避の問題:プラットフォームに自動操作を検出された場合は、scripts/utils/browser_config.py のブラウザー設定を確認し、stealth.min.js が読み込まれていることを確認してください。

参考ファイル

platform_fields.md:必須/任意/自動生成フィールド、例、制限事項など、すべてのプラットフォームのフィールド仕様を記載しています。

platform_details.md:URL、認証方式、機能、特記事項など、プラットフォーム固有の情報を記載しています。

requirements.txt:Python パッケージの依存関係です。

テンプレート

upload_config_template.json:すべてのフィールドを含む JSON 設定テンプレートです。

upload_config_template.yaml:すべてのフィールドを含む YAML 設定テンプレートです。

高度なプログラムでの使用方法

カスタム統合のために、アップローダーモジュールを直接インポートします。

import asyncio
from scripts.douyin_uploader.main import DouYinVideo, douyin_setup

async def upload():
    account_file = "/path/to/cookie.json"
    await douyin_setup(account_file, handle=True)
    
    video = DouYinVideo(
        title="My Video Title",
        file_path="/path/to/video.mp4",
        tags=["tag1", "tag2", "tag3"],
        publish_date=0,
        account_file=account_file
    )
    
    await video.main()

asyncio.run(upload())

制限事項

Xiaohongshu の統合:複雑な署名サービスが必要なため、完全には統合されていません。署名の生成には、別途 Flask サーバーが必要です。

ブラウザーの表示:ほとんどのプラットフォームでは、ヘッドレスモードを無効にする必要があります。アップロード中はブラウザーウィンドウが表示されます。

手動ログイン:初回の認証では、ユーザーによる手動操作(QR コード/認証情報)が必要です。プラットフォームのセキュリティ上、完全には自動化できません。

プラットフォームの変更:ソーシャルメディアプラットフォームでは、UI やセキュリティが頻繁に更新されます。プラットフォームのアップロードインターフェースが変更された場合、スクリプトの更新が必要になることがあります。

サンドボックスでのテスト:ヘッドレスのサンドボックス環境では、実際のアップロードをテストできません。ブラウザーの設定は検証済みですが、実際のアップロードテストにはグラフィカル環境が必要です。

コメント