{"id":34559514,"url":"https://github.com/chiimagnus/syncnos","last_synced_at":"2026-04-18T14:01:49.930Z","repository":{"id":314117721,"uuid":"1054137077","full_name":"chiimagnus/SyncNos","owner":"chiimagnus","description":"Capture AI chats \u0026 web articles. Sync to Notion / Obsidian. Local-first, open-source.","archived":false,"fork":false,"pushed_at":"2026-04-14T17:17:06.000Z","size":15528,"stargazers_count":117,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-14T17:26:50.640Z","etag":null,"topics":["broswer-extension","chrome","chrome-extension","firefox","firefox-addon","llm-wiki","markdown","notion","obsidian"],"latest_commit_sha":null,"homepage":"https://chiimagnus.notion.site/syncnos","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chiimagnus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-09-10T12:19:25.000Z","updated_at":"2026-04-14T16:46:57.000Z","dependencies_parsed_at":"2026-03-04T16:04:16.669Z","dependency_job_id":null,"html_url":"https://github.com/chiimagnus/SyncNos","commit_stats":null,"previous_names":["chiimagnus/syncnotes","chiimagnus/syncnos"],"tags_count":262,"template":false,"template_full_name":null,"purl":"pkg:github/chiimagnus/SyncNos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiimagnus%2FSyncNos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiimagnus%2FSyncNos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiimagnus%2FSyncNos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiimagnus%2FSyncNos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chiimagnus","download_url":"https://codeload.github.com/chiimagnus/SyncNos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiimagnus%2FSyncNos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31971489,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["broswer-extension","chrome","chrome-extension","firefox","firefox-addon","llm-wiki","markdown","notion","obsidian"],"created_at":"2025-12-24T08:49:29.411Z","updated_at":"2026-04-18T14:01:44.919Z","avatar_url":"https://github.com/chiimagnus.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n# SyncNos\n\nA toolkit focused on syncing reading highlights and AI conversations.  \nIt consolidates multi-source content to Notion and provides a WebClipper browser extension.\n\n**English** · [中文](README.zh-CN.md)\n\n[![macOS App Store Version](https://img.shields.io/itunes/v/6755133888?label=macOS%20App%20Store\u0026logo=apple)](https://apps.apple.com/app/syncnos/id6755133888)\n[![Release Downloads](https://img.shields.io/github/downloads/chiimagnus/SyncNos/total?label=Release%20Downloads\u0026logo=github)](https://github.com/chiimagnus/SyncNos/releases)\n\n[![Chrome Version](https://img.shields.io/chrome-web-store/v/hmgjflllphdffeocddjjcfllifhejpok?label=Chrome\u0026logo=googlechrome)](https://chromewebstore.google.com/detail/syncnos-webclipper/hmgjflllphdffeocddjjcfllifhejpok)\n[![Edge Version](https://img.shields.io/github/v/release/chiimagnus/SyncNos?label=Edge\u0026logo=microsoftedge)](https://github.com/chiimagnus/SyncNos/releases)\n[![Firefox Version](https://img.shields.io/amo/v/syncnos-webclipper?label=Firefox\u0026logo=firefoxbrowser)](https://addons.mozilla.org/firefox/addon/syncnos-webclipper/)\n\n\u003c/div\u003e\n\n\u003cimg align=\"right\" src=\"Extensions/WebClipper/public/icons/buymeacoffee1.jpg\" alt=\"Chii Magnus donation QR\" width=\"120\" /\u003e\n\n## Project Overview\n\nSyncNos has two parts:\n\n- **macOS App**: Sync highlights and notes from Apple Books, GoodLinks, WeRead, Dedao, and chat history (with OCR support) to Notion (macOS 14.0+).\n- **WebClipper Extension**: Capture AI chats from supported sites to local browser storage, then export, backup/restore, and sync to Notion / Obsidian.\n\n## How It Works\n\n![](Resource/flows.svg)\n\n## macOS App\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ckbd\u003eExpand\u003c/kbd\u003e\u003c/summary\u003e\n\n| Item | Details |\n| --- | --- |\n| Supported OS | **macOS 14.0+** |\n| Download | [Mac App Store](https://apps.apple.com/app/syncnos/id6755133888) |\n\n### Sync From\n\n- Apple Books\n- GoodLinks\n- WeRead\n- Dedao\n- Chat history (beta)\n  - OCR supported\n  - Local storage encryption\n\n### Sync To\n\n- Notion OAuth\n\n\u003c/details\u003e\n\n## WebClipper (Browser Extension)\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ckbd\u003eExpand\u003c/kbd\u003e\u003c/summary\u003e\n\n### Download \u0026 Install\n\n| Channel | Download |\n| --- | --- |\n| Chrome [![Chrome Version](https://img.shields.io/chrome-web-store/v/hmgjflllphdffeocddjjcfllifhejpok?label=Chrome\u0026logo=googlechrome)](https://chromewebstore.google.com/detail/syncnos-webclipper/hmgjflllphdffeocddjjcfllifhejpok) | [Chrome Web Store](https://chromewebstore.google.com/detail/syncnos-webclipper/hmgjflllphdffeocddjjcfllifhejpok) |\n| Edge [![Edge Version](https://img.shields.io/github/v/release/chiimagnus/SyncNos?label=Edge\u0026logo=microsoftedge)](https://github.com/chiimagnus/SyncNos/releases) | [GitHub Releases](https://github.com/chiimagnus/SyncNos/releases) |\n| Firefox [![Firefox Version](https://img.shields.io/amo/v/syncnos-webclipper?label=Firefox\u0026logo=firefoxbrowser)](https://addons.mozilla.org/firefox/addon/syncnos-webclipper/) | [Firefox AMO](https://addons.mozilla.org/firefox/addon/syncnos-webclipper/) |\n\n### Core Capabilities\n\n- Capture AI chats from supported sites into local browser storage.\n- Export selected conversations as Markdown (single merged file or multi-file zip).\n- Popup/App renders message Markdown in conversation detail view for readability.\n- Sync selected conversations to Obsidian via `Obsidian Local REST API` (`http://127.0.0.1:27123`).\n- Database backup:\n  - Export `*.zip` (`manifest.json` + `sources/conversations.csv` + `sources/...` + `config/storage-local.json`)\n  - Import `*.zip` (recommended) and legacy `*.json`\n  - Merge by `(source + conversationKey)` to avoid duplicates\n  - Back up all non-sensitive `chrome.storage.local` settings\n  - Sensitive keys are excluded from backups (`notion_oauth_token*`, `notion_oauth_client_secret`)\n  - Backup import entry is in `Settings -\u003e App Settings` (Firefox uses the same route)\n- Manually sync selected conversations to Notion (OAuth).\n- Deleting conversations requires explicit confirmation in popup.\n- Configurable Inpage button visibility:\n  - Default: all `http(s)` pages\n  - Optional: only supported AI sites + Notion pages\n  - Takes effect after page refresh\n  - Does not affect `Fetch Current Page` in Settings\n- Notion sync writes by kind:\n  - Chats: `SyncNos-AI Chats`\n  - Web articles: `SyncNos-Web Articles`\n- If cursor matches, append only new messages; otherwise rebuild page blocks when cursor is missing or content is refreshed.\n- If `contentMarkdown` exists, render as Notion blocks (headings/lists/quotes/code blocks); otherwise fallback to plain text.\n- Notion AI: optionally auto-select preferred model when current mode is **Auto**.\n- Google AI Studio collector handles virtualized chat turns for manual save and filters non-message chunks.\n\n### Supported Sites\n\nChatGPT / Claude / Gemini / DeepSeek / Kimi / Doubao / Yuanbao / Poe / NotionAI / z.ai / Google AI Studio\n\n### Development (WXT)\n\n- Install deps: `npm --prefix Extensions/WebClipper install`\n- Dev (Chrome MV3): `npm --prefix Extensions/WebClipper run dev`\n- Build (Chrome / Firefox): `npm --prefix Extensions/WebClipper run build` / `npm --prefix Extensions/WebClipper run build:firefox`\n- Test + typecheck: `npm --prefix Extensions/WebClipper run test` / `npm --prefix Extensions/WebClipper run compile`\n- 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`).\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchiimagnus%2Fsyncnos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchiimagnus%2Fsyncnos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchiimagnus%2Fsyncnos/lists"}