# AnyContent 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](https://github.com/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) 1. Install [BRAT](https://github.com/TfTHacker/obsidian42-brat). 2. BRAT → "Add Beta plugin" → paste `https://github.com/vancoder4-cyber/anycontent-obsidian-importer`. 3. Enable the plugin in Settings → Community plugins. ### Run the backend ```bash 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: 1. **Ribbon icon** (the download arrow on the left sidebar) → paste link → Import. 2. **Command palette** → "Import URL to vault" or "Import URL from clipboard". 3. **Inbox folder** — turn on *Inbox auto-consume* in settings. Anything you write into `_anycontent-inbox/.txt` is 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//` 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.cn` images 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: . ## License MIT — see `LICENSE`. The backend repo carries its own license (Apache 2.0, inheriting from upstream `yzfly/douyin-mcp-server`).