README file from
GithubAnyContent Vault Importer
Paste a Douyin / TikTok / WeChat Official Account / YouTube link, and this plugin sends it to a small local backend that transcribes, scrapes, or OCRs the content into a clean Markdown note inside your vault.
One plugin, four platforms, AI-readable text output. No third-party services are called by the plugin itself — only your local backend.
Features
| Source | What you get |
|---|---|
| Douyin / TikTok video | ASR transcript + no-watermark MP4 URL (optional local download) |
| Douyin image post (图文) | Per-image OCR'd Markdown + image URLs |
| WeChat Official Account article | Full article body in Markdown (text + inline image references) |
| YouTube video | Timestamped transcript + title / channel metadata |
Every imported note ships with a YAML frontmatter block (title, source, author, platform, post_type, created, tags, …) so it slots straight into Dataview, Bases, or your own queries.
Architecture
Obsidian ── (HTTP, localhost only) ──> Python backend ── (ASR / OCR / scrape) ──> Markdown ──> vault
This plugin is the Obsidian side only. The backend is a separate FastAPI service that you run locally — see vancoder4-cyber/anycontent-obsidian-backend.
The split keeps the plugin tiny (no Python / no ffmpeg bundled) and lets the heavy lifting (audio extraction, model inference, etc.) live in a dependency stack that's natural for that work.
Install
From the community plugin store (recommended once approved)
Settings → Community plugins → Browse → search AnyContent Vault Importer → Install → Enable.
Manual / BRAT (until approved)
- Install BRAT.
- BRAT → "Add Beta plugin" → paste
https://github.com/vancoder4-cyber/anycontent-obsidian-importer. - Enable the plugin in Settings → Community plugins.
Run the backend
git clone https://github.com/vancoder4-cyber/anycontent-obsidian-backend
cd anycontent-obsidian-backend
uv sync
export API_KEY=sk-your-siliconflow-key # free signup at https://cloud.siliconflow.cn/
uv run python web/app.py # listens on :8080
The API key is required for video ASR and image OCR (SiliconFlow's SenseVoice / Qwen-VL). WeChat articles and YouTube transcripts work without it.
Usage
There are three ways to trigger an import:
- Ribbon icon (the download arrow on the left sidebar) → paste link → Import.
- Command palette → "Import URL to vault" or "Import URL from clipboard".
- Inbox folder — turn on Inbox auto-consume in settings. Anything you write into
_anycontent-inbox/<name>.txtis treated as share text and imported automatically. Useful for pairing with shell scripts, automations, or AI assistants that write files into your vault.
Imported notes land in your configured Raw folder (raw/ by default) with a filename pattern you control via {date}-{author}-{platform}-{title}.
Settings
| Setting | What it does |
|---|---|
| Backend URL | Where the local backend is listening. Defaults to http://127.0.0.1:8080. |
| API key | Override the backend's API_KEY per-vault (or leave blank to use the backend's env var). Stored locally only. |
| Raw folder | Vault-relative path where imported notes are written. |
| Filename pattern | Template with {date} {author} {platform} {title} {videoId} tokens. |
| Save no-watermark video locally | For Douyin / TikTok, also download the MP4 into raw/<media>/ and embed it. |
| Media subfolder name | The subfolder used by the previous option. |
| Open note after import | Auto-open the new note when import finishes. |
| Inbox folder | Vault-relative folder watched for new files. |
| Inbox auto-consume | Toggle whether files dropped into the inbox are imported automatically. |
Privacy / Network
- The plugin only makes HTTP calls to your local backend URL. It never connects directly to the internet from Obsidian.
- The backend, in turn, fetches the source page (e.g.
mp.weixin.qq.com), and for video ASR / image OCR it forwards the audio / image to whichever provider you've configured your API key with (SiliconFlow by default). - No analytics, telemetry, or remote logging in this plugin.
- API keys you paste into the settings tab are stored in Obsidian's plugin data file inside the vault. Treat the vault accordingly.
Compatibility
Desktop-only (isDesktopOnly: true). The backend requires Python 3.10+ and runs anywhere uv / pip runs.
Minimum Obsidian: 1.4.0.
Known limitations
- YouTube transcripts depend on YouTube exposing captions. Videos with captions disabled / blocked will still create a note (title + channel + author), with a clear "no transcript" message in the body.
- WeChat image hotlinking —
mmbiz.qpic.cnimages often refuse to load outside of WeChat due to Referer restrictions. The plugin embeds the URL anyway so the text content remains complete; viewing the images may require opening the original article. - WeChat articles behind login cannot be extracted (the page returns a login wall).
- Douyin OCR can take ~5s per image on the default Qwen3-VL model. A 10-slide post takes ~1 minute.
Contributing
Issues and PRs welcome. Source: https://github.com/vancoder4-cyber/anycontent-obsidian-importer.
License
MIT — see LICENSE.
The backend repo carries its own license (Apache 2.0, inheriting from upstream yzfly/douyin-mcp-server).