XPAI Doubao Web
Overview
Use this skill to generate images or text from Doubao Web by reusing browser login cookies. It provides a CLI wrapper with prompt files, optional reference images, presets, sessions, and JSON output.
Script Directory
All scripts are located in the scripts/ subdirectory of this skill.
Script reference:
scripts/main.ts: CLI entry point (image/text)
scripts/doubao-webapi/*: TypeScript client and helpers
Consent Check (required before first use)
This skill relies on reverse-engineered web behavior and will access/store your Doubao Web cookies.
Obtain explicit user consent before running automation.
Consent file locations:
- macOS:
~/Library/Application Support/xpai-skills/doubao-web/consent.json
- Linux:
~/.local/share/xpai-skills/doubao-web/consent.json
- Windows:
%APPDATA%\\xpai-skills\\doubao-web\\consent.json
Consent file format:
{"version":1,"accepted":true,"acceptedAt":"<ISO>","disclaimerVersion":"1.0"}
Preferences (EXTEND.md)
Check for optional EXTEND.md overrides in this order:
test -f .xpai-skills/xpai-doubao-web/EXTEND.md && echo "project"
test -f "$HOME/.xpai-skills/xpai-doubao-web/EXTEND.md" && echo "user"
Supported settings (if you add parsing for them): default model, proxy settings, custom data directory.
Usage
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts "Your prompt"
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --mode text --prompt "Summarize this article"
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --prompt "Your prompt" --model doubao-default
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --prompt "A cute cat" --image out.png
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --promptfiles system.md content.md --image out.png
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --prompt "Create variation" --reference a.png --image out.png
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --preset xiaohongshu_cover --prompt "Minimalist poster" --image out.png
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --list-presets
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts "Remember: 42" --sessionId session-abc
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts "What number?" --sessionId session-abc
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts "Hello" --json
Options
--prompt, -p: Prompt text
--promptfiles: Read prompt from files (concatenated)
--model, -m: Model string (pass-through)
--mode: image (default) or text
--preset: Preset name (applies prompt prefix/suffix; default xiaohongshu_cover)
--image [path]: Generate image (default: generated.png)
--reference, --ref: Reference images for vision input
--sessionId: Session ID for multi-turn conversation
--list-sessions: List saved sessions
--list-presets: List preset names and config paths
--json: Output as JSON
--login: Refresh cookies, then exit
--cookie-path: Custom cookie file path
--profile-dir: Chrome profile directory
Authentication
Login uses browser cookies. The CLI supports:
--login to trigger a browser-based refresh (implemented with Playwright).
--cookie-path or DOUBAO_WEB_COOKIE_PATH to point at an exported cookie file.
Flow notes:
--login opens a visible browser window and saves cookies.
- Image/text generation runs headless by default (no window). Set
DOUBAO_WEB_HEADLESS=0 to show the browser.
- If a cookies file already exists, generation proceeds without opening a browser.
- To force a fresh login, delete the cookies file or run
--login again.
For --login and image generation, install Playwright and its browsers:
npm i -D playwright
npx playwright install
Supported browsers (Playwright): Chromium/Chrome/Edge.
Override browser path via DOUBAO_WEB_CHROME_PATH. If you pass --profile-dir, it is used as a Playwright user data directory.
Presets
Preset config path priority:
DOUBAO_WEB_PRESETS_PATH
.xpai-skills/xpai-doubao-web/presets.json (project)
$HOME/.xpai-skills/xpai-doubao-web/presets.json (user)
Format:
{
"default": "xiaohongshu_cover",
"presets": {
"xiaohongshu_cover": { "prefix": "...", "suffix": "..." }
}
}
Example file: references/presets.example.json
Environment Variables
DOUBAO_WEB_DATA_DIR: Data directory
DOUBAO_WEB_COOKIE_PATH: Cookie file path
DOUBAO_WEB_HEADLESS: Set to 0 to run browser in headed mode (default: headless)
DOUBAO_WEB_MAX_IMAGES: Max images to save (default: 1)
DOUBAO_WEB_LOGIN_URL: Login URL to open in the browser (default: https://www.doubao.com/)
DOUBAO_WEB_COOKIE_DOMAIN: Filter cookies by domain (default: doubao.com)
DOUBAO_WEB_PRESETS_PATH: Preset config file path
DOUBAO_WEB_INPUT_SELECTOR: Custom input selector for the prompt box
DOUBAO_WEB_OUTPUT_SELECTOR: Custom selector for the latest assistant message
DOUBAO_WEB_CHROME_PROFILE_DIR: Chrome profile directory
DOUBAO_WEB_CHROME_PATH: Chrome executable path
HTTP_PROXY, HTTPS_PROXY: Proxy for web access
Sessions
Session files are stored in the data directory under sessions/<id>.json.
Contains: id, conversationUrl, messages, timestamps. When --sessionId is set, a persistent Playwright profile is stored under profiles/<id>/ to keep login state.