Joel Oliveira6 downloadsEdit structured data visually and generate Markdown notes from reusable templates.
Edit structured data in Obsidian's right sidebar and generate a Markdown note from a reusable template. Each connection links a JSON data source, a Markdown template and a generated note. The files stay in your vault, and the generated note contains ordinary Markdown. No accounts or external services are required.
Version: 0.5.4 | Status: release candidate, not yet community-approved | Platform: desktop preview.
I built this for my own Obsidian notes. I wanted to change a value once and keep every total and repeated reference up to date. My first use case was a financial planning note with recurring amounts, calculations, tables and goals.
Putting editable controls inside the report made it harder to read. Repeating the same numbers across notes made it easy to miss an update. I wanted to maintain the data beside the document and read the result as a normal note.
The same workflow also works for project notes, recurring summaries, goal trackers and other notes built from structured values.
one-thing-leads-to-another is a nod to "One Thing Leads to Another" by The Fixx. It also fits the plugin's workflow: change one value, and the calculations and generated note follow.
+, -, *, /, %, sum, min, max, round, ceil, floor and abs. Formulas do not run arbitrary JavaScript.main.js, manifest.json and styles.css to <vault>/.obsidian/plugins/note-template-sync/.Use the advanced Use existing JSON option to select a portable data file you already have.
The file picker lists file paths from your vault so you can choose an existing JSON source or Markdown file. Source and template files are read locally; saving values updates the source JSON, and synchronization writes the generated note. The plugin does not send vault data to external services.
Field edits save to JSON when you finish editing by leaving the field or pressing Enter. With Auto-sync enabled, the plugin updates the generated note after a short delay. Turning Auto-sync off cancels a queued update; later edits still save to JSON.
Manual Sync updates the note when the source and template produce different output. If the note contains external edits, its status becomes Review external changes and the plugin asks for confirmation before overwriting it. Put free-form writing in the template if it should appear in each generated version.
Synchronization runs while Obsidian is open. Rename tracking applies to moves made inside Obsidian.
{
"schema_version": 1,
"locale": "en-US",
"currency": "USD",
"fields": [
{
"key": "note_title",
"label": "Note title",
"section": "Overview",
"type": "text",
"tone": "none",
"value": "My notes"
},
{
"key": "tasks_total",
"label": "Tasks planned",
"section": "Progress",
"type": "number",
"tone": "none",
"value": 5
},
{
"key": "tasks_done",
"label": "Tasks completed",
"section": "Progress",
"type": "number",
"tone": "none",
"value": 2
}
],
"formulas": [
{
"key": "tasks_remaining",
"label": "Tasks remaining",
"expression": "max(0, tasks_total - tasks_done)",
"tone": "pending"
}
]
}
Use snake_case for field keys.
# {{text:note_title}}
Tasks planned: {{integer:tasks_total}}
Tasks completed: {{integer:tasks_done}}
Tasks remaining: **{{integer:tasks_remaining:pending}}**
Supported render types are text, number, decimal, integer, money, duration, duration_long and boolean. Optional color suffixes are income, expense, investment, pending and auto.
See examples/connected-notes/ for a complete example.
Use Node.js 22 or newer and the pnpm version declared in package.json:
pnpm install --frozen-lockfile
pnpm run check
See Contributing for the development workflow and code structure.
Follow the upgrade instructions to preserve your existing connections and data.
See Releasing for release and community submission instructions.
MIT. See LICENSE.