Write original, beginner-friendly documentation for ComfyUI nodes. Each node is stored as an individual JSON file. Use the embedded docs as a reference source but always rewrite content — never copy-paste.
File Structure
Node data is split into per-node JSON files organized by section and category:
src/data/nodes/
_metadata.json — metadata + schema_version
comfy_nodes/<category>/<NodeName>.json — core ComfyUI nodes (476)
partner_nodes/<category>/<NodeName>.json — API/partner nodes (177)
subgraph_blueprints/<category>/<Name>.json — subgraph blueprints (36)
extensions/<category>/<NodeName>.json — extension nodes (1)
The top-level directories (comfy_nodes, partner_nodes, subgraph_blueprints,
extensions) match the tree pane sections. Below that, the category path matches
the node's category field with spaces replaced by hyphens.
Key files
- Per-node data:
src/data/nodes/<section>/<category>/<NodeName>.json - Metadata:
src/data/nodes/_metadata.json - Export data:
exports/comfyui_nodes_2026-03-14_0-17-0.json(structural source of truth) - Embedded docs:
embedded-docs/comfyui_embedded_docs/docs/<NodeName>/en.md(reference only) - Update plan:
exports/NODE_UPDATE_PLAN.md(progress tracking)
Finding a node file
To locate a node's JSON file:
find src/data/nodes -name 'KSampler.json'
# → src/data/nodes/comfy_nodes/sampling/KSampler.json
To search across all nodes:
rg '"documentation_complete": false' src/data/nodes/ -l
Content Fields to Write
For each node, write these fields:
| Field | What to write | Length |
|---|---|---|
description |
Technical but clear explanation of what the node does | 50–200 chars |
beginner_description |
Plain-language explanation for someone new to ComfyUI | 100–400 chars |
tips.general_tips |
Practical advice any user should know | 2–5 tips |
tips.beginner_tips |
"Start here" guidance with specific values and settings | 2–4 tips |
tips.advanced_tips |
Power-user techniques, edge cases, combo strategies | 1–4 tips (skip for simple nodes) |
use_cases |
Concrete scenarios with context | 2–4 use cases |
common_errors |
Real problems users hit, with actionable fixes | 1–4 errors |
complexity_level |
"beginner", "intermediate", or "advanced" |
— |
documentation_complete |
Set true when all content fields are filled |
— |
Writing Standards
Voice & Audience
- Write for people learning ComfyUI, not ML researchers
- Use active voice: "Connect to VAE Decode" not "Should be connected to"
- Explain WHY, not just WHAT: "Lower CFG (4–6) gives the model more creative freedom" not "CFG controls guidance strength"
- Use analogies for complex concepts: "Think of it like adjusting the contrast on a photo" not "Modifies the latent tensor distribution"
description
One or two sentences. Technical but accessible. State what the node does and its role in a workflow.
Good: "Loads a Stable Diffusion checkpoint file containing the model weights, text encoder, and VAE needed for image generation."
Bad: "Checkpoint loader node." (too short, says nothing)
Bad: Copy-pasting the export's description field verbatim.
beginner_description
Explain the node as if the reader has used ComfyUI for a week. Avoid jargon or explain it inline. Say what it does in practical terms.
Good: "This node loads the AI model that generates your images. Think of it as picking which artist you want to work with — different checkpoints produce different styles, from photorealistic to anime to oil paintings."
Bad: "Loads checkpoint files for diffusion model inference." (jargon)
Bad: Repeating description with slightly different words.
tips
Each tip must be specific and actionable. Include concrete values, settings, node names, or workflows.
Good tip: "Start with euler sampler, 25 steps, CFG 7.5 — this works reliably for most models and gives good results in about 10 seconds."
Bad tip: "Experiment with different settings to find what works best." (vague, unhelpful)
Good tip: "For Flux models, set CFG to 1.0 and use the FluxGuidance node instead — Flux uses guidance differently than SD 1.5 or SDXL."
Bad tip: "Different models may require different settings." (obvious)
use_cases
Use an array of objects with scenario and context:
[
{
"scenario": "Text-to-image generation",
"context": "The most common workflow — connect Empty Latent Image as input with denoise 1.0 to generate from scratch"
}
]
common_errors
Use an array of objects with symptom and solution:
[
{
"symptom": "Black or completely blank images",
"solution": "CFG scale too high (>15). Lower to 7–9 range. Also check that model, VAE, and conditioning are all connected."
}
]
How to Use Embedded Docs
The embedded docs at embedded-docs/comfyui_embedded_docs/docs/<NodeName>/en.md
are a reference source, not a template.
- Read the embedded doc to understand what the node does
- Read the input/output tables to understand parameters
- Note any tips, notes, or gotchas mentioned
- Write your own content — informed by the doc but in your own words
- Strip any "AI-generated" disclaimer lines
What to extract from embedded docs:
- Technical understanding of what the node does
- Parameter ranges, defaults, and constraints
- Specific tips or warnings the doc mentions
- How the node fits into workflows
What NOT to do:
- Copy the intro paragraph as
beginner_description - Copy input/output tables as tips
- Use the same phrasing or structure
Workflow
Batch documenting nodes
When asked to document a set of nodes (e.g. "document the new audio nodes"):
- Find target nodes:
find src/data/nodes -name '*.json' -path '*audio*' - Group nodes by category for context
- For each node:
a. Read the per-node JSON file
b. Read the embedded doc if it exists:
embedded-docs/comfyui_embedded_docs/docs/<NodeName>/en.mdc. Read the export entry for structural context: checkexports/comfyui_nodes_*.jsond. Write all content fields e. Setdocumentation_complete: true - Write updated JSON back to the same per-node file (edit in place)
- Update progress in
exports/NODE_UPDATE_PLAN.mdif relevant
Improving existing nodes
When asked to improve node docs:
- Identify nodes with weak content:
documentation_complete: false- Empty
beginner_description - Generic tips like "Experiment with settings"
- Empty
use_casesorcommon_errors descriptionunder 50 chars
- Rewrite weak fields following the standards above
- Keep existing good content — don't rewrite what's already well-written
Quality check
To find nodes needing work:
# Incomplete nodes
rg '"documentation_complete": false' src/data/nodes/ -l | wc -l
# Nodes where beginner_description copies description
python3 -c "
import json, os
for root, dirs, files in os.walk('src/data/nodes'):
for f in files:
if not f.endswith('.json') or f == '_metadata.json': continue
path = os.path.join(root, f)
try:
with open(path) as fh: d = json.load(fh)
except json.JSONDecodeError:
print(f'BAD_JSON: {path}')
continue
except UnicodeDecodeError:
continue
desc = d.get('description','')
bdesc = d.get('beginner_description','')
if desc and desc == bdesc:
print(f'LAZY: {d.get(\"name\",f)} ({path})')
"
# Nodes missing tips
python3 -c "
import json, os
for root, dirs, files in os.walk('src/data/nodes'):
for f in files:
if not f.endswith('.json') or f == '_metadata.json': continue
path = os.path.join(root, f)
try:
with open(os.path.join(root, f)) as fh: d = json.load(fh)
except json.JSONDecodeError:
print(f'BAD_JSON: {path}')
continue
except UnicodeDecodeError:
continue
if not d.get('tips',{}).get('general_tips'):
print(d.get('name', f))
"
Category-Specific Guidance
API nodes (api node/...) — found in partner_nodes/
- Always mention: requires API key, uses cloud processing, may have costs
- Note the provider and what type of media it handles
- Mention rate limits or size restrictions if the embedded doc says
- Don't write advanced_tips unless there's something genuinely advanced
Dataset nodes (dataset/...)
- Explain how it fits into a training data pipeline
- Mention what formats it accepts/produces
- Note batch processing behavior
Sampling nodes (sampling/...)
- Explain what the sampler/scheduler does in practical terms
- Give recommended starting values
- Note which models it works best with
- Compare to common alternatives (euler vs dpm++ etc.)
Latent nodes (latent/...)
- Always mention: "Connect to VAE Decode to see the result as an image"
- Explain the latent space concept briefly for beginners
- Note resolution requirements if applicable
Audio nodes (audio/...)
- Explain the audio format requirements
- Note sample rate / channel constraints
- Describe how it fits into audio workflows
Subagent Usage
For large batches (50+ nodes), use parallel subagents grouped by category. Each subagent gets a category batch and writes docs for all nodes in that group. This keeps context focused and produces more consistent output within a category.
Coordination: The subagents should write their results to per-node JSON files
(different files per node, so no write conflicts) rather than editing a single shared
plan file. A single coordinator agent can update exports/NODE_UPDATE_PLAN.md
after all workers complete.