video-uploader

Upload videos to Chinese and international social media platforms using browser automation. Supports Douyin (抖音), Kuaishou (快手), Xiaohongshu (小红书), TikTok, and Tencent Video/WeChat Channels (视频号). Use when users need to automate video publishing to these platforms with complete field generation and anti-detection browser configuration.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "video-uploader" with this command: npx skills add lijingpan/video-uploader/lijingpan-video-uploader-video-uploader

Video Uploader Skill

Automated video upload to major Chinese and international social media platforms using Playwright browser automation with comprehensive anti-detection measures and field generation capabilities.

Supported Platforms

Douyin (抖音): China's leading short video platform with full feature support including thumbnails, product links, scheduled publishing, and third-party sync to Toutiao/Xigua.

Kuaishou (快手): Popular Chinese short video platform supporting titles, hashtags (max 3), and scheduled publishing with confirmation dialogs.

Xiaohongshu (小红书): Chinese lifestyle and social commerce platform supporting both image and video posts with API-based upload requiring signature service.

TikTok: International short video platform using Firefox browser with support for titles, hashtags, scheduled publishing (5-minute increments), and privacy controls.

Tencent Video / WeChat Channels (视频号): WeChat's integrated video platform with short title formatting, collections, original content declaration, and category selection.

Prerequisites

Python Environment: Python 3.8+ with pip installed.

Dependencies: Install from references/requirements.txt:

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

Playwright Browsers: Install after package installation:

playwright install chromium firefox

Account Cookies: Each platform requires cookie file for authentication (Playwright storage state JSON format). First-time use triggers browser login window.

Core Scripts

1. Direct Upload Script

scripts/upload_video.py - Command-line interface for direct uploads.

Basic Usage:

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

Required Arguments:

  • --platform: Target platform (douyin/kuaishou/tiktok/tencent/xhs)
  • --title: Video title (platform-specific length limits)
  • --video: Absolute path to MP4 video file
  • --tags: Comma-separated hashtags without # prefix
  • --account: Absolute path to cookie JSON file

Optional Arguments:

  • --publish-date: Schedule time "YYYY-MM-DD HH:MM:SS" or 0 for immediate
  • --thumbnail: Thumbnail image path (Douyin only)
  • --product-link: Product URL (Douyin only)
  • --product-title: Product short title (Douyin only)
  • --category: Video category (Tencent only)

2. Configuration-Based Upload

scripts/upload_from_config.py - Upload from JSON/YAML configuration files.

Single Upload:

python scripts/upload_from_config.py config.json

Batch Upload:

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

Configuration Format (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"
  }
}

Configuration Format (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. Field Generation Tool

scripts/generate_upload_config.py - Auto-generate upload configuration from video file.

Generate Configuration:

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

Auto-Generation Features:

  • Title: Extracted from filename with intelligent formatting
  • Tags: Extracted from title with stop-word filtering
  • Description: Expanded from title
  • Short Title: Auto-formatted for Tencent (6-16 chars, special rules)

Output Formats:

  • --output json: JSON configuration file
  • --output yaml: YAML configuration file
  • --output command: Ready-to-use command line
  • --output-file: Save to file instead of stdout

Schedule Generation:

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

Platform-Specific Fields

Douyin (抖音)

Required: title (max 30 chars), video_path, tags, account_file

Optional: publish_date, thumbnail_path (vertical), product_link, product_title (max 10 chars), description, location, sync_third_party

Auto-Generated: title, tags, description, thumbnail (from video frames)

Notes: Two page versions (v1/v2) auto-detected, supports third-party sync to Toutiao/Xigua

Kuaishou (快手)

Required: title, video_path, tags (max 3), account_file

Optional: publish_date, description

Auto-Generated: title, tags (limited to top 3), description

Notes: Maximum 3 hashtags, requires confirmation dialog

TikTok

Required: title, video_path, tags, account_file

Optional: publish_date (5-min increments), description, privacy (public/friends/private), allow_comments, allow_duet, allow_stitch

Auto-Generated: title, tags, description

Notes: Uses Firefox (not Chromium), two UI versions (iframe/direct)

Tencent Video / WeChat Channels (视频号)

Required: title, video_path, tags, account_file

Optional: publish_date, short_title (6-16 chars), category, is_original, collection_id, description

Auto-Generated: title, tags, short_title (auto-formatted), description, category

Notes: Short title formatting rules (allowed chars: 《》"":+?%°), requires system Chrome

Xiaohongshu (小红书)

Required: title, video_path, tags, account_file

Optional: publish_date, description, cover_path, location, post_type (video/image), images

Auto-Generated: title, tags, description, cover_path

Notes: Requires separate Flask signature service, supports video and image posts

Browser Anti-Detection Configuration

The skill includes comprehensive anti-detection measures in scripts/utils/browser_config.py:

Chromium Arguments:

  • Disable automation controlled flag
  • Disable blink features detection
  • Custom user agent and viewport
  • Geolocation spoofing (Beijing for Chinese platforms)
  • Timezone configuration
  • Plugin and language spoofing

Firefox Arguments:

  • Language and locale configuration
  • Custom user agent
  • Timezone settings

Runtime Scripts:

  • Override navigator.webdriver
  • Override navigator.plugins
  • Override navigator.languages
  • Add chrome property
  • Permission query overrides

Platform-Specific Configs: Each platform has optimized browser configuration returned by get_platform_specific_config(platform).

Authentication and Cookie Management

First-Time Login: When cookie file missing or expired, script opens browser window for manual login (QR code/credentials). After successful login, session cookies saved to specified file.

Cookie Validation: Before each upload, script validates cookie by accessing upload page. If validation fails, login process triggered.

Cookie Storage: Playwright storage state format (JSON) including session data, tokens, and authentication information.

Cookie Reuse: Valid cookie files reusable for multiple uploads until expiration (typically 7-30 days).

Recommended Organization:

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

OpenClaw Integration Workflow

Step 1: Prepare Video File

  • Ensure video file exists at accessible path
  • Verify format is MP4
  • Check platform requirements (duration, size, resolution)

Step 2: Generate Configuration

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

Step 3: Review and Customize

  • Edit generated config.json
  • Add platform-specific options
  • Adjust title, tags, description as needed

Step 4: Execute Upload

python scripts/upload_from_config.py config.json

Step 5: Verify Upload

  • Monitor console output for success/error messages
  • Check platform for published video
  • Verify scheduled time if applicable

Batch Upload Workflow

Create Batch Configuration:

[
  {
    "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"
    }
  }
]

Execute Batch Upload:

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

Batch Summary: Displays total uploads, success count, failure count, and error details.

Troubleshooting

Cookie Expired Error: Delete old cookie file and run script to trigger fresh login.

Upload Failed Error: Check video format, size, network connection, and platform-specific requirements.

Browser Not Found Error: Install Playwright browsers: playwright install chromium firefox

Page Structure Changed Error: Platform UI may have changed. Check for script updates or manually inspect page structure.

Headless Mode Issues: Most platforms require non-headless mode. Browser window will be visible during upload.

Anti-Detection Bypass: If platform detects automation, review browser configuration in scripts/utils/browser_config.py and ensure stealth.min.js is loaded.

Reference Files

platform_fields.md: Complete field specifications for all platforms including required/optional/auto-generated fields, examples, and limitations.

platform_details.md: Platform-specific information including URLs, authentication methods, features, and special notes.

requirements.txt: Python package dependencies.

Templates

upload_config_template.json: JSON configuration template with all fields.

upload_config_template.yaml: YAML configuration template with all fields.

Advanced Programmatic Usage

Import uploader modules directly for custom integration:

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())

Limitations

Xiaohongshu Integration: Not fully integrated due to complex signature service requirement. Requires separate Flask server for signature generation.

Browser Visibility: Most platforms require non-headless mode. Browser window visible during upload.

Manual Login: First-time authentication requires manual user interaction (QR code/credentials). Cannot be fully automated due to platform security.

Platform Changes: Social media platforms frequently update UI and security. Script may require updates when platforms change upload interfaces.

Sandbox Testing: Cannot test actual uploads in headless sandbox environment. Browser configuration verified but actual upload testing requires graphical environment.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Autohotkey

AutoHotkey - macro-creation and automation-oriented scripting utility for Windows. autohotkey, c++, autohotkey, automation, c-plus-plus, hotkeys, scripting....

Registry SourceRecently Updated
1320ckchzh
Automation

Agent Reader

Document beautifier for AI Agents. Converts Markdown to styled webpages, Word, PDF, and image slideshows — the 'last mile' rendering engine for AI output. 专为...

Registry SourceRecently Updated
Automation

Clever Compact

Your OpenClaw agent forgets everything between sessions — after /new, after compaction, after overnight. Clever Compact fixes all three: injects your last st...

Registry SourceRecently Updated
3110Profile unavailable
Automation

Scheduler

Scheduler - command-line tool for everyday use

Registry SourceRecently Updated
660Profile unavailable