video-uploader について
Playwrightによるブラウザー自動化で、中国および海外のソーシャルプラットフォームへの動画投稿を行うスキルです。直接投稿、設定ファイルからの投稿、一括処理、項目生成に対応し、プラットフォーム別の設定とCookie認証を備えています。
主な機能
- 015つのソーシャルプラットフォームへの投稿
- 02直接投稿と設定ファイル投稿
- 03設定に基づく一括投稿
- 04タイトル、タグ、説明文の生成
- 05プラットフォーム別の予約投稿と項目
活用シーン
- 01複数のプラットフォームへの動画投稿
- 02設定ファイルによる投稿日時の指定
- 03動画ファイル名から投稿情報を作成
- 04動画の一括投稿
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ lijingpan/ video-uploader --skill video-uploaderインストール後、Claude Code で/video-uploaderを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
OPENCLAW_INTEGRATION.mdREADME.mdCHECKLIST.mdopenclaw-quickstart.mdreferences/platform_fields.mdrequirements.txtplatform_details.mdscripts/conf.pytest_page_load.pyupload_video.pyupload_from_config.pygenerate_upload_config.pyscripts/douyin_uploader/__init__.pymain.pyscripts/ks_uploader/main.py__init__.pyscripts/tencent_uploader/main.py__init__.pyscripts/tk_uploader/__init__.pymain.pymain_chrome.pytk_config.pyscripts/utils/base_social_media.pybrowser_config.pyfiles_times.pylog.pystealth.min.jsscripts/xhs_uploader/__init__.pyaccounts.inixhs_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 やセキュリティが頻繁に更新されます。プラットフォームのアップロードインターフェースが変更された場合、スクリプトの更新が必要になることがあります。
サンドボックスでのテスト:ヘッドレスのサンドボックス環境では、実際のアップロードをテストできません。ブラウザーの設定は検証済みですが、実際のアップロードテストにはグラフィカル環境が必要です。