Oct 23, 2026

One CLI and 18 Agent Skills for Multi-Platform Publishing

dreammis/social-auto-upload pairs a unified sau CLI with 18 MIT-0 agent skills for Claude Code, Codex, and OpenClaw, covering video, article, and image-post publishing across 17 platforms from Douyin to Instagram.

#tutorial#agent-tools#productivity#python

Reposting the same video to Douyin, Bilibili, Xiaohongshu, and YouTube means a dozen browser logins and upload forms. The 16k-star dreammis/social-auto-upload repository turns that loop into one CLI — sau — plus 18 agent skills that let Claude Code, Codex, or OpenClaw run the publishing for you.

Why This Skill Matters

The README is built for content creators and operators running multi-platform distribution. Its capability table covers 17 platforms — Douyin, Bilibili, Xiaohongshu (browser version), Kuaishou, Channels (video), Baijiahao, Dayu, Alipay Channels, Weibo, Hupu, TikTok, Xueqiu, YouTube, Zhihu, Facebook, Facebook Page, and Instagram — across three content types: videos, articles, and image posts. CLI commands live per platform in sau_commands/, the publishing flows in uploader/, and stable versions ship through GitHub Releases.

The agent surface is what makes it fit this site. Each platform gets its own skill directory under skills/ — 18 in total, from a cross-platform entry point (social-auto-upload) down to per-platform skills like douyin-upload and instagram-upload — and all 18 product skills are released under MIT-0 so platforms that require that license can distribute them.

Installation

The install guide (docs/install.md) walks through a local Python setup:

git clone https://github.com/dreammis/social-auto-upload.git
cd social-auto-upload
uv venv
source .venv/bin/activate
uv pip install -e .

The mainline drives a browser with patchright, so install its Chromium next:

patchright install chromium

Then create your config and confirm the CLI registered:

cp conf.example.py conf.py
sau --help

To load a skill into your agent instead of (or alongside) the CLI, install it from GitHub:

npx skills add dreammis/social-auto-upload --skill douyin-upload

Swap douyin-upload for the cross-platform entry point or another platform directory name. One trap the README calls out explicitly: sau skill install is not a command this project provides.

Real Workflow: Publish One Video to Three Platforms

Every platform follows the same rhythm — log in once, check the session, then upload:

sau douyin login --account creator
sau douyin check --account creator

The --account value is a local name you give the saved session, so you can keep several accounts side by side. Once the session checks out, publish:

sau douyin upload-video --account creator --file videos/demo.mp4 --title "示例标题" --desc "示例简介"
sau kuaishou upload-video --account creator --file videos/demo.mp4 --title "示例标题" --desc "示例简介"
sau xiaohongshu upload-video --account creator --file videos/demo.mp4 --title "示例标题" --desc "示例简介"

Articles and image posts use their own commands: upload-article on Dayu, Xueqiu, and Zhihu takes the body from an HTML/Markdown/TXT file, and upload-note handles image posts on Douyin, Kuaishou, Xiaohongshu, Facebook, Facebook Page, and Instagram.

For the agent-driven path, the repo ships an Agent Bootstrap Prompt (docs/agent-bootstrap.md). Hand your agent the repository plus that prompt, and it installs the project on the current mainline, prefers uv, the sau CLI, and skills/, then verifies that the Bilibili, Douyin, Kuaishou, and Xiaohongshu entry points work before touching anything else.

Tips

  • If a Douyin upload triggers SMS second-factor verification, the program reads verify_code.txt from the project root first; in an interactive terminal you can just type the code when prompted, and the file is deleted automatically after verification.
  • Bilibili needs no manual biliup setup — the first relevant command downloads it, and later runs check the upstream release and update automatically.
  • YouTube login is interactive (a Google account in a browser, no QR code). The README explains it uses browser automation rather than the official API because videos uploaded through API projects that have not passed Google's compliance review get locked to private — and it waits until upload progress hits 100% before clicking publish.
  • Markdown article themes (default/grace/simple/modern/plain) need Node.js 22+ the first time: run sau article setup, then sau article render to preview locally before uploading.
  • Facebook, Facebook Page, and Instagram go through the system network directly by default; when your network needs a proxy, pass --proxy explicitly or set SAU_FACEBOOK_PROXY, SAU_FACEBOOK_PAGE_PROXY, or SAU_INSTAGRAM_PROXY.

When Not to Use This

The README marks some cells as not stable, and they are worth respecting: TikTok is a Chrome-based implementation with no sau CLI at all, scheduled YouTube publishing is listed as in development, and scheduled Zhihu publishing is experimental — the table states that "in development" and "experimental" do not count as stable capabilities. The video-only rows cannot carry article or image-post workflows — check the README's content-type table before planning a cross-platform batch.


See the leaderboard for more skills.