You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement DOM-based extraction of rendered Obsidian content with
support for both plain text and structured JSON output formats.
Features:
- rendered-text content type: Plain text extraction from rendered DOM
- rendered-json content type: Structured JSON with typed content blocks
- Cache system for fast repeated access
- Full Dataview/DataviewJS rendering support
- Settings UI for cache configuration
- Automatic cache invalidation on file changes
Content Types:
- application/vnd.olrapi.note+rendered-text (plain text)
- application/vnd.olrapi.note+rendered-json (structured JSON)
JSON Structure:
- metadata: source path, render timestamp, format version
- frontmatter: complete YAML frontmatter as object
- content: array of typed blocks (heading, table, list, paragraph, code, callout)
Table blocks include headers and rows as 2D arrays, making them
easy to parse and analyze programmatically.
Implementation:
- RenderCacheManager: handles rendering and caching
- StructuredExtractor: converts DOM to typed JSON blocks
- Cache stored in .obsidian/render-cache/ with hash-based keys
- 2-second content settlement wait for async plugin rendering
- Restores original user view after extraction
Benefits for AI Clients:
- Tables as parseable 2D arrays
- Document structure preserved with type tags
- Frontmatter metadata accessible
- Content queryable by type
- No parsing ambiguity
Testing:
- Verified with complex Dataview dashboards
- Tables extract correctly with headers and rows
- All frontmatter fields preserved
- Bundle size: 2.4mb (optimized, no PDF dependencies)
🤖 Generated with Claude Code
https://claude.com/claude-code
Co-Authored-By: Claude <[email protected]>
@@ -290,9 +325,8 @@ class LocalRestApiSettingTab extends PluginSettingTab {
290
325
<td class="name">
291
326
Encrypted (HTTPS) API URL<br /><br />
292
327
<i>
293
-
Requires that <a href="https://127.0.0.1:${
294
-
this.plugin.settings.port
295
-
}/${CERT_NAME}">this certificate</a> be
328
+
Requires that <a href="https://127.0.0.1:${this.plugin.settings.port
329
+
}/${CERT_NAME}">this certificate</a> be
296
330
configured as a trusted certificate authority for
297
331
your browser. See <a href="https://github.com/coddingtonbear/obsidian-web/wiki/How-do-I-get-my-browser-trust-my-Obsidian-Local-REST-API-certificate%3F">wiki</a> for more information.
298
332
</i>
@@ -305,9 +339,8 @@ class LocalRestApiSettingTab extends PluginSettingTab {
0 commit comments