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.
Output folder
Section titled “Output folder”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.jsonlEvery 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/.
Cleaning
Section titled “Cleaning”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,assetsandaifolders and the filesindex.html,audit.html,migration.htmlandscribe.jsonare 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.
HTML site
Section titled “HTML site”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.
Layout
Section titled “Layout”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.
Search
Section titled “Search”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 |
Themes
Section titled “Themes”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.
Overview page
Section titled “Overview page”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 page
Section titled “Audit page”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.
C++ migration page
Section titled “C++ migration page”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.
Asset pages
Section titled “Asset pages”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.
Graph viewer
Section titled “Graph viewer”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.
Private members and audit findings
Section titled “Private members and audit findings”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.
Markdown
Section titled “Markdown”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 toaudit.md, and the average complexity with a link tomigration.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>.mdfile 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.
JSON report
Section titled “JSON report”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.
A variable and a function of a Blueprint:
{ "name": "OpenSpeed", "type": { "text": "Float (double-precision)", "target": "", "note": "" }, "category": "Door", "defaultValue": "2.0", "description": "", "flags": [ "Instance Editable", "Expose on Spawn" ], "bInstanceEditable": true, "bPrivate": false, "bUsed": true}{ "name": "Open", "description": "Opens the door at the given speed. Returns false when it is locked.", "category": "", "access": "Public", "flags": [], "inputs": [ { "name": "Speed", "type": { "text": "Float (double-precision)", "target": "", "note": "" }, "defaultValue": "", "bByRef": false } ], "outputs": [ { "name": "Success", "type": { "text": "Boolean", "target": "", "note": "" }, "defaultValue": "true", "bByRef": false } ], "localVariables": [], "graphName": "Open", "ownerGraph": "", "bOverride": false, "bPrivate": false, "nodeGuid": "2837C84A4FB37403CFBDFFA34CEF5926"}Top level
Section titled “Top level”| 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 |
Assets
Section titled “Assets”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) |
Nested objects
Section titled “Nested objects”| 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.
Issues
Section titled “Issues”| 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 |
AI-ready text
Section titled “AI-ready text”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.
Credit line
Section titled “Credit line”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.