xpai-doubao-web▌
hunduncn/xpai-doubao-web · updated Apr 8, 2026
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.
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:
# Project-level first
test -f .xpai-skills/xpai-doubao-web/EXTEND.md && echo "project"
# Then user-level
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
# Text-to-image
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts "Your prompt"
# Text-only
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --mode text --prompt "Summarize this article"
# Specify model
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --prompt "Your prompt" --model doubao-default
# Generate an image file
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --prompt "A cute cat" --image out.png
# Prompt from files
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --promptfiles system.md content.md --image out.png
# Vision input (reference images)
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --prompt "Create variation" --reference a.png --image out.png
# Preset (aspect ratio via prompt prefix/suffix)
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --preset xiaohongshu_cover --prompt "Minimalist poster" --image out.png
# List presets
npx -y bun /Users/aqxp/Aicodingmac/test2/xpai-doubao-web/scripts/main.ts --list-presets
# Multi-turn sessions
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
# JSON output
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) ortext--preset: Preset name (applies prompt prefix/suffix; defaultxiaohongshu_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:
--loginto trigger a browser-based refresh (implemented with Playwright).--cookie-pathorDOUBAO_WEB_COOKIE_PATHto point at an exported cookie file.
Flow notes:
--loginopens a visible browser window and saves cookies.- Image/text generation runs headless by default (no window). Set
DOUBAO_WEB_HEADLESS=0to 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
--loginagain.
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 directoryDOUBAO_WEB_COOKIE_PATH: Cookie file pathDOUBAO_WEB_HEADLESS: Set to0to 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 pathDOUBAO_WEB_INPUT_SELECTOR: Custom input selector for the prompt boxDOUBAO_WEB_OUTPUT_SELECTOR: Custom selector for the latest assistant messageDOUBAO_WEB_CHROME_PROFILE_DIR: Chrome profile directoryDOUBAO_WEB_CHROME_PATH: Chrome executable pathHTTP_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.