Tree Obs

by Yuyang
5
4
3
2
1
Score: 50/100

Description

Reviews

No reviews yet.

Stats

1
stars
11
downloads
0
forks
6
days
6
days
6
days
1
total PRs
0
open PRs
0
closed PRs
1
merged PRs
0
total issues
0
open issues
0
closed issues
19
commits

Latest Version

6 days ago

Changelog

What's Changed

New Contributors

Full Changelog: https://github.com/KANYE-Shen/tree-obs/commits/0.1.0

README file from

Github

Tree Obs

中文说明

Tree Obs turns a marked Tree Chat Markdown export into one Obsidian note per node and connects parent and child notes with Wikilinks. It also accepts manually marked Markdown that follows the same format.

Relationship to Tree Chat

Tree Obs is an independent companion plugin for Tree Chat. It has its own repository and runs separately. KANYE-Shen maintains Tree Obs; the Tree Chat team does not publish or maintain it.

Tree Obs does not bundle or run Tree Chat. It reads a Markdown file that you place in your Obsidian vault. It does not provide automatic or bidirectional synchronization.

Tree Chat's current Markdown export adds the required node markers automatically. Open Harvest, then choose Export Markdown. Tree Obs does not import JSON.

Data flow

Tree Chat → Harvest → Export Markdown → put the exported .md file in your vault
→ Tree Obs conversion → one linked .md file per node → Obsidian Graph view

Tree Obs leaves the source export in place. It creates a folder named after the root node and writes the generated node notes inside that folder.

Installation

Community plugins

After the listing is approved, install Tree Obs from Obsidian:

  1. Open Settings → Community plugins → Browse.
  2. Search for Tree Obs.
  3. Select Install, then Enable.

Manual installation from a GitHub Release

When a GitHub Release is published, download main.js and manifest.json from the same release. Do not mix files from different versions.

  1. Create <vault>/.obsidian/plugins/tree-obs/.
  2. Copy main.js and manifest.json into that folder.
  3. Reload Obsidian.
  4. Open Settings → Community plugins and enable Tree Obs.

Version 0.1.0 has no styles.css file.

Quick start

  1. In Tree Chat, open Harvest, then choose Export Markdown. The exported Markdown already contains Tree Obs node markers.
  2. Put the exported .md file anywhere in your Obsidian vault.
  3. Tree Obs currently displays its command labels in Chinese. Open the file and run 转换当前文件为树状笔记 (Convert current file to tree notes) from the command palette, or right-click the file and choose 转换为树状笔记 (tree-obs) (Convert to tree notes (tree-obs)).
  4. Tree Obs writes one .md file per node to the configured output location. The default location is beside the source file.
  5. Open Obsidian's Graph view to inspect the parent-child links.

Input marker format

Current Tree Chat Markdown exports created through Harvest → Export Markdown include these markers. Add them by hand only when you use an older export or another compatible Markdown file.

Each marker occupies its own line and describes the content immediately above it:

我们来系统聊聊机器学习。整体上可以分成几大范式,
每个范式再往下展开具体模型。

<!-- node: 机器学习漫谈 -->

监督学习:给模型带标签的数据,学习输入到输出的映射。
最常见的任务是分类和回归。

<!-- node: 监督学习 | parent: 机器学习漫谈 -->

A root marker omits parent:

<!-- node: Root name -->

A child marker names its parent:

<!-- node: Child name | parent: Root name -->

The document must contain exactly one root. Node names must be unique. Markers inside fenced code blocks remain ordinary content. See FORMAT.md for the parser rules and the sample export for a complete input file. The 插入节点标记 (Insert node marker) command can insert a marker template for legacy or compatible Markdown.

Output example

The complete sample from which the excerpt above was taken produces a flat folder of node notes:

机器学习漫谈/
├── 机器学习漫谈.md   (root; links to 监督学习 and 强化学习)
├── 监督学习.md        (parent: 机器学习漫谈; child: 线性回归)
├── 强化学习.md        (parent: 机器学习漫谈)
└── 线性回归.md        (parent: 监督学习)

监督学习.md contains:

# 监督学习

监督学习:给模型带标签的数据,学习输入到输出的映射。
最常见的任务是分类和回归。

---
⬆ 父节点: [[机器学习漫谈]]
⬇ 子节点: [[线性回归]]

Tree Obs writes relationship links in the footer rather than in frontmatter.

Safety and overwrite behavior

Tree Obs checks the tree structure and all planned target paths before it writes to the vault. A missing root, multiple roots, duplicate node name, self-parent, or cycle stops conversion. An unknown parent creates an orphan note and a warning.

When the target folder already exists, the Existing target folder setting controls the result:

Policy Behavior
ask (default) Ask before writing into the existing folder. Canceling leaves it unchanged.
merge Write without prompting.
abort Skip the conversion.

Both ask (after confirmation) and merge create missing planned notes and overwrite .md targets whose names match exactly. Tree Obs leaves unrelated files untouched and does not delete files.

Tree Obs refuses to write when a generated path would overwrite the source file, when a case-only filename conflict exists, or when a planned .md path is occupied by a folder or another non-file entry. It also refuses to treat an existing file as the target folder.

The write phase processes files one at a time and is not transactional. If an exception interrupts the write phase, files created or updated before the exception remain in the vault. Tree Obs reports how many files it wrote before the interruption.

Privacy

Tree Obs conversion sends no network requests. The plugin contains no telemetry, account system, or paid service. It reads the selected Markdown inside Obsidian and writes generated Markdown notes to the vault.

This privacy statement covers Tree Obs conversion only. It makes no claim about Tree Chat, Obsidian Sync, other plugins, or other services.

Settings

Tree Obs provides two settings:

  • Output location: source file folder (default), vault root, or a custom path relative to the vault root.
  • Existing target folder: ask (default), merge, or abort. The policies use the overwrite rules above.

Compatibility and limitations

  • Tree Obs 0.1.0 requires Obsidian 1.4.0 or later. Its manifest allows desktop and mobile use, but version 0.1.0 has not been verified on a physical mobile device.
  • Tree Obs accepts marked Markdown. It does not import JSON.
  • It reconstructs parent-child relationships and Wikilinks. It does not restore Tree Chat node IDs, 3D layers, Rings history, Nutrients, semantic cards, attachments, or complete project metadata.
  • It does not copy attachments referenced by the source Markdown.
  • It does not synchronize later changes between Tree Chat and Obsidian. Run the conversion again when you want to refresh generated notes.
  • Node names must be unique. Tree Obs replaces filename and Wikilink-unsafe characters and resolves sanitized-name collisions with numeric suffixes.

Development

npm ci
npm run dev
npm run build
npm test
npm run lint
  • npm run dev rebuilds main.js when source files change.
  • npm run build runs the TypeScript check and creates a production main.js.
  • npm test runs the Vitest suite.

Source layout:

License

MIT © 2026 KANYE-Shen