Story Sampler Simple
It writes the story, and that story becomes your image prompt
- model
- tokenizer
- description
This is the node where the pack's whole premise finally pays off: feed it a list of keywords and it returns a complete short story as text - and that text is what you'll drop into a CLIPTextEncode to generate the image. The author's example workflow does exactly this: keywords in, story out, story straight into the SDXL prompt, image out. One node turns "dragon, walk, open, mouth, man" into a paragraph worth prompting with.
Mechanically it's simple, which is a compliment. It takes the model and tokenizer from StoryLoader, wraps your input in an Alpaca-style instruction template ("create a short story from this keywords"), runs a greedy generation capped at max_length=150, then strips the template off and returns just the story text. You never see the template; you get clean prose out the description output.
The inputs that matter
Three inputs, all required, and only one is yours to play with:
- model (CUSTOM) - wire from StoryLoader.
- tokenizer (CUSTOM) - wire from StoryLoader.
- prompt (STRING, forceInput) - this is your keywords. Note the
forceInput: you can't type into this field in the node graph. You must connect a text-source node to it. That's exactly why the pack ships Write2 (a plain text pass-through), and it's a common first stumble - the widget looks typable and isn't.
Outputs
One output, description (STRING): the generated story. It wires into two places, and both are in the example workflow:
- a text viewer like
ShowText|pysssss, so you can actually read it, and - the text input of a core CLIPTextEncode, so the story becomes your image prompt.
For best results pair it with the author's matching SDXL checkpoint, "Everly Heights Story Studio XL" on Civitai - the example workflows load everlyHeightsStory_v10.safetensors through a plain CheckpointLoaderSimple. Any SDXL checkpoint works, but the story-tuned one is what the whole pipeline was balanced around.
Install and gotchas
Install is the pack install (see the StoryLoader article - one git clone, or ComfyUI Manager searching "ComfyUI StoryCreator", plus pip install transformers in your ComfyUI venv since the pack ships no requirements.txt). The node-specific gotchas are:
- GPU required.
.to("cuda")is hardcoded, same as its loader. CPU-only installs will fail. - Stories are short, period.
max_length=150is a hard cap on the generated tokens. You can't lengthen it from the UI; the node just ends where it ends. For a "short story" node that's arguably correct, but don't expect novel-length prose. - The "No answer found." quirk. If the model's output doesn't contain the "Response:" marker, the code returns a bare string instead of a tuple, which can throw a TypeError in the console. It's a real edge case (the template makes it unlikely) and harmless - just rerun.
The one honest caveat: the model is a small fine-tune, not a frontier LLM. Stories are charming, a little formulaic, and sometimes drift mid-paragraph. If you want editor-grade prose you're better off elsewhere; if you want a reliable offline "keywords become a story" step that plugs into the rest of your workflow, this does its one job quietly and well.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | CUSTOM | — | |
| tokenizer | CUSTOM | — | |
| prompt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| description | STRING | — |