arkennemasis Story Brief (the idea form)
The one-form-per-film node your story agent actually wants
- brief
Most "prompt a story agent" workflows fail the same way: everything gets jammed into one free-text box, and the LLM invents constraints you never asked for. ArkStoryBrief is the opposite move - one labelled box per creative decision, assembled into a structured brief the agent can actually follow. It's the node version of a storyboard spreadsheet row, and if you're running the arkennemasis video pipeline (Scene List → scene chain → Video Assemble), it's the intended starting point.
How it works
The node builds a plain-text brief out of the fields you fill in, in an order that matters. First the scene count - scenes (default 6) - then your special_request right up top, because the agent is told to treat it as top priority and burying it under boilerplate would read as an afterthought. Then the character block, marked as the person who appears in EVERY scene and is the only one who speaks. Then the rest of the fields. Empty fields are omitted entirely rather than sent as blanks - a heading with nothing under it invites the model to invent a constraint nobody asked for.
The field list is: title (the title), character (who the reference image is - name, hair, eyes, exact clothing, how they speak; restated in every scene so the character doesn't drift), story_idea (what actually happens - the more specific the want and the obstacle, the less generic the result), caption (one line, as it'd appear under the post), visual_style and colors (both held identical across every scene), channel_description (who it's for and the register to write in), and special_request (anything that overrides the rest).
Three columns you might expect aren't here, by design: the image reference lives in a Load Image node, the background music lives in the assembler's music_path, and the aspect ratio lives in the video resolution settings. The brief stays text-only so it composes cleanly with the rest of the graph.
Using it
The single output, brief, is a plain STRING - wire it into whatever LLM node you use for story planning (the pack's Replicate GPT-5 LLM node or the Codex LLM both work; it's provider-neutral text). The critical input to get right is scenes: it must match the number of scene branches your workflow was built with. Mismatch means extra branches sit idle and the assembler can't run. When you're testing, drop it to 1–2 scenes - the scene-split nodes downstream are built to skip quietly when a plan is shorter than the canvas.
Install
ArkStoryBrief is one of the 61 nodes in the comfyui-arkennemasis pack, under arkennemasis/Utility:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install -r comfyui-arkennemasis/requirements.txt # then restart ComfyUI
Or ComfyUI Manager → Install via Git URL with the repo URL. No API key and no models needed for this node itself.
The honest take: this is a small utility, and you could hand-roll the same brief with a text-concat node. What it buys you is the discipline - a real form with labelled fields and a documented assembly order, instead of a fragile blob of template text nobody wants to edit. If you're building the pack's video pipeline, just use it; if you're only here for the brief, it's a nice opinionated pattern to steal either way.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| scenes | INT | 61–200 | How many scenes to write. This must match the number of scene branches the workflow was built with, or the extra branches sit idle and the assembler cannot run. |
| title | STRING | Video Title — The title. The character's opening line conveys this in her own words. | |
| character | STRING | Character — Who the reference image is: name, hair, eyes, exact clothing, and how they speak. Restated in every scene to stop the character drifting. | |
| story_idea | STRING | Video Description — What actually happens. The more specific the want and the obstacle, the less generic the result. | |
| caption | STRING | Video Caption — One line, as it would appear under the post. | |
| visual_style | STRING | Visual style — Held identical across every scene. | |
| colors | STRING | Colors — Held identical across every scene. | |
| channel_description | STRING | Channel description — Who this is for, and the register to write in. | |
| special_request | STRING | Special request — Anything that overrides the rest. The agent treats this as top priority. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| brief | STRING | — |