Content
# Tool List
[](https://github.com/dorakoo/doubao-studio/releases)
[](https://www.electronjs.org/)
[](https://react.dev/)
[](https://www.typescriptlang.org/)
[](LICENSE)
Doubao Studio is a Windows desktop workstation for AI content creators. It manages multiple independent Doubao accounts in one application and integrates prompt words, reference materials, video parameters, task scheduling, generation waiting, product extraction, and batch download into a trackable, pausable, and recoverable production process.
The project focuses not on replacing the Doubao web page but on adding task queues, multi-account isolation, status recording, and product management while retaining the original web page operation capabilities.
From v2.0, the workstation is organized with "projects" as the primary unit. Each project has independent tasks, CSV batches, operation history, and product views, making it suitable for managing multiple content themes or customer deliveries.
> This project is a community-developed non-official tool, not affiliated with ByteDance or Doubao. Please comply with Doubao's service terms, content specifications, and local laws and regulations when using it.
## Core Capabilities
### Project-based Workspace
- Top project switcher for creating and switching projects.
- Automatic migration of old version tasks to the "default project".
- Task list, CSV batches, and product center isolated by the current project.
- Project overview displays completion rate, task number, batch number, and historical products.
- Supports exporting project packages without web login information and remote product addresses.
### Multi-Account Workspace
- Each account uses an independent Electron Session, isolating Cookie, login state, and web storage.
- Supports account pinning, searching, refreshing, running status, and health status display.
- Intelligent allocation of accounts based on task load, continuous failure, cooling status, and Seedance predicted quota.
- Automatic reduction of account scheduling priority after quota exhaustion, manual verification, and login exceptions.
- Supports pausing account scheduling and manual cooling for 30 minutes.
- Queued tasks on unavailable accounts can be migrated to other healthy accounts.
### Multi-Mode Task Production
- Supports dialogue, image, video, and music tasks.
- Video tasks support Seedance 2.0, Fast, Mini, and common aspect ratios and durations.
- Supports multiple reference images, reference audio, and complete configuration editing and re-running.
- Creates a new conversation before each task launch or re-run, reducing context pollution between different tasks.
- Can save complete task templates, reuse prompt words, modes, materials, and video configurations.
### Batch Variables
Use `{{variable name}}` in prompt words, and the variable area represents a set of tasks:
```text
A {{product}} placed in {{scene}}, film-like product advertising, soft natural light
```
```text
product=thermos cup; scene=living room
product=coffee cup; scene=office
```
Adding this will generate two independent tasks. Multiple basic prompt words can still use `%%%%%%%%%%` to separate.
### Recoverable Automation
Tasks are no longer just "running". The system persists the following stages:
```mermaid
flowchart LR
A[Waiting to Execute] --> B[Preparing Account]
B --> C[Creating New Conversation]
C --> D[Switching Mode]
D --> E[Configuring Parameters]
E --> F[Uploading Materials]
F --> G[Filling Prompt Words]
G --> H[Submitting Task]
H --> I{Triggers Verification}
I -- Yes --> J[Waiting for Manual Verification]
J --> C
I -- No --> K[Generating]
K --> L[Identifying and Binding Product]
L --> M[Completed]
```
- Saves run ID, input snapshot, run times, current stage, stage description, and heartbeat time.
- Can pause long video waiting immediately, without waiting for timeout.
- Unfinished tasks will be restored to "paused" if the program exits unexpectedly, and can be re-executed.
- Manual verification will recreate the conversation, upload materials, and submit again.
- Records quota, membership, face material, review, network, page changes, and product missing categorization.
- The main process uses atomic task locks to prevent duplicate clicks, hot updates, and concurrent execution.
- The last 20 run records retain results, error types, and actual time consumption.
### Video Generation and 15-Second Mode
- Automatically confirms model, ratio, and duration, reducing dropdown menu selection failures.
- 15-second video is achieved through controllable request patches, and automatic tasks and manual web operations can be used.
- Video generation can wait for a long time, and supports pausing and manual extraction at any time.
- Identifies clear quota insufficiency, membership limitations, face limitations, and generation failure prompts, stopping meaningless waiting.
> 15-second mode relies on Doubao's current web request structure, which may require synchronization adaptation after updates.
### Product and Download
- Products bind task run ID, account, Doubao conversation address, discovery time, and source.
- Re-running will not delete historical product records.
- Manual extraction of old tasks will open the corresponding Doubao conversation to avoid grabbing other task videos.
- Download tasks retain completion status, file size, failure reason, and save location.
- Failed downloads can be retried in the "download records".
- Video original address extraction uses multi-channel candidate detection, but does not guarantee obtaining a watermark-free version at all times.
### Product Center
- Summarizes all task products generated in each run, including images, videos, and files.
- Filters by prompt words, task ID, type, and address validity.
- Performs lightweight validity detection on remote addresses, distinguishing between valid, expired, and unavailable.
- Displays whether products have been downloaded locally.
- Supports preview, re-download, and returning to the product's corresponding Doubao conversation.
### Video Product Parsing and Download Enhancement
- Video product parsing supports multi-strategy fallback: response capture, playback information, platform download information, conversation structured scanning, and page fallback.
- After conversation scanning finds a new video ID, it will make up API queries within the remaining waiting budget to reduce "page generated but product not found" situations.
- Candidate products are bound by task session and video ID, and cannot be mistakenly bound to old videos without proof of ownership, and supports manual extraction as a backup.
- Automatic parsing and manual extraction both support cancellation; before downloading, checks HTTP status, response content, and media type, and provides classified prompts for common failure reasons.
- Original addresses and ordinary playback addresses are marked separately, and ordinary playback addresses are not mistakenly reported as watermark-free original files.
### CSV Batches and Basic Workflow
- Imports prompt words, modes, video models, duration, ratio, materials, and accounts in bulk from CSV.
- Uses `depends_on` to specify preceding CSV row numbers, separated by `|` for multiple row numbers.
- `all_done` requires all preceding tasks to succeed; `all_finished` allows preceding tasks to fail and continue.
- Task batch page summarizes total number, progress, running, queuing, and failed quantities.
- Can re-queue failed tasks in the entire batch with one click.
See the CSV template in [`examples/tasks-template.csv`](examples/tasks-template.csv).
### Page Adaptation System
- Current adapter and rule package have independent version numbers.
- Compatibility self-test checks input box, submit control, video entry, model, duration, ratio, upload, and product recognition.
- Self-test report is saved locally in a desensitized manner, retaining up to 50 recent reports.
- Supports importing restricted JSON rule packages, without executing scripts in the package.
- New rule installation saves the old version, and can be rolled back with a toolbar button.
See the adapter rules example in [`examples/adapter-rules.json`](examples/adapter-rules.json).
### Logs, Backup, and Release
- Operation logs are graded by information, warning, and error, supporting task and error keyword search.
- Complete backup includes project, account configuration, tasks, downloads, diagnostics, logs, and application settings, excluding Cookie.
- Supports backup recovery and JSON data integrity check.
- Application can query the latest GitHub Release.
- GitHub Actions automatically execute type checking, construction, and Windows label release.
### Agent Capability Protocol and Platform Interface
- Introduces Capability API Schema v1, uniformly describing capability lists, asynchronous tasks, task events, products, and structured errors.
- Defines a stable boundary for future Agent, CLI, and MCP access, allowing external calls to integrate around opaque `taskId`, `requestId`, event sequence number, and `artifactId`.
- `requestId` supports idempotence within the current service process; responses can be queried by `requestId` to avoid blind repeated submissions.
- Public protocol does not expose Cookie, Session, Webview, DOM, Zustand, Doubao internal URL, or local absolute path.
- v1 Schema uses open string enumeration, and clients should ignore unrecognized new states, reserving compatibility for subsequent capability extensions.
- Schema files are located in `schemas/capability/v1/`, and design instructions can be found in [`docs/architecture/capability-api-schema.md`](docs/architecture/capability-api-schema.md).
## Interface Structure
- **Top Toolbar**: Pause/Continue, Batch Download, Download Records, Operation Statistics, Diagnostics Export, and Settings.
- **Account List**: Account switching, health status, Seedance quota prediction, and operation details.
- **Task Scheduling Area**: Add, edit, assign, start, pause, re-run, product extraction, and batch download.
- **Web Workspace**: Displays each account's independent Doubao webpage, allowing manual operations outside automation.
## Environment Requirements
- Windows 10/11 x64
- Node.js 24 (recommended with pnpm 11)
- pnpm 9 or higher
- Network environment with normal access to Doubao webpage
- Each account needs to complete login in an independent webpage workspace
## Installation and Launch
```bash
git clone https://github.com/dorakoo/doubao-studio.git
cd doubao-studio
pnpm install
pnpm run dev
```
The development starter will prioritize using `5173`. If the port is occupied, it will automatically select a subsequent free port and let Electron load the correct address.
## Basic Usage
1. Click the `+` button in the top right corner of the account list to fill in a recognizable name for the account.
2. Complete login in the Doubao webpage on the right, with each account only needing to log in in its own workspace.
3. Click "Add Task", select dialogue, image, video, or music mode.
4. Configure model, duration, ratio, and add reference images and audio for video tasks.
5. Input prompt words; use `%%%%%%%%%%` to separate for batch tasks or expand using the variable area.
6. Enable "Auto Assignment" or manually select an account for the task.
7. After launching the task, view real-time stages in the task entry and details page.
8. Preview or extract products after completion, and batch save through the top download button.
9. For large batch tasks, click the CSV button in the task area to import task files in template format.
10. After Doubao page updates, run compatibility self-test from "More" and view specific exception controls.
11. Enter project overview, operation logs, complete backup, and update check from the top "More".
## Common Commands
| Command | Purpose |
| --- | --- |
| `pnpm run dev` | Launch Vite and Electron development environment |
| `pnpm run ts-check` | Check main and render process types |
| `pnpm run build` | Build frontend and Electron main process |
| `pnpm run dist:win` | Generate Windows installation package |
| `pnpm run pack` | Generate unpackaged directory |
## Data and Privacy
- Account sessions are stored separately by Electron, not submitted to Git.
- Task, account status, and download records are saved in the Electron user data directory's `DoubaoStudioData`.
- JSON data uses temporary file writing and retains `.bak` backup for damage recovery.
- Diagnostic packages hide prompt words, complete material paths, and product URLs.
- Please do not disclose Cookie, Token, personal account information, or private materials in Issues, logs, or screenshots.
## Frequently Asked Questions
### `Port 5173 is already in use`
The new `pnpm run dev` will automatically select a free port. If the old error still appears, confirm the code has been updated and close the development process left by the old version.
### Video keeps waiting
Video may still be generating or blocked by quota, membership, face, or review prompts. The new version detects common blocking information; you can also pause the task and re-check the corresponding conversation by "Extract Video".
### Task not generated after robot verification
Keep the task in "Waiting for Verification", manually complete verification. After the system detects verification disappearance, it will recreate the conversation, restore materials and configuration, and submit again.
### Downloading to the wrong video
Prioritize entering "Extract Video" from task details. The new version returns to the original task page using the saved conversation address and binds the discovered product.
### Button recognition failure after Doubao update
Web automation relies on Doubao's current DOM and interaction structure. Please export a desensitized diagnostic package and attach the phenomenon, stage, and related logs in [Issues](https://github.com/dorakoo/doubao-studio/issues).
## Project Structure
```text
main/ Electron main process, IPC, and local data
main/ipc/projects.ts Project management and default project migration
main/ipc/system.ts Logs, backup, integrity, and update check
src/components/ Account, task, browser, download, and settings interface
src/automation/ Execution coordinator, task lock client, and page adaptation rules
src/store/ Zustand account and task scheduling state
src/types/ Task, account, product, and Electron API types
src/utils/doubaoBridge.ts Doubao webpage interaction and product extraction adaptation layer
src/utils/taskRuntime.ts Automation error classification
scripts/dev.mjs Dynamic port development launcher
```
## Participate in Development
1. Fork this repository and create a functional branch from `main`.
2. Keep modifications focused, avoiding submission of account data, build products, and generated videos.
3. Run `pnpm run ts-check` and `pnpm run build` before submission.
4. For modifications to Doubao page adaptation, please explain the used page mode, model, ratio, and reproduction steps.
## Roadmap
- Excel batch task import and visual field mapping
- Project package import and cross-device synchronization
- Further migration of Webview execution lifecycle to main process services
- Automatic material transfer from image generation to video generation
- Local encryption of sensitive data
- Remote adaptation rule signature and automatic update
- Installation package signature, differential update, and failure rollback
See complete version changes in [CHANGELOG.md](CHANGELOG.md).
## License
This project uses the [MIT License](LICENSE).
Connection Info
You Might Also Like
No recommendations available