ExportDou
Use the ExportDou CLI to create durable public Douyin comment exports. Never request Douyin cookies or browser login state.
Requirements
- Require Node.js 18.17 or newer and npx.
- Send only the user-supplied public Douyin link or share text to ExportDou.
Authenticate
Before the first operation in a session, run:
npx exportdou whoami --json
If authentication is missing, run:
npx exportdou login --json
Ask the user to approve the printed ExportDou browser URL. Never print, expose, or ask the user to paste the resulting API Key. If the user explicitly provides a Key through a secure environment variable, use EXPORTDOU_API_KEY without echoing it.
Choose the Export Size
- Use the exact count when the user specifies one.
- Use 100 for an explicitly requested sample, quick check, or exploratory analysis.
- For “全部” or “all comments,” inspect first, then use --all. The CLI verifies the reported count, 200,000-row safety ceiling, and available credits.
- Ask for a count before a formal export when the user did not request a sample or all comments.
- Add --replies only when the user wants comment replies. Replies and root comments share one total result limit and one credit count.
- Use CSV unless the user explicitly requests Excel/XLSX.
Read references/commands.md when exact flags, output fields, or examples are needed.
Submit Exactly Once
Create one export:
EXPORTDOU_CLIENT_NAME=exportdou-skill npx exportdou export "<Douyin link or share text>" --limit 1000 --json
For replies:
EXPORTDOU_CLIENT_NAME=exportdou-skill npx exportdou export "<Douyin link>" --limit 10000 --replies --json
Capture taskId from stdout. Treat export only as resource creation. Never resubmit the link to check progress.
The CLI reuses one Idempotency-Key across safe network retries and attempts to recover an ambiguously accepted task. Do not add an independent shell retry loop.
Advance an Async Task
Wait the returned retry interval, then make one status request:
npx exportdou status "<task-id>" --json
If status is queued, processing, or rendering, preserve the same task ID and repeat the one-shot status command after retryAfterSeconds. Stop when status is completed, partial, failed, cancelled, or expired.
Do not use --wait by default. Use it only when a human explicitly wants the terminal attached.
Read or Download Results
For analysis, retrieve a small normalized JSON sample:
npx exportdou preview "<task-id>" --limit 20 --json
Use at most 50 preview rows. Do not place a full large export in model context.
For the complete file:
npx exportdou download "<task-id>" --output comments.csv --json
The CLI writes a temporary partial file, verifies byte size and SHA-256, and renames it atomically. Do not overwrite an existing file unless the user explicitly approves --force.
Multiple Links
Process links one at a time with the normal task workflow. Do not use xargs, shell loops, background processes, or parallel CLI invocations. Finish or cancel the current task before creating the next when the account concurrency limit is reached.
Credits and History
npx exportdou credits --json
npx exportdou history --limit 20 --json
Creation reserves the requested row count. Completion bills actual exported rows and releases the difference. On insufficient_credits, stop and report https://exportdou.cn/pricing; do not repeatedly resubmit.
Errors and Safety
Read references/errors.md when a command fails.
- Preserve stderr separately from structured stdout.
- Treat a pending receipt as task metadata, not comment content.
- Do not expose API Keys, signed download URLs, raw provider responses, or internal cursors.
- Do not attempt private, deleted, login-gated, or access-controlled content.
- Do not claim affiliation with Douyin. ExportDou processes publicly accessible data supplied by the user.
Links
- Website: https://exportdou.cn
- API docs: https://exportdou.cn/developers
- CLI guide: https://exportdou.cn/agents
- Pricing: https://exportdou.cn/pricing
Scan to join WeChat group