v0.1.0
First release of douyin, a command line for Douyin (抖音).
douyin reads public Douyin data and prints clean, pipeable records from one
pure-Go binary, with no API key and no login. It is built on the any-cli/kit
framework, so every read operation works three ways from the same code: as a
CLI subcommand, over HTTP (douyin serve, NDJSON), and over MCP (douyin mcp).
Commands
hot— the hot-search billboard, in rank order (--tab realtime|video|music|star)video <url|id>— one video recorduser <sec_uid|url>— a profile recordposts <sec_uid|url>— a user's public videoscomments <url|id>— comments under a videosearch <query>— mixed search hits
Plus serve, mcp, raw, and version.
Output
A table at a terminal, JSONL when piped, so douyin hot | jq works with no
flags. -o json|jsonl|csv|tsv|url|markdown|raw, with --fields and
--template to shape each record.
Anti-bot honesty
The hot-search billboard is open from any IP and returns real data. The signed
aweme/v1/web/* surfaces (video, user, posts, comments, search) are signed the
way the web client signs them, with a reimplemented a_bogus and a fresh
msToken, but Douyin answers them with an empty body or an __ac challenge
from non-China and datacenter IPs. Each block maps to a clean exit (4 needs a
residential session, 3 no results, 6 not found) rather than a crash or faked
data; the signing and parsers are correct and serve from a China IP or a warm
session.
Install
go install github.com/tamnd/douyin-cli/cmd/douyin@latest
Prebuilt archives, deb/rpm/apk packages, SBOMs, and a cosigned checksum list are
attached. Container image: ghcr.io/tamnd/douyin:0.1.0.