Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Ima Copilot Sync

hifengzyhifengzy45 downloads

Import Tencent IMA knowledge base and notes, automatically convert to Markdown.

Add to Obsidian
Ima Copilot Sync screenshot
Ima Copilot Sync screenshot
Ima Copilot Sync screenshot
  • Overview
  • Scorecard
  • Updates8

One-way sync your Tencent IMA knowledge base and notes into Obsidian: web clippings auto-converted to Markdown, images downloaded locally, file attachments (PDF/Word/PPT) saved as-is, all with frontmatter metadata for offline search.

中文文档

Features

  • Multi Knowledge Base Sync: Add multiple knowledge bases, each synced into its own folder with mirrored directory structure.
  • Notes Sync: Sync standalone notes into a Notes/ subfolder, toggleable on/off.
  • Automatic Content Conversion:
    • Notes and articles converted to Markdown (auto-adapts to HTML, Markdown, or plain text input).
    • Web articles downloaded and converted to Markdown with source link preserved; graceful fallback on failure.
    • PDF / Word / PPT / Excel / images downloaded as-is, with auto-generated .md stub for searchability.
  • Image Localization: Inline images downloaded to attachment directory (per-kb or Obsidian global setting), links rewritten to ![[local-file]] wikilinks.
  • Smart Incremental Sync: Uses doc_id as primary key. Standalone notes compared by modify_time; wiki items use "skip if exists" strategy (API limitation). Clear cache to trigger full re-sync.
  • Frontmatter Metadata: Writes title / created / source / tags to each document. User-added properties preserved on update.
  • Scheduled Auto Sync: Configurable interval (minutes/hours/days), min interval guard at 5 minutes. Mutex prevents concurrent syncs.
  • Cache Management: "Clear Cache" button (with confirmation) resets sync index only — documents and settings are untouched.
  • Quota Protection: Detects API quota exceeded and immediately halts sync with a notice.
  • Privacy First: API Key masked in settings. Credentials stored locally only. All requests go to ima.qq.com exclusively.

Installation

From Release

  1. Download main.js, manifest.json, styles.css from the latest Release.
  2. Create .obsidian/plugins/ima-sync/ in your vault.
  3. Copy the three files into that directory.
  4. Obsidian → Settings → Community Plugins → turn off Safe Mode → enable "Ima Copilot Sync".

From Source

git clone https://github.com/hifengzy/ima-sync.git
cd ima-sync
npm install
npm run build    # produces main.js

Copy main.js, manifest.json, styles.css into .obsidian/plugins/ima-sync/ and enable.

Configuration

Get IMA API Credentials

  1. Visit IMA Open Platform to obtain your Client ID and API Key.

Plugin Settings

  1. Obsidian → Settings → Ima Copilot Sync.
  2. IMA Auth: Enter Client ID and API Key, click "Verify" to test.
  3. Knowledge Bases: Click "Add KB", select from the list (multiple supported).
  4. Notes Sync: Toggle standalone notebook sync.
  5. Sync Root Path: Set the target root directory (relative path, e.g. ima or A/B).
  6. Attachments: per-kb (inside each KB folder) or obsidian-global (inherit Obsidian's global setting).
  7. Auto Sync: Optionally enable scheduled sync with configurable interval.
  8. Click "Sync Now" or use the ribbon button.

Directory Structure

<vault>/
└── ima/                          # sync root (user-configured)
    ├── KB-A/                      # each knowledge base as a folder
    │   ├── article-1.md
    │   ├── subfolder/             # mirrors IMA folder hierarchy
    │   │   └── article-2.md
    │   ├── report.pdf
    │   ├── report.md              # stub for file attachments
    │   └── attachments/           # per-kb attachment mode
    │       └── doc123-1.png
    ├── KB-B/
    │   └── ...
    └── Notes/                     # when notes sync is enabled
        ├── note-1.md
        └── ...

Sync Strategy

Content Type Handling
KB Notes Fetch body → Markdown conversion → image localization
Web Articles / Links Download HTML → extract body → Markdown conversion → image localization; graceful degradation on failure
Files (PDF/Word/PPT/Excel/images) Download original + generate .md stub with metadata and file link
Standalone Notes list_note_by_folder_id → get_doc_content → Markdown conversion
Folders Recursively traverse sub-levels, mirror locally

Incremental sync: standalone notes compared by modify_time; wiki items use "skip if exists" due to API not returning update_time. Deletion is conservative — files removed on IMA are kept locally. To rebuild from scratch, clear the cache and sync again.

Rate Limiting & Retry

  • 2 QPS serial throttling (RateLimiter).
  • 30-second request timeout (REQUEST_TIMEOUT_MS).
  • Retryable errors (5xx, network errors) with exponential backoff: 1s → 2s → 4s, cap 8s, max 3 retries.
  • Business errors (401, quota exceeded) are fatal and do not retry.

Development

npm run dev              # watch mode with sourcemaps
npm run build            # type-check + production build
npm run typecheck        # type-check only

# verification tests
npm run verify:frontmatter
npm run verify:quota
npm run verify:naming
npm run verify:unit
npm run verify:constants
npm run verify:normalize
npm run verify:images
npm run verify:clear

# E2E smoke test (requires real API credentials)
npm run test:build
IMA_CLIENT_ID=xxx IMA_API_KEY=xxx npm test

Project Structure

src/
├── api/              # IMA OpenAPI client
│   ├── imaClient.ts      # auth, throttling, retry, fetchUrl
│   ├── endpoints.ts      # pagination and recursive traversal
│   ├── errors.ts         # tiered errors (fatal / retryable / quota)
│   └── types.ts          # API data types
├── sync/             # sync engine
│   ├── SyncManager.ts    # core orchestration
│   ├── SyncIndex.ts      # local sync index (doc_id → metadata)
│   └── SyncState.ts      # mutex lock
├── transform/        # content conversion
│   ├── htmlToMarkdown.ts
│   ├── frontmatter.ts    # properties construction and writing
│   ├── imageDownloader.ts
│   ├── fileDownloader.ts
│   ├── webArticle.ts     # web page body extraction
│   └── imageNaming.ts
├── ui/               # UI components
│   ├── KbPickerModal.ts  # knowledge base picker (fuzzy search)
│   ├── ConfirmModal.ts   # confirmation dialog
│   └── ProgressNotice.ts # progress and summary notices
├── settings/         # settings
│   ├── types.ts          # config types and defaults
│   └── SettingTab.ts     # settings UI
├── utils/            # utilities
│   ├── path.ts           # path, filename sanitization, attachment dir
│   ├── rateLimiter.ts    # 2 QPS throttling
│   └── logger.ts         # console wrapper with [imasync] prefix
├── main.ts           # plugin entry: lifecycle, commands, ribbon, scheduler
└── constants.ts      # URLs, enums, defaults

Privacy

  • Credentials stored only in local data.json (excluded from git).
  • API Key masked in settings UI.
  • All API requests sent exclusively to https://ima.qq.com.
  • One-way sync (IMA → Obsidian). Never writes back or deletes from IMA.
  • Error messages never expose credentials.

License

MIT © hifengzy

HealthExcellent
ReviewPassed
About
Sync Tencent IMA knowledge bases and standalone notes into Obsidian as Markdown, mirror folder structure, and download original files (PDF/Word/PPT/Excel/images) with same-name .md placeholders. Convert web bookmarks to Markdown with localized images, write metadata for offline search, and run incremental or scheduled syncs with quota and cache safeguards.
ImportSyncing
Details
Current version
0.2.2
Last updated
Last week
Created
2 weeks ago
Updates
8 releases
Downloads
45
Compatible with
Obsidian 1.13.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
hifengzyhifengzy
GitHubhifengzy
  1. Community
  2. Plugins
  3. Import
  4. Ima Copilot Sync

Related plugins

Importer

Convert your data to Markdown files you can use in Obsidian. Works with Apple Notes, OneNote, Evernote, Notion, Google Keep, and many other formats.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.

Zotero Integration

Insert and import citations, bibliographies, notes, and PDF annotations from Zotero.

Readwise Official

Sync highlights from Readwise to your vault.

Full Calendar Remastered

Complete Calendar HUB experience. Work with all your calendars in one place. Analyze your time and take action!

Self-hosted LiveSync

Sync vaults securely to self-hosted servers or WEBRTC.

Local Images Plus

A reincarnation of Local Images to download images in Markdown notes to local storage.

RSS Dashboard

A dashboard for organizing and consuming RSS feeds, YouTube channels, and podcasts with smart tagging, media playback, and seamless content flow.

Citations

Automatically search and insert citations from a Zotero library.

Kindle Highlights

Sync your Kindle book highlights using your Amazon login or uploading your My Clippings file.