Sync Embeds
pendingby uthvah
Turn static embeds into live synced blocks.
Sync Embeds transforms standard Obsidian embeds into live, two-way synced blocks. Edit any note or section directly from where you embed it, without ever needing to open the source file.
It's designed to feel seamless, stable, and completely native to the Obsidian experience.
Edit any embed, anywhere, and have it instantly save to the original note.
Core Features
- π Live Two-Way Syncing β Edit an embed and see the changes reflected in the source note instantly. No more context switching.
- β¨οΈ Full Keyboard Shortcut Support β The #1 limitation is solved. Use all your familiar hotkeys for checkboxes, formatting, lists, and headers, directly within an embed.
- π― Embed Specific Sections β Isolate and edit just a single header section from a note using the standard
![[My Note#My Header]]syntax. Perfect for managing tasks or project sections from a central dashboard. - π¨ Smart Header Management β Section embeds automatically enforce header hierarchy. Use Alt+2-6 hotkeys to insert headers with intelligent restrictions.
- π Dynamic Patterns β Create embeds that automatically update based on dates, times, or the current note title. Perfect for daily notes and project dashboards.
- π Custom Display Names β Show friendly aliases instead of raw file paths for cleaner, more readable embeds.
- β‘ Lightweight & Stable β Built from the ground up to be robust, with lazy loading, smart caching, and a focus on performance.
How it Works
Instead of just rendering the content, Sync Embeds creates a hidden, fully functional editor pane for the source note. It then re-parents the visual part of that editor directly into your current document. This means you are interacting with a real editor instance, providing a truly native feel.
For section embeds, an intelligent viewport system restricts editing to only the target section while maintaining full synchronization with the source file.
Installation
From Community Plugins (Recommended)
Coming Soon! This plugin is currently awaiting review to be added to the official Community Plugins browser.
Using BRAT (Beta)
- Install the BRAT plugin from the Community Plugins browser.
- In Obsidian, go to
SettingsβBRATβAdd Beta plugin. - Enter
uthvah/sync-embedsas the repository. - BRAT will install the plugin. Enable it under
SettingsβCommunity plugins.
Manual Installation
- Go to the latest release.
- Download the
main.js,manifest.json, andstyles.cssfiles. - In your Obsidian vault, navigate to
.obsidian/plugins/. - Create a new folder named
sync-embeds. - Copy the downloaded files into this new folder.
- Restart Obsidian, then enable the plugin under
SettingsβCommunity plugins.
Usage
Using Sync Embeds is simple. Just wrap your standard embed syntax inside a sync code block.
Basic Synced Block
Use the sync code block language identifier:
```sync
![[My Note To Edit]]
```
Embed a Specific Section
You can also embed just a single header section:
```sync
![[My Note To Edit#A Specific Heading]]
```
Multiple Embeds
Create dashboards by embedding multiple notes or sections:
```sync
![[Daily Notes/2024-03-15|Today]]
![[Daily Notes/2024-03-14|Yesterday]]
![[Tasks#Inbox|My Tasks]]
```
Dynamic Patterns
Create embeds that automatically adapt to the current context:
```sync
![[Daily/{{date:YYYY-MM-DD}}|Today's Note]]
![[Tasks#{{date-7d:YYYY-MM-DD}}|Last Week's Tasks]]
![[Projects/{{title}}#Notes|Project Notes]]
```
Available patterns:
{{date:FORMAT}}β Current date in any format (e.g.,YYYY-MM-DD,DD MMM YYYY){{dateΒ±Xu:FORMAT}}β Date offsets:d(days),w(weeks),m(months),y(years){{time:FORMAT}}β Current time (e.g.,HH:mm,hh:mm A){{title}}β Current note's title
Custom Options
Override global settings for individual embeds:
```sync
![[Long Note|Compact View{height:300px}]]
![[Reference|Full Height{maxHeight:none,title:false}]]
```
Available options:
heightβ Set fixed height (e.g.,400px,60vh)maxHeightβ Set maximum height before scrollingtitleβ Show/hide title (trueorfalse)
Smart Features
Header Management
Use Alt+2 through Alt+6 to insert or toggle headers (H2-H6):
- Press once on plain text β Convert to header
- Press again on header β Remove formatting
- Press different level β Change header level
In section embeds, header hierarchy is automatically enforced:
- H2 section β Only H3-H6 allowed
- H3 section β Only H4-H6 allowed
Typing # at the start of a line is intelligently blocked in section embeds to prevent hierarchy violations.
Keyboard Shortcuts
All your favorite Obsidian shortcuts work inside embeds:
- Ctrl/Cmd+B β Bold
- Ctrl/Cmd+I β Italic
- Ctrl/Cmd+K β Insert link
- Ctrl/Cmd+E β Toggle checklist
- Alt+2-6 β Insert headers
- And many more!
Customization
Fine-tune appearance and behavior in Settings β Sync Embeds:
- Embed height and maximum height
- Gap between multiple embeds
- Properties collapse behavior
- Inline title visibility
- Focus highlighting
- Lazy loading threshold
Use Cases
Daily Note Dashboard
```sync
![[Daily/{{date:YYYY-MM-DD}}|π
Today]]
![[Daily/{{date-1d:YYYY-MM-DD}}|Yesterday]]
![[Tasks#{{date:YYYY-MM-DD}}|Today's Tasks]]
```
Project Overview
```sync
![[Projects/{{title}}#Overview|Summary{height:300px}]]
![[Projects/{{title}}#Tasks|Active Tasks]]
![[Projects/{{title}}#Notes|Latest Notes]]
```
Meeting Notes
```sync
![[Meetings/{{date:YYYY-MM-DD}}#Action Items|Today's Actions]]
![[Meetings/{{date-1w:YYYY-MM-DD}}#Follow-ups|Last Week]]
```
Philosophy
The goal of Sync Embeds is to make your notes more dynamic and interconnected. It removes the friction of editing transcluded content, allowing you to build powerful dashboards, manage recurring tasks, and maintain a single source of truth for blocks of information without ever leaving the note you're working on.
Contributing & Feedback
This plugin was built with and for the community. If you find a bug, have a feature idea, or want to contribute, please feel free to open an issue or submit a pull request!
- Issues & Bug Reports: GitHub Issues
- Feature Requests: GitHub Discussions
If you find this plugin helpful, please consider starring β the repository!
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.