- One-line pitch: Zendio is a browser extension for saving web pages, selected fragments, reading sessions, video notes, and AI chat conversations as structured Markdown for Obsidian.
- What it solves:
- Reduces manual copy and paste across pages, videos, and conversations
- Keeps source links, annotations, timestamps, screenshots, and YAML metadata together
- Provides route rules, path templates, and YAML fields that fit Obsidian Bases, Dataview, and Sidebar Highlights
- Who it is for: researchers, engineers, writers, knowledge workers, and heavy Obsidian users.
- Options and first-run setup are built on the current Stitch UI path with 12 release UI languages.
- Chromium builds can write through a user-selected local Vault folder; REST remains the fallback and the Firefox path.
- Video mode supports YouTube and Bilibili timestamp notes, captured text fragments, screenshot status dots, and screenshot attachments on export.
- Recent unsaved reader and video drafts can be restored for the latest 48 hours, up to the latest 5 pages and 20 recoverable items per page.
- Article, video, fragment, reading-session, and AI-chat notes each have dedicated path templates and YAML preview behavior.
- Support, feedback, contact, changelog, Terms of Use, and Privacy Policy resources are available from Options and first-run setup.
- Right-click to save any selection or full article.
- Extract title, URL, author, capture timestamp, and other metadata.
- Clean article body with Mozilla Readability while keeping checklists, code blocks, math, and tables.
- Generate Text Fragment URLs for one-click jumps back to the original paragraph.
- Add annotations in the floating clipping panel while context is still visible.
- Save comments alongside the source text in structured Markdown.
- Timestamp-driven filenames prevent repeated clips from overwriting each other.
- Keyboard-friendly focus handling keeps the dialog usable without a mouse.
- Merge fragments from one or more pages into a single reading note.
- Preserve reading order, source pages, and annotations.
- Restore recent unsaved reader drafts when the browser or tab is reopened within the retention window.
- Capture timestamp notes from supported YouTube and Bilibili pages.
- Save comment, subtitle, or selected text fragments with jump-back links.
- Track whether each timestamp already has a screenshot; clicking the dot toggles the screenshot state.
- Export screenshot attachments with configurable location, filename, and Markdown URL templates.
- Use a dedicated video note path template, separate from article and fragment templates.
- Export conversations from ChatGPT, Claude, Gemini, Copilot, Perplexity, Tongyi Qianwen, DeepSeek, Kimi, and similar supported platforms.
- Remove platform chrome and reaction noise while preserving conversation structure and formatting.
- Optional metadata helpers use only the providers you configure; clipping and export do not require a model provider.
- Configure multiple Obsidian vault targets.
- Route content by domain, keyword, URL, priority, and fallback rules.
- Test connections from Options and repair missing configuration fields through diagnostics.
- Customize note paths for article, video, fragment, reading-session, and AI-chat exports.
- Configure YAML fields by content type, including domain-specific mapping rules.
- Preview YAML from the current editor state and selected content type.
- Release UI languages: English, Simplified Chinese, Traditional Chinese, Japanese, German, French, Spanish (Spain), Spanish (Latin America), Italian, Korean, Portuguese (Brazil), and Russian.
- Language names are displayed in their native form in the language selector.
- Build or download the extension
- For local testing, run
npm run buildand loadbuild/distin Chrome Developer Mode. - Firefox builds use the Firefox build/package scripts and the REST writing path.
- For local testing, run
- Choose a write path
- Recommended on Chromium: select a local Obsidian Vault folder in Options.
- If local folder access is unavailable, denied, unsupported, or fails preflight, configure Obsidian Local REST API.
- Firefox uses Obsidian Local REST API for Vault writes.
- Finish Options setup
- Set vault targets and fallback behavior.
- Configure route rules, path templates, YAML fields, video screenshot attachment templates, and optional providers.
- Review privacy switches for anonymous usage statistics and error diagnostics.
- Node.js:
.nvmrcpins20.20.2; package engines allow>=20.19 <21. - npm: validated with
10.8.2; package engines allow>=10 <11. npm run test*andnpm run visual*entrypoints runverify:runtimefirst.- Common local gates:
npm run qualitynpm run verify:preflightnpm run verify:stitch-secondarynpm run build
- Firefox AMO automation lives in
.github/workflows/release-firefox-amo.yml; it builds the Firefox GA production package, submits listed/unlisted releases withweb-ext, and audits generated XPI archives before uploading workflow artifacts.
| Permission | Purpose | Privacy boundary |
|---|---|---|
activeTab |
Read the page content you choose to clip | Used only when you trigger a clip |
scripting |
Inject content scripts for clipping, reading, video, and support surfaces | Open-source runtime code |
storage |
Persist settings, route rules, local IDs, and recent recoverable drafts | Stored in the browser extension environment |
contextMenus |
Add the right-click save action | No browsing history tracking |
notifications |
Show completion and failure notifications | User-visible local notifications |
downloads |
Save generated fallback/export artifacts when requested | User-triggered only |
offscreen |
Host the Chromium local-folder bridge and screenshot processing support | Used only for browser-supported local operations |
host_permissions: <all_urls> |
Allow clipping on pages you actively use | Page access is tied to user-triggered capture flows |
host_permissions: http(s)://127.0.0.1/* |
Talk to Obsidian Local REST API | Communicates with the local Obsidian REST endpoint only |
Local folder access is optional and Chromium-only. Zendio cannot write to arbitrary local paths: you must explicitly choose a folder, writes are scoped to that browser-granted handle, and the handle can be cleared from Options.
- Select text, right-click, and choose the Zendio save action.
- Add comments, tags, or a target vault in the floating panel.
- For videos, use the Zendio video panel to add timestamp notes and screenshot states.
- Finish a reading or video session to export the Markdown note and attachments.
- Open Obsidian and review the saved note, YAML metadata, and linked assets.
Article
---
type: article
title: 'Reading Note Title'
url: 'https://example.com'
author: 'Author'
clipped_at: '2026-06-20T12:00:00'
tags: [clipping]
---
Article body goes here...Video
---
type: video
platform: 'Bilibili'
title: 'Video Note Title'
url: 'https://www.bilibili.com/video/example'
clipped_at: '2026-06-20T12:05:00'
tags: [video]
---
## 00:42
- Note for this timestamp
- Screenshot: `./assets/video-note-0042.png`Fragment
---
type: fragment
source_title: 'Original Page Title'
source_url: 'https://example.com#~:text=fragment'
comment: 'My annotation'
clipped_at: '2026-06-20T12:10:00'
route: 'Research Vault'
---
> Highlighted text from the pageAI Chat
---
type: ai-chat
platform: 'ChatGPT'
started_at: '2026-06-20T13:00:00'
tags: [conversation, research]
---
### user
Please summarise recent progress on the paper.
### assistant
Here are the key points...Reading Session
---
type: reading-session
sources:
- title: 'Article A'
url: 'https://example.com/a'
- title: 'Fragment B'
url: 'https://example.com/b#fragment'
compiled_at: '2026-06-20T14:00:00'
---
1. First reading pass...
2. Second insight...- Official website: zendio.sxnian.com/en
- Ko-fi: ko-fi.com/xiannian
- WeChat Reward: available from the Zendio Support modal
- Feedback: GitHub Issues, Reddit, or email
- Inspiration: Readwise, Sidebar Highlights, Dataview, Obsidian Bases
- Third-party components: AI Chat Exporter, Obsidian Web Clipper, Mozilla Readability, Turndown
- License: MIT. See
LICENSE. - Contact: website, GitHub, Reddit, or zendio@sxnian.com
