tiktok-uploader

Upload, schedule, and batch-manage TikTok videos via browser automation. Use when: user wants to upload a video to TikTok, schedule a TikTok post, batch upload multiple TikTok videos, or scan a directory for uploadable videos. NOT for: TikTok analytics, downloading videos, or managing comments/followers.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "tiktok-uploader" with this command: npx skills add xmuweili/tiktok-uploader

TikTok Video Uploader

Upload, schedule, and batch-manage TikTok videos using the tiktok-uploader Python library (Playwright-based browser automation wrapping TikTok's web upload page).

Setup

pip install tiktok-uploader
playwright install

Authentication

The user must provide one of these. Ask if not yet configured:

MethodHow to get it
Cookie file (recommended)Export cookies.txt from browser using the "Get cookies.txt LOCALLY" extension.
Session IDDevTools → Application → Cookies → .tiktok.com → copy sessionid value.
Cookie listList of dicts: [{name, value, domain, path}].

Session cookies expire — if uploads fail with auth errors, the user needs fresh cookies.

Operations

Upload a single video

from tiktok_uploader.upload import TikTokUploader

with TikTokUploader(cookies="cookies.txt", headless=True) as uploader:
    success = uploader.upload_video(
        filename="video.mp4",
        description="Check this out #fyp #viral @friend ",
        visibility="everyone",   # "everyone" | "friends" | "only_you"
        comment=True,
        stitch=True,
        duet=True,
        cover="thumbnail.png",   # optional
    )
    print("Uploaded!" if success else "Failed.")

Schedule a video

from datetime import datetime, timezone

with TikTokUploader(sessionid="abc123...", headless=True) as uploader:
    uploader.upload_video(
        filename="video.mp4",
        description="Dropping soon! #scheduled ",
        schedule=datetime(2026, 3, 10, 14, 30, tzinfo=timezone.utc),
    )

Rules: must be 20 min – 10 days in the future; minutes are rounded to nearest 5.

Batch upload

videos = [
    {"path": "vid1.mp4", "description": "First #batch "},
    {"path": "vid2.mp4", "description": "Second", "schedule": datetime(2026, 3, 10, 15, 0, tzinfo=timezone.utc)},
    {"path": "vid3.mp4", "description": "Third", "visibility": "friends"},
]

with TikTokUploader(cookies="cookies.txt", headless=True) as uploader:
    failed = uploader.upload_videos(videos)
    if failed:
        print(f"{len(failed)} videos failed")

Using the wrapper module

This skill ships a convenience wrapper at scripts/tiktok_manager.py:

from scripts.tiktok_manager import TikTokManager

mgr = TikTokManager(cookies="~/cookies.txt")
# Upload
mgr.upload("video.mp4", description="Hello TikTok! #fyp ")
# Schedule
mgr.upload("video.mp4", description="Scheduled!", schedule="2026-03-10T14:30")
# Batch
mgr.upload_batch([
    {"path": "v1.mp4", "description": "First"},
    {"path": "v2.mp4", "description": "Second", "schedule": "2026-03-10T15:00"},
])
# Scan directory for uploadable videos
videos = TikTokManager.scan_videos("~/Videos/tiktok", recursive=True)

Important Notes

  • Hashtags & @mentions: Include in description, each tag followed by a space. Verify they exist.
  • Description limit: ~150 characters.
  • Rate limiting: TikTok throttles after many uploads. Space them out; wait hours if throttled.
  • Headless mode: Set headless=False to watch the browser for debugging.
  • Proxy: Pass proxy={"host": "...", "port": "..."} — Chrome only.
  • Supported formats: .mp4, .mov, .avi, .wmv, .flv, .webm, .mkv, .m4v, .3gp, .3g2, .gif
  • Fragility: Browser automation, not an official API. TikTok UI changes can break it.

Troubleshooting

ProblemFix
Auth/login errorCookies expired → export fresh cookies.txt
Upload hangsTry headless=False to see what's happening
Throttled/rate limitedWait a few hours between batches
Selector errorstiktok-uploader may need an update (pip install -U tiktok-uploader)

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

Google Maps Reviews Api Skill

This skill is designed to help users automatically extract reviews from Google Maps via the Google Maps Reviews API. Agent should proactively apply this skil...

Registry SourceRecently Updated
1.3K2phheng
Automation

Telegram Topic Rename

Rename Telegram forum topics and change icons via Bot API. Use when user asks to name/rename a topic, change topic title, update topic icon, or says "命名这个topic", "给话题起个名", "换个图标". Requires TELEGRAM_BOT_TOKEN environment variable.

Registry SourceRecently Updated
Automation

Mission Control

macOS-native web dashboard for monitoring and controlling your OpenClaw agent. Live chat, cron management, task workshop, scout engine, cost tracking, and more.

Registry SourceRecently Updated
Automation

AI Remote Viewing

Guide an AI agent through a full blind Remote Viewing session using the Resonant Contact Protocol (AI IS-BE) and a compact Field Perception Lexicon.

Registry SourceRecently Updated