Skip to content

Output

An export writes up to four formats into one output folder: an HTML site, Markdown files, a JSON report and AI-ready text. You choose the formats on the Export page of the panel, in the settings, with -Formats on the command line or in the export options from Python.

A live sample shows a generated HTML site.

The default output folder is Saved/BlueprintScribe in your project folder. Relative paths start at the project folder; absolute paths are used as they are. With all formats on, the folder looks like this:

Saved/BlueprintScribe/
.blueprint-scribe marker file, see "Cleaning" below
index.html start page of the HTML site
audit.html all findings (only with Audit findings on)
migration.html C++ migration report
assets/ scribe.css, scribe.js, data.js and icon.svg of the site
pages/ one .html page per asset
images/ graph images, one folder per asset
markdown/ index.md, audit.md, migration.md and one .md file per asset
scribe.json JSON report
ai/ AI-ready text: one .md per asset, blueprints.md and blueprints.jsonl

Every asset has an id that is used for its file names: the package path without the leading slash, with / replaced by .. Characters other than letters, digits, ., _ and - become _. For example, /Game/Blueprints/BP_Door is written to pages/Game.Blueprints.BP_Door.html, markdown/Game.Blueprints.BP_Door.md, ai/Game.Blueprints.BP_Door.md and images/Game.Blueprints.BP_Door/.

Every export writes a .blueprint-scribe marker file into the output folder. Before an export, Blueprint Scribe checks for this file:

  • Marker present (an earlier export wrote to this folder): the pages, images, markdown, assets and ai folders and the files index.html, audit.html, migration.html and scribe.json are deleted, then the new export is written. Nothing else in the folder is touched.
  • No marker: nothing is deleted. Files with the same names are overwritten.

This keeps pages of deleted or renamed Blueprints from lingering, without ever deleting a folder that Blueprint Scribe didn’t create.

Open index.html in a browser. The site needs no server: the navigation and search data are loaded from assets/data.js as a script, so the site works from a local folder or an unpacked zip, and you can upload the folder to any static web host. It loads no files from the internet.

Every page has the same frame:

  • Top bar: the title, Overview, Audit and C++ migration links (Audit only when audit findings are included), the search box and a button that switches between light and dark theme.
  • Sidebar: every folder as a collapsible group with its assets sorted by name, a colored dot for the asset kind and a marker on assets with errors or warnings. The Filter assets box filters the list by name. On narrow screens the sidebar opens with the menu button.
  • Footer: the export time and the credit line.

The search box (Search Blueprints, functions, variables) searches asset names, descriptions and folders, and the names of variables, functions, events, dispatchers and macros. All words you type must match, ignoring case. Exact names come first, then names that start with the query, then names that contain it, then other matches (for example in a description); at the same level, assets come before members. Up to 40 results are shown.

Key Action
/ Jump to the search box (when you are not typing in another field)
Arrow Down / Arrow Up Move through the results
Enter Open the highlighted result, or the first one
Escape Close the results

The site follows the light or dark setting of your operating system. The theme button switches between light and dark, and the browser remembers your choice.

index.html shows the title, the scanned scope and the export time, and these numbers: Blueprints, Structures and enums, Nodes, Documented, Complexity (average), and with audit findings included Health score, Errors and Warnings.

Below is a table of all assets with Name (and the start of the description), Kind, Folder, Nodes, Complexity, C++ (the C++ migration score), Documented and, with audit findings included, Issues (errors and warnings). Assets without logic show - for Complexity and C++. Kind chips filter the table, and clicking a column header sorts it.

audit.html lists every finding with Severity, Asset, Rule and Finding, errors first. Chips filter by severity and by rule. The asset name links to the audit section of the asset’s page. The page is written only when Audit findings is on.

migration.html shows the number of strong C++ candidates, of Blueprints to consider, of Blueprints with upgrade notes and the average complexity, then a sortable table with Asset, C++ score, Verdict, Complexity and Why (the reasons and the upgrade notes), highest score first. The asset name links to the C++ migration section of its page. See C++ migration report.

Each asset page starts with the folder, the kind and the name, the description (or “No description.”), and a list of facts: Parent, Interfaces, Display name, Category, Namespace, Skeleton, Compile, Size, Complexity and C++ candidate (for assets with logic), Hard references, Used by and Documented. Facts that are empty are left out.

The sections below depend on the asset. An On this page list next to the content links to each section.

Section Content Assets
Audit The asset’s findings with severity, rule and message, linked to the graph they are in Any, with audit findings included
C++ migration The C++ score and verdict, the reasons, and Before an engine upgrade with the upgrade notes Assets with reasons or upgrade notes
Entries Name, value and description of each entry Enums
Components Component tree with classes, inherited components marked “from” the class that adds them, and tooltips Actor Blueprints
Widgets Widget hierarchy, widgets marked Variable when they are exposed as variables, and widget animations Widget Blueprints
Variables / Fields Name with flags, Unused marker and category; type; default value; description Blueprints / structures
Functions One card per function, see below Blueprints with functions
Events One card per event, with a link to the graph that holds it Blueprints with events
Event Dispatchers One card per dispatcher with its signature Blueprints with dispatchers
Macros One card per macro Blueprints with macros
Graphs Table of all graphs with kind and node count, and the images of graphs not already shown with a function or macro Blueprints
Notes Comment boxes and node comments, with their graph and node Blueprints with comments
References Uses (hard references, then soft ones marked “soft”) and Used by (levels of World Partition actors marked “placed in level”) Any with references

A function card shows the name, the access when it isn’t Public, the flags, the signature (for example Open(Speed: Float (double-precision)) → Success: Boolean), the description and category, a table of inputs and outputs with type, default value and “(by ref)”, the local variables in a collapsible list, and the graph image.

Types, parent classes, interfaces, components and references link to the page of the asset they name when it is part of the export. Engine and C++ types are plain text.

Click a graph image to open it in the viewer. Scroll to zoom, drag to pan, use Fit and 100% to reset the view, and close it with the close button or Escape. See Graph images for how the images are made.

With Private members off, private variables and functions are left out of the pages and the search. With Audit findings off, the Audit link, audit.html, the Audit sections and the Issues and health numbers on the overview are left out.

The Markdown files are written to the markdown folder:

  • index.md: the title, the scope, the number of assets, the coverage, with audit findings included the health score, error and warning counts and a link to audit.md, and the average complexity with a link to migration.md. Then a table of all assets with Name, Kind, Folder, Nodes, Complexity, C++ and Documented.
  • audit.md: a table of all findings with Severity, Asset, Rule and Finding. Only with audit findings included.
  • migration.md: the C++ migration report as a table with Asset, C++ score, Verdict, Complexity and Why.
  • One <id>.md file per asset with the same content as the HTML page: a facts table, then the C++ migration, audit, entries, components, widgets, variables or fields, functions, events, event dispatchers, macros, graphs, notes and references.

Links between the files are relative (Game.Blueprints.BP_Door.md). Graph images are referenced as ../images/<id>/<graph>.png, so keep the markdown and images folders next to each other when you copy the files, for example into a wiki repository.

scribe.json contains the whole scan: every asset with everything Blueprint Scribe found, and every finding. It is UTF-8 without a byte order mark.

An asset from an export (an Animation Blueprint), followed by one finding:

{
"generator": "ta Blueprint Scribe 1.1.0",
"title": "Scribe Test",
"generated": "2026-10-08T21:53:15.369Z",
"healthScore": 69,
"docCoverage": 0.75609755516052246,
"complexityScore": 14,
"scope": [
"/Game/ScribeTest"
],
"assets": [
{
"name": "ABP_Cube",
"package": "/Game/ScribeTest/Animation/ABP_Cube",
"objectPath": "/Game/ScribeTest/Animation/ABP_Cube.ABP_Cube",
"assetClass": "AnimBlueprint",
"kind": "Animation",
"id": "Game.ScribeTest.Animation.ABP_Cube",
"description": "Animation Blueprint of the engine's skeletal cube.",
"category": "",
"displayName": "",
"namespace": "",
"parentChain": [
{ "text": "AnimInstance", "target": "", "note": "" }
],
"interfaces": [],
"components": [],
"variables": [],
"functions": [],
"events": [],
"dispatchers": [],
"macros": [],
"graphs": [
{
"name": "AnimGraph",
"kind": "Anim Graph",
"path": "AnimGraph",
"nodeCount": 1,
"logic": "Nodes: Output Pose",
"image": "images/Game.ScribeTest.Animation.ABP_Cube/AnimGraph.png",
"imageSize": { "x": 275, "y": 260 }
}
],
"notes": [],
"widgets": [],
"widgetAnimations": [],
"enumEntries": [],
"targetSkeleton": {
"text": "SkeletalCube_Skeleton",
"target": "/Engine/EngineMeshes/SkeletalCube_Skeleton",
"note": ""
},
"uses": [
{ "text": "SkeletalCube_Skeleton", "target": "/Engine/EngineMeshes/SkeletalCube_Skeleton", "note": "" }
],
"usedBy": [],
"compileStatus": "Up to date",
"metrics": {
"nodes": 1,
"largestGraphNodes": 1,
"largestGraph": "AnimGraph",
"hardReferencePackages": 1,
"hardReferenceBytes": 6505,
"referencers": 0,
"documentable": 1,
"documented": 1,
"branches": 0,
"loops": 0,
"casts": 0,
"mathNodes": 0,
"tickNodes": 0,
"tickLoops": 0,
"complexity": 1
},
"migration": {
"score": 0,
"verdict": "Fine in Blueprint",
"reasons": [],
"upgradeNotes": []
},
"docCoverage": 1
}
],
"issues": [
{
"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
"assetName": "BP_Door",
"rule": "Tick",
"ruleName": "Event Tick",
"severity": "Warning",
"message": "Event Tick runs 24 nodes every frame. Timers, events or a lower tick interval are often cheaper.",
"graph": "EventGraph",
"node": "31FC0097-46B1-D39A-D187-ED9EA265DB73"
}
]
}

The example is shortened: the real export has more assets and findings, the Animation Blueprint also lists its empty Event Graph, and the real file has one property per line.

Field Meaning
generator ta Blueprint Scribe and the plugin version
title Title of the export (the project name followed by “Blueprints” when no title is set)
generated Time of the export in UTC (ISO 8601)
healthScore Health score from 0 to 100. See Health and coverage.
docCoverage Documentation coverage of all assets, from 0 to 1
complexityScore Average complexity of the Blueprints with logic, from 0 to 100
scope The scanned folders, or the names of the scanned assets
assets One object per asset, sorted by package path
issues Every finding of the scan

Boolean fields keep Unreal’s b prefix, for example bPrivate.

Field Meaning
name Asset name
package Package path, for example /Game/Blueprints/BP_Door
objectPath Object path, for example /Game/Blueprints/BP_Door.BP_Door
assetClass Asset class, for example Blueprint, WidgetBlueprint, AnimBlueprint, UserDefinedStruct or UserDefinedEnum
kind Actor, Component, Object, Widget, Animation, Interface, Function Library, Macro Library, Structure or Enum
id File name (without extension) of the asset’s pages
description Blueprint description, structure tooltip or enum description
category, displayName, namespace Blueprint category, display name and namespace from Class Settings
parentChain Links to the parent classes, from the direct parent up to (without) Object
interfaces Links to the implemented interfaces
components Components of an Actor Blueprint
variables Member variables, or the fields of a structure
functions, events, dispatchers, macros Function objects
graphs Graph objects
notes Comment boxes and node comments
widgets Widget hierarchy of a Widget Blueprint
widgetAnimations Names of the widget animations
enumEntries Entries of an enum
targetSkeleton Link to the skeleton of an Animation Blueprint; empty fields otherwise
uses Links to the packages this asset references: hard references first, then soft ones with note soft. C++ (/Script) packages are left out.
usedBy Links to the packages that reference this asset. Actors placed in World Partition levels are shown as their level, with note placed in level.
compileStatus Up to date, Warnings, Error, Dirty or Unknown; empty for structures and enums
metrics Size, logic and documentation numbers, see below
migration The C++ migration result: score (0 to 100), verdict (Strong C++ candidate, Consider C++, Fine in Blueprint or No logic), reasons and upgradeNotes
docCoverage documented ÷ documentable of this asset, from 0 to 1 (1 when there is nothing to document)
Object Fields
Link text (the name shown), target (package of the asset it points to; empty for C++ classes and types), note (soft, placed in level or empty)
Variable name, type (link), category, defaultValue, description (the tooltip), flags, bInstanceEditable, bPrivate, bUsed (false when no graph of the Blueprint reads or writes it)
Function name, description, category, access (Public, Protected or Private), flags, inputs, outputs, localVariables, graphName (graph of a function or macro), ownerGraph (graph that holds an event), bOverride, bPrivate, nodeGuid (32 hexadecimal digits)
Parameter name, type (link), defaultValue, bByRef
Component name, class (link), parent (component it is attached to), description, inheritedFrom (class that adds it; empty for the Blueprint’s own components), depth
Graph name, kind, path (unique within the Blueprint, for example EventGraph/Collapsed Graph), nodeCount (without comments and reroute nodes), logic (the graph as readable text, see Graph logic), image (relative path, empty without an image), imageSize (x, y)
Note graph, text, node (title of the commented node; empty for comment boxes)
Widget name, class (link), depth, bIsVariable
Enum entry name, displayName, description, value
Metrics nodes (all graphs, without comments and reroute nodes), largestGraph and largestGraphNodes, hardReferencePackages and hardReferenceBytes (see below), referencers (number of usedBy entries), documentable and documented (see Health and coverage), branches, loops, casts and mathNodes (enabled nodes of each type), tickNodes and tickLoops (nodes and loops Event Tick runs every frame), complexity (see Complexity score; 0 for assets without logic)

Graph kinds are Event Graph, Function, Construction Script, Interface, Macro, Collapsed, Anim Graph, State Machine, State, Conduit and Transition.

hardReferencePackages and hardReferenceBytes count every package that is loaded together with the asset through hard references (recursively, without C++ packages) and their size on disk.

Field Meaning
asset Object path of the asset
assetName Asset name
rule Rule id, for example Graph.Large. See Audit rules.
ruleName Rule name, for example Large graph
severity Error, Warning or Info
message The finding
graph Path of the graph the finding is about; empty if none
node GUID of the node the finding is about (with hyphens); empty if none

The ai folder holds compact text for AI assistants: one <id>.md per asset, blueprints.md with all assets and blueprints.jsonl with one JSON line per asset. Every graph is written as readable logic. With only this format selected, ai/blueprints.md is the start file of the export. See AI export.

The Private members option applies to the AI-ready text as well. Audit findings are always included in it.

The footer of every HTML page shows “Generated” and the export time. With Credit line on (the default), it continues with “with ta Blueprint Scribe 1.1.0 by tridiART” (with the installed version number), where the plugin name links to tridiart.com. The last line of every Markdown asset file reads “Generated” and the export time, followed by “with ta Blueprint Scribe by tridiART” when the credit line is on.

Turn the credit line off on the Export page, with Show Credit in the settings, or with show_credit in Python. The pages then only show the export time. The generator meta tag of the HTML pages and the generator field of scribe.json are always written.