data.result.catalog of the JSON result. Each catalog node includes its heading text, heading level, page number, and source block index. Use it to build reading navigation, locate the original content, or split content by section—avoiding the loss of section context and poor topic retrieval caused by fixed-length RAG chunking.
Method 1: Use the parsing API
The catalog tree is not a separate endpoint. Enable
feature_config.enable_title_level_recognition during parsing and request json output to receive it.1
Enable title-level recognition
Set
enable_title_level_recognition to true in feature_config. Its default value is false.2
Request JSON output
Include
json in output_formats. When parsing is complete, read the tree from data.result.catalog in the response.3
Use catalog nodes as needed
Render
children directly for multi-level navigation. Use page_num and block_idx to link a catalog entry to its source page and content block.Python
Method 2: Use the get-catalog-tree Skill
Theget-catalog-tree Skill supports every file format accepted by the SoMark parsing API, including PDF, image, Word, PowerPoint, and Excel files. It can also read SoMark JSON directly. Give the file to a Skill-capable agent to receive a standard nested catalog tree JSON. See Supported file formats for the complete list.
An outline depends on a clear heading hierarchy. Excel files and other documents that mainly contain tabular data can be parsed, but this feature is not recommended when the source has no outline structure. The resulting outline may be empty or lack meaningful levels.
- Install with an agent
- Install with a command
Enter this prompt:
page_num and block_idx, which link it to the corresponding heading block in the original parsed JSON for section chunking and downstream RAG processing.
You can also run the script included with the Skill:
Response structure
The catalog tree is indata.result.catalog as an array of catalog nodes. Top-level nodes normally represent first-level headings; child nodes are recursively organized through children.
Usage tips
- The catalog nodes are already nested. You do not need to rebuild parent-child relationships from
title_level. - To split content by section, treat a node and its descendants as one section range, then use
page_numandblock_idxto retrieve its source JSON content blocks. - Heading levels are inferred from document layout and content. Sample-check results before integration for files with no clear heading hierarchy, low-quality scans, or irregular layouts.
- Keep the feature disabled when you only need document content and do not need section navigation.

