https://github.com/chiimagnus/syncnos
Capture AI chats & web articles. Sync to Notion / Obsidian. Local-first, open-source.
https://github.com/chiimagnus/syncnos
broswer-extension chrome chrome-extension firefox firefox-addon llm-wiki markdown notion obsidian
Last synced: 2 months ago
JSON representation
Capture AI chats & web articles. Sync to Notion / Obsidian. Local-first, open-source.
- Host: GitHub
- URL: https://github.com/chiimagnus/syncnos
- Owner: chiimagnus
- License: agpl-3.0
- Created: 2025-09-10T12:19:25.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-04-14T17:17:06.000Z (2 months ago)
- Last Synced: 2026-04-14T17:26:50.640Z (2 months ago)
- Topics: broswer-extension, chrome, chrome-extension, firefox, firefox-addon, llm-wiki, markdown, notion, obsidian
- Language: TypeScript
- Homepage: https://chiimagnus.notion.site/syncnos
- Size: 14.8 MB
- Stars: 117
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# SyncNos
A toolkit focused on syncing reading highlights and AI conversations.
It consolidates multi-source content to Notion and provides a WebClipper browser extension.
**English** · [中文](README.zh-CN.md)
[](https://apps.apple.com/app/syncnos/id6755133888)
[](https://github.com/chiimagnus/SyncNos/releases)
[](https://chromewebstore.google.com/detail/syncnos-webclipper/hmgjflllphdffeocddjjcfllifhejpok)
[](https://github.com/chiimagnus/SyncNos/releases)
[](https://addons.mozilla.org/firefox/addon/syncnos-webclipper/)

## Project Overview
SyncNos has two parts:
- **macOS App**: Sync highlights and notes from Apple Books, GoodLinks, WeRead, Dedao, and chat history (with OCR support) to Notion (macOS 14.0+).
- **WebClipper Extension**: Capture AI chats from supported sites to local browser storage, then export, backup/restore, and sync to Notion / Obsidian.
## How It Works

## macOS App
Expand
| Item | Details |
| --- | --- |
| Supported OS | **macOS 14.0+** |
| Download | [Mac App Store](https://apps.apple.com/app/syncnos/id6755133888) |
### Sync From
- Apple Books
- GoodLinks
- WeRead
- Dedao
- Chat history (beta)
- OCR supported
- Local storage encryption
### Sync To
- Notion OAuth
## WebClipper (Browser Extension)
Expand
### Download & Install
| Channel | Download |
| --- | --- |
| Chrome [](https://chromewebstore.google.com/detail/syncnos-webclipper/hmgjflllphdffeocddjjcfllifhejpok) | [Chrome Web Store](https://chromewebstore.google.com/detail/syncnos-webclipper/hmgjflllphdffeocddjjcfllifhejpok) |
| Edge [](https://github.com/chiimagnus/SyncNos/releases) | [GitHub Releases](https://github.com/chiimagnus/SyncNos/releases) |
| Firefox [](https://addons.mozilla.org/firefox/addon/syncnos-webclipper/) | [Firefox AMO](https://addons.mozilla.org/firefox/addon/syncnos-webclipper/) |
### Core Capabilities
- Capture AI chats from supported sites into local browser storage.
- Export selected conversations as Markdown (single merged file or multi-file zip).
- Popup/App renders message Markdown in conversation detail view for readability.
- Sync selected conversations to Obsidian via `Obsidian Local REST API` (`http://127.0.0.1:27123`).
- Database backup:
- Export `*.zip` (`manifest.json` + `sources/conversations.csv` + `sources/...` + `config/storage-local.json`)
- Import `*.zip` (recommended) and legacy `*.json`
- Merge by `(source + conversationKey)` to avoid duplicates
- Back up all non-sensitive `chrome.storage.local` settings
- Sensitive keys are excluded from backups (`notion_oauth_token*`, `notion_oauth_client_secret`)
- Backup import entry is in `Settings -> App Settings` (Firefox uses the same route)
- Manually sync selected conversations to Notion (OAuth).
- Deleting conversations requires explicit confirmation in popup.
- Configurable Inpage button visibility:
- Default: all `http(s)` pages
- Optional: only supported AI sites + Notion pages
- Takes effect after page refresh
- Does not affect `Fetch Current Page` in Settings
- Notion sync writes by kind:
- Chats: `SyncNos-AI Chats`
- Web articles: `SyncNos-Web Articles`
- If cursor matches, append only new messages; otherwise rebuild page blocks when cursor is missing or content is refreshed.
- If `contentMarkdown` exists, render as Notion blocks (headings/lists/quotes/code blocks); otherwise fallback to plain text.
- Notion AI: optionally auto-select preferred model when current mode is **Auto**.
- Google AI Studio collector handles virtualized chat turns for manual save and filters non-message chunks.
### Supported Sites
ChatGPT / Claude / Gemini / DeepSeek / Kimi / Doubao / Yuanbao / Poe / NotionAI / z.ai / Google AI Studio
### Development (WXT)
- Install deps: `npm --prefix Extensions/WebClipper install`
- Dev (Chrome MV3): `npm --prefix Extensions/WebClipper run dev`
- Build (Chrome / Firefox): `npm --prefix Extensions/WebClipper run build` / `npm --prefix Extensions/WebClipper run build:firefox`
- Test + typecheck: `npm --prefix Extensions/WebClipper run test` / `npm --prefix Extensions/WebClipper run compile`
- Runtime code in `src + entrypoints` is TS-only; current JS allowlist only keeps `public/src/vendor/readability.js` (built asset path remains `src/vendor/readability.js`).