Output Formats
Four output format levels: overview, summary, detail, and backup, for different use cases.
Part of BlueprintAIAssistant. See also: AI Guide | Verb Reference | Batch Operations
Overview#
Blueprint AI Assistant exports Blueprint data in four named formats. The format controls the structure of the output and how much information is included. There is no separate detail parameter; everything is controlled by --format=.
Format Comparison#
| Format | Size | Use when |
|---|---|---|
overview |
Smallest | Scanning many assets. Quick existence/type check with condensed graph. |
summary (DEFAULT) |
Moderate | Normal inspection: full metadata, variables, components, CDO, tree-walk graphs. |
detail |
Larger | Write operations: same as summary + 8-char node GUIDs after every node. |
backup |
Full | Programmatic parsing, CI/CD, full asset backup. Machine-readable with all GUIDs and internal type names. |
overview (--format=overview)#
Metadata header plus a condensed tree-walk of each graph. The most compact human-readable format. Applies aggressive filtering: no Variables section, no Components, no CDO, no Event Dispatchers, no loop-back markers, no empty event stubs, trivial parameter values filtered out, connection traces hidden, and pure chains fully suppressed (depth = 0). Designed for scanning many assets quickly or confirming an asset exists.
Example#
BP_Enemy (Character, C++)
> Actor that deals damage.
Vars: 1 | Components: 2 | Dispatchers: 0
## EventGraph
### Event BeginPlay
├── Set Health (NewValue = 100.0)
└── Print String (InString = Enemy spawned)
summary (--format=summary): DEFAULT#
All metadata sections in human-readable text plus full tree-walk graphs with
box-drawing characters. This is the default format when --format= is not
specified.
Key Features#
- All metadata sections included. Variables, Components, CDO overrides, and Event Dispatchers appear as plain text with human-friendly type names (
Floatinstead ofreal). - Box-drawing tree for execution flow.
├──and└──show the sequence of nodes. Branching nodes (Branch, Sequence, Switch) display their outputs as labeled sub-trees. - Inline parameters. Non-exec input pins are shown directly on the node line:
Set Health (NewValue = 100.0). - Pure node expansion. Pure nodes (no exec pins, like getters and math operations) are expanded below the consuming node using the
↳prefix, up to 10 levels deep. - Source pin references. When a value comes from another node's output, the connection is shown with
←:Target ← Get Player Character.ReturnValue. - Branch labels. Multi-output pins are labeled:
[True],[False],[0],[1], etc. - Loop-back markers. Cycle detection shows
(loop back)where execution revisits an already-visited node.
Example#
# Blueprint: BP_Enemy
Type: Actor Blueprint
Parent: Character (C++)
> Actor that deals damage.
## Variables
- Health: Float = 100.0 (replicated, editable, category: "Combat")
## Components
- DefaultSceneRoot (SceneComponent) [ROOT]
- EnemyMesh (SkeletalMeshComponent)
## Class Defaults (differs from parent)
- AutoPossessAI: PlacedInWorldOrSpawned
## EventGraph
### Event BeginPlay
├── Set Health (NewValue = 100.0)
└── Print String (InString = Enemy spawned)
Complex Graph Example#
For a Blueprint with branching logic, the tree structure reveals control flow:
### Event AnyDamage
├── Branch (Condition ← Is Valid.ReturnValue)
│ ├── [True]:
│ │ ├── Set Health (NewValue ← Clamp.ReturnValue)
│ │ │ ↳ Clamp (Value ← Subtract.ReturnValue, Min = 0.0, Max = 100.0) → NewValue
│ │ │ ↳ Subtract (A ← Get Health.ReturnValue, B ← Damage) → Value
│ │ └── Branch (Condition ← Less Equal.ReturnValue)
│ │ ├── [True]:
│ │ │ └── Call Die
│ │ └── [False]:
│ │ └── Play Hit React Montage
│ └── [False]:
│ └── (end)
└── (end)
In this example:
├──/└──show execution flow (which node runs next).↳shows pure node chains (data flow, where values come from).←shows which output pin provides a value to an input pin.[True]/[False]label the branch output pins.(end)marks the end of an execution path.
detail (--format=detail)#
Same layout as summary, with one key addition:
- 8-character GUID suffixes appear after every node title (e.g.,
Set Health [C9D0E1F2]).
Use this format when you need node GUIDs for subsequent write operations (add-node, connect, disconnect, remove-node, set-pin-default).
Example#
### Event BeginPlay
├── Set Health [C9D0E1F2] (NewValue = 100.0)
└── Print String [D3E4F5A6] (InString = Enemy spawned)
#### Pin Details
| Node | GUID | Pin | Value/Connection |
|------|------|-----|------------------|
| Set Health | C9D0E1F2 | NewValue | 100.0 |
| Print String | D3E4F5A6 | InString | Enemy spawned |
backup (--format=backup)#
Full structured JSON output. Every field is present, every GUID is included, and pin types use the internal UE category names. This is the most complete format but also the most verbose.
Key Sections#
success: Boolean indicating the export succeeded.summary: A one-line natural language description of the Blueprint's purpose (auto-generated, rule-based).blueprint: Metadata includingname,path,blueprintType,parentClass,nativeParentClass,inheritanceChain, andimplementedInterfaces.variables: Array of variable definitions. Each entry includesname,type(withcategory,subCategory,isArray,isSet,isMap),defaultValue,category,tooltip, andflags(replication, editability, expose-on-spawn, etc.).classDefaults: CDO property diff from the parent class. Contains apropertiesarray where each entry hasname,value, andtype.components: Component hierarchy withroot(name of the root component) andtree(array of nodes, each withname,componentClass,parent,isRoot, and overridden properties).eventDispatchers: Array of event dispatchers, each withnameandparameters.graphs: Array of graphs. Each graph hasname,graphType(EventGraph,Function,Macro,InterfaceImpl), an optionalsignature(for functions), and anodesarray. Each node hasnodeId,nodeClass,displayTitle,posX,posY,comment,isDisabled, and apinsarray. Each pin haspinName,pinId,direction,isExec,isHidden,type,defaultValue, andlinkedPins(with optionalresolvedNodeIdfor reroute resolution).
Example#
{
"success": true,
"summary": "Actor that deals damage.",
"blueprint": {
"name": "BP_Enemy",
"path": "/Game/Blueprints/BP_Enemy",
"blueprintType": "Normal",
"parentClass": "/Script/Engine.Character",
"nativeParentClass": "/Script/Engine.Character",
"inheritanceChain": ["BP_Enemy", "Character", "Pawn", "Actor", "Object"],
"implementedInterfaces": []
},
"variables": [
{
"name": "Health",
"type": {
"category": "real",
"subCategory": "",
"isArray": false,
"isSet": false,
"isMap": false
},
"defaultValue": "100.0",
"category": "Combat",
"tooltip": "",
"flags": {
"replicated": true,
"repNotify": false,
"instanceEditable": true,
"blueprintReadOnly": false,
"exposeOnSpawn": false,
"savegame": false,
"transient": false
}
}
],
"components": {
"root": "DefaultSceneRoot",
"tree": [
{
"name": "DefaultSceneRoot",
"componentClass": "SceneComponent",
"isRoot": true
},
{
"name": "EnemyMesh",
"componentClass": "SkeletalMeshComponent",
"parent": "DefaultSceneRoot",
"isRoot": false
}
]
},
"classDefaults": {
"properties": [
{
"name": "AutoPossessAI",
"value": "PlacedInWorldOrSpawned",
"type": "Enum"
}
]
},
"eventDispatchers": [],
"graphs": [
{
"name": "EventGraph",
"graphType": "EventGraph",
"nodes": [
{
"nodeId": "A1B2C3D4-...",
"nodeClass": "K2Node_Event",
"displayTitle": "Event BeginPlay",
"posX": 0,
"posY": 0,
"pins": [
{
"pinName": "then",
"pinId": "E5F6A7B8-...",
"direction": "Output",
"isExec": true,
"isHidden": false,
"linkedPins": [
{
"nodeId": "C9D0E1F2-...",
"pinName": "execute",
"resolvedNodeId": "C9D0E1F2-..."
}
]
}
]
},
{
"nodeId": "C9D0E1F2-...",
"nodeClass": "K2Node_CallFunction",
"displayTitle": "Set Health",
"posX": 300,
"posY": 0,
"pins": [
{
"pinName": "execute",
"direction": "Input",
"isExec": true,
"linkedPins": [{"nodeId": "A1B2C3D4-..."}]
},
{
"pinName": "NewValue",
"direction": "Input",
"isExec": false,
"type": {"category": "real"},
"defaultValue": "100.0",
"linkedPins": []
},
{
"pinName": "then",
"direction": "Output",
"isExec": true,
"linkedPins": [
{"nodeId": "D3E4F5A6-...", "resolvedNodeId": "D3E4F5A6-..."}
]
}
]
},
{
"nodeId": "D3E4F5A6-...",
"nodeClass": "K2Node_CallFunction",
"displayTitle": "Print String",
"posX": 600,
"posY": 0,
"pins": [
{
"pinName": "InString",
"direction": "Input",
"isExec": false,
"defaultValue": "Enemy spawned",
"linkedPins": []
}
]
}
]
}
]
}
GUIDs are truncated in this example. In actual output, full 32-character GUIDs appear in every nodeId and pinId field. The example also omits some pin fields; real output includes all pins on every node.
Choosing a Format#
| Need | Format |
|---|---|
| Does this asset exist? What type? | overview |
| Scan many assets quickly | overview |
| Understand a Blueprint's structure | summary |
| Paste into AI chat for analysis | summary |
| Prepare for write operations (need node GUIDs) | detail |
| See all nodes including disconnected/orphaned | backup |
| Programmatic parsing (Python, CI/CD) | backup |
| Full asset backup or migration | backup |
Command Examples#
# Default export (summary format)
-verb=export -asset=/Game/Blueprints/BP_Enemy
# Quick scan (overview)
-verb=export -asset=/Game/Blueprints/BP_Enemy --format=overview
# Get node GUIDs for write operations
-verb=export -asset=/Game/Blueprints/BP_Enemy --format=detail
# Full JSON for programmatic use
-verb=export -asset=/Game/Blueprints/BP_Enemy --format=backup
# Export to file instead of stdout
-verb=export -asset=/Game/Blueprints/BP_Enemy --format=detail -out=C:/exports/enemy.txt