DAELAB - 分镜剧本解析器
Drop in a script, get a task table you can generate from
- table_json
- storyboard_json
The gap between "I have a script" and "I have a video" is usually a person with a spreadsheet. This node is an attempt to delete the person.
DAELAB - 分镜剧本解析器 takes a document - DOCX, XLSX/XLSM, CSV/TSV, TXT, Markdown, PDF - and parses it into a task table where each row is a shot, then hands you two JSON strings: the full table, and a storyboard projection for the older consumers.
Two outputs, one execution, no generation. That last part is the important one: execute only validates and serialises. It does not call any service, upload anything, or start a job. You import at your own pace, look at what it produced, then decide when to generate.
What the import actually does
You upload a document; the parser identifies the header row, normalises the original text, and appends the result into a multidimensional table immediately - no step-by-step confirmation. Fields that are entirely empty across a document (a text column, a reference-image column, a "to be filled in later" column) are not created. If a later document has content for them, they appear then. Existing fields are preserved.
Each original row can be classified as a task, a title/chapter heading, a table header, blank, or "needs review". Individual cells can override column mapping. Images packaged in the same source are ordered by where they appeared and dropped into the same reference-image cell, and images that float outside the table are kept in a pending bucket rather than guessed into a row - which is the right call, even if it means one manual pass.
Revised documents are read as the final view: inserted text and images count, deleted text and field codes don't. Merged cells keep their anchor reference. Every import can be undone in one step, and nothing is written to the table if reading or validation fails.
Worth stating plainly: all fields and source text are retained. This is a parser that refuses to summarise, which is what makes the later prompt stage trustworthy.
The two outputs
table_json is the whole task table - full rows, column definitions, image/video column templates, provenance, unpinned items. This is the thing you feed to the pack's generation surface.
storyboard_json is a projection: the legacy storyboard protocol with each row's original description as the shot body, preserving reference order, provenance and missing-field markers. It deliberately does not pretend the old "final prompt reviewed" state is true just because a generation-column template exists. If you're driving an older node that expects that shape, this is your adapter; if not, use table_json.
Note the schema version: the parser emits schema version 4 tables. And if you're reading this because a downstream node choked on the output, check that it isn't one of the legacy consumers whose batch cap the parser explicitly does not raise - over that limit, you batch-select.
Optional AI classification
Entirely optional, entirely off by default. If you create ComfyUI/user/default/DAELAB/script-parser-ai.json with an endpoint, model, optional Bearer key and a timeout (5–120s, default 60), you get an "AI 归类" button. It sends the selected table's source text and source IDs to any Chat-Completions-compatible service - no images - and asks for per-row, per-cell classification only: no adding or deleting sources, no merging rows, no rewriting. If the response fails validation, your draft survives and you carry on mapping by hand.
That config file is server-side private by design. The docs are blunt that it must not go into a workflow or a version-control repo. Local HTTP endpoints are allowed (so a local Qwen via Ollama-style APIs works); embedded credentials in the URL are not.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/TeutonicMepheles/ComfyUI-DAELab-Custom-Nodes-Library.git
cd ComfyUI
python -m pip install -r custom_nodes/ComfyUI-DAELab-Custom-Nodes-Library/requirements.txt
This is the node in the pack where requirements.txt really matters: python-docx, openpyxl and pdfplumber are what make DOCX/XLSX/PDF imports work. The README is explicit that if you never use storyboard document import, nothing else in the pack needs them. Restart ComfyUI and refresh the browser afterwards.
The node is V3 (comfy_api.latest), so No module named 'comfy_api' means your ComfyUI core is old - update it, don't pip-install a package with that name. And note the README's migration note: as of the late-October 2026 update the shared canvas and controls moved to a separate ComfyUI-DAELab-Creative-Canvas repository, so if the App Mode parser panel is missing, you probably need both repos installed plus a restart.
Gotchas
Uploads are not modified, and the parser leaves drafts in ComfyUI/temp/DAELAB/script-parser and prepared images in input/DAELAB/script-parser (named by content hash). Those don't clean themselves up - worth knowing before you migrate an install.
Importing is blocked while generation is queued, running or paused. That's deliberate state safety, not a bug; stop the run first.
If you delete all records, the fields and import info stick around and you still see a table. That's intentional (you don't lose your schema), and mildly confusing the first time.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| table_data | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| table_json | STRING | — |
| storyboard_json | STRING | — |