doc-importer
将本地文档批量导入到 WPS 笔记。支持扫描 Obsidian Vault、思源笔记、微信公众号存档、 下载目录或任意用户指定目录,自动识别 HTML、Markdown、PDF、DOCX、PPTX、XLSX 等格式, 转换为 WPS 笔记可读内容并保留图片和富文本格式。 当用户说「导入文档到 WPS 笔记」「把我的…
Skill by 洛小山 (itshen)
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/wpsnote-doc-importer
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, spreadsheets, presentations, frontend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/doc-importer
What's inside
- Skill name
doc-importer- Description
- 将本地文档批量导入到 WPS 笔记。支持扫描 Obsidian Vault、思源笔记、微信公众号存档、 下载目录或任意用户指定目录,自动识别 HTML、Markdown、PDF、DOCX、PPTX、XLSX 等格式, 转换为 WPS 笔记可读内容并保留图片和富文本格式。 当用户说「导入文档到 WPS 笔记」「把我的 Obsidian 笔记导入」「导入思源笔记」 「把下载的 PDF/Word/PPT 导入笔记」「把公众号文章导入笔记」「同步本地文档到 WPS 笔记」时触发。 不适用于直接编辑 WPS 笔记内容、文档格式转换(不导入到笔记)。
- License
- MIT
- Metadata
- author: 洛小山 (itshen) · version: 1.2.0 · category: productivity
- Instructions
- 459 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- files: referenced but missing: references/conversion-guide.md, assets/xxx.png
- body: contains an absolute path from the author's machine
Files (4)
- SKILL.md
- convert.py · scripts/
- import_to_wps.py · scripts/
- scan_docs.py · scripts/
SKILL.md (first lines)
# 文档导入器(Doc Importer)
将本地文档(Obsidian、思源笔记、微信公众号 HTML、下载目录或任意目录)批量导入到 WPS 笔记。
---
## 快速开始
**当前技能的笔记写入统一走笔记 Agent 工具;如需理解批量扫描和转换逻辑,可先读取本 Skill 自带脚本:**
```text
参考实现:
- read_file("scripts/scan_docs.py") # 目录扫描与来源识别
- read_file("scripts/import_to_wps.py") # 转换与导入主流程
实际写入:
- create_note
- get_note_outline
- batch_edit
- insert_image
- read_note / read_blocks
- search_notes
- sync_note
```
---
## 支持的文档来源
| 来源 | 说明 | 典型目录结构 |
|------|------|------------|
| **Obsidian Vault** | 扫描 .md 文件,保留 wiki 链接、Callout、标签 | `Vault/笔记名.md` + `attachments/` |
| **思源笔记** | 扫描 .sy 文件(JSON格式),提取 Block Tree | `SiYuan/data/笔记本/文档.sy` |
| **微信公众号** | 解析 `原文.html`(含富文本格式、内联样式) | `文章名/原文.html` + `图片/` |
| **任意目录** | 用户指定路径,递归扫描子目录 | 任意 |
---
## 支持的文件格式
| 格式 | 转换方式 | 图片处理 | 富文本保留 |
|------|----------|----------|-----------|
| `.html` | BeautifulSoup 解析内联样式 | 本地图片 base64 | ✅ 颜色/粗体/标题 |
| `.md` / `.markdown` | 直接解析,转 WPS XML | 本地图片 base64 | 基本格式 |
| `.pdf` | pdfplumber 提取文本 + pdfimages 提取图片 | 提取嵌入图片 | 标题推断 |
| `.docx` | pandoc 转 markdown,提取 word/media/ | 解包提取 | 基本格式 |
| `.pptx` | markitdown 提取文本 + 解包媒体 | 解包提取 | 幻灯片结构 |
| `.xlsx` | pandas 读取,转 WPS table | 不含图片 | 表格结构 |
| `.txt` | 直接读取 | 不含图片 | 无 |
| `.sy` | JSON 解析思源 Block Tree | 提取 assets 图片 | 全部 |
---
## WPS API 关键限制(必读)
在实际导入前,必须了解以下 WPS 笔记 API 的重要限制,否则会导致内容丢失或图片插入失败。
### 1. `get_note_outline` 默认只返回 100 个 block
`get_note_outline` 默认按分页视图返回 block,`blocks` 数组可能只覆盖前一部分内容,但 `block_count` 会返回真实总数。
**影响**:大文章(> 100 个 block)如果只靠首屏大纲查占位符,只能找到前一部分 block,后半段图片会丢失。
**解决方案**:先用 `get_note_outline` 拿首批 block,再用 `read_blocks` 续读:
```python
def get_all_blocks(note_id):
"""翻页获取笔记全部 blocks"""
# 第一页用 get_note_outline(有 preview 字段)
r = get_note_outline(note_id=note_id)
data = r.get('data', {})
total = data.get('block_count', 0)
blocks = list(data.get('blocks', []))
last_id = blocks[-1]['id'] if blocks else None
# 超过首批范围时用 read_blocks 续读
while len(blocks) < total and last_id:
r2 = read_blocks(note_id=note_id, block_id=last_id, after=100)
new_blocks = (r2.get('data') or {}).get('blocks', [])
if not new_blocks:
break
blocks.extend(new_blocks)
last_id = new_blocks[-1]['id']
return blocks
```
> `get_note_outline` 返回的 block 常带 `preview` 字段;`read_blocks` 更适合拿完整 XML 内容。
---
### 2. `insert_image` 在旧版 WPS 中只能插到前台笔记
**旧版本(< 0.1.4)**:`insert_image` 的图片 `fileID` 绑定到当前 WPS 客户端 UI 中打开的笔记,即使传了 `note_id` 参数,图片也会错误地关联到前台笔记。
**新版本(>= 0.1.4)**:已修复,`insert_image` 可以直接后台插图到任意笔记,无需切换前台。
**处理策略**:
- 先按后台插图能力执行;如果图片插错位置,再回退为“切到目标笔记后插图”
- 如果宿主或客户端仍表现为旧版行为,明确提示用户升级或手动切到目标笔记
- 插图后务必回读验收,不要假设成功
---
### 3. `list_notes` 返回大数据时要主动收敛范围
`list_notes` 一次返回的数据过大时,不适合拿来做全文去重或全量扫描判断。
**解决方案**:
- 去重优先用 `search_notes` 按标题关键词搜索
- 浏览列表时主动分页或缩小筛选范围
- 不把一次大范围 `list_notes` 当成唯一真相来源
---
### 4. anchor 失效导致内容静默丢失
连续调用 `batch_edit` 插入内容时,WPS 内部可能重新索引,导致前一次操作返回的 `anchor_id` 失效。如果不处理,后续内容会静默跳过,造成文章后半段内容丢失。From wpsnote/wpsnote-skills, MIT.
More from wpsnote/wpsnote-skills
- 0.684score
skill-creator
wpsnote
Create new skills or improve existing skills by clarifying intent, drafting SKILL.md instructions, organizing supporting resources, and doing lightweight…
SkillCFreshness: C★ 180Claude Code +9 - 0.680score
tag-organize-cli
wps
笔记文件级标签整理的核心原则与完整工作流程(CLI 版)。通过系统命令行调用 wpsnote-cli 操作 WPS 笔记,无需 MCP 服务连接。当用户提到"整理笔记标签"、"清理标签"、"标签太乱"、"标签太多"、"帮我打标签"、"重构标签"、"重新分类"、"笔记分类混乱"、"标签体系需要优化"等需求时使用;标签管…
SkillCFreshness: C★ 180Claude Code +9 - 0.680score
tag-organize
wps
笔记文件级标签整理的核心原则与完整工作流程。用户提到"整理笔记标签"、"清理标签"、"标签太乱"、"标签太多"、"帮我打标签"、"重构标签"、"重新分类"、"笔记分类混乱"、"标签体系需要优化"时必须使用;基于 wps-note MCP 的…
SkillCFreshness: C★ 180Claude Code +9 - 0.678score
coding-assistant
wpsnote
多平台编码助手。遵循各平台官方文档做编码规范、单测与编译/lint;协助将核心技术梳理为完整 WPS 笔记技术文档。生成的笔记必须包含 7 个二级标题(核心技术、核心代码、关键技术点、核心类和职责、调用链、架构概览、注意事项);其中架构、核心技术、调用链的图示优先用 WPS 笔记的 generate_image…
SkillCFreshness: C★ 180Claude Code +9 - 0.677score
note-review-coach
wpsnote
基于用户已有笔记创建学习自测闭环;当用户说“出点题考考我”、自测、测验时,读取材料,生成选择题、填空题、简答题等不提前泄题的习题,等待用户作答后按原文证据批改,并输出错因反馈、重学建议和可选复习记录。
SkillCFreshness: C★ 180Claude Code +9 - 0.676score
wps-deep-search
wpsnote
【深度搜索】面向复杂问题的启发式检索助手。 默认执行“笔记证据 + 网络权威信源”的混合检索,不止笔记内关键词搜索。 当用户说“深度搜索”“帮我深挖”“关联查询”“全面梳理”“帮我核实一下”时使用。 本版本为单代理串行执行,禁用 sub_agent。
SkillCFreshness: C★ 180Claude Code +9 - 0.670score
wps-note
wpsnote
通过 MCP 工具读取、编辑和管理 WPS 笔记,基于 block 文档模型,所有内容以 XML 格式交换。当用户说"帮我看看笔记"、"搜索笔记"、"创建一篇笔记"、"编辑笔记内容"、 "整理标签",或提到 WPS 笔记、WPS Note、云笔记时使用。也适用于排查 MCP 工具调用错误…
SkillCFreshness: C★ 180Claude Code +9 - 0.609score
ie-engine
wpsnote
灵感引擎的统一入口,串联记忆检索、想法连接和洞见生成的完整流水线。当用户提到"灵感引擎"、"激发灵感"、"connect the dots"、"寻找灵感"、"帮我把想法串起来"、"从笔记中发现新东西"等需要完整运行灵感生成流水线的场景时使用此技能。此外,当用户正在深入探索某个主题、进行创造性思考、或讨论复杂问题时,如…
SkillDFreshness: D★ 180Claude Code +9 - 0.609score
web-importer
wpsnote
将网页内容高质量导入到 WPS 笔记,保留原文颜色、粗体、标题格式,图片按原文位置插入。 支持微信公众号文章、X/Twitter 推文/Thread 和任意通用网页,统一入口自动识别,使用 web_fetch、web_search、batch_web_search、create_note、batch_edit、ins…
SkillDFreshness: D★ 180Claude Code +9 - 0.526score
image-gen
wpsnote
AI 图像生成助手,支持文生图和图生图,对接 OpenRouter / 阿里云百炼 / 火山方舟 / Google Gemini。 内置 API Key 加密管理:Key 以 AES 加密存入 WPS 笔记,解密密钥由「设备ID + 笔记ID + provider」现场派生,本机无需存储额外文件。…
SkillDFreshness: D★ 180Claude Code +9 - 0.525score
content-digest
zoez
将任意内容提炼为结构化知识笔记,自动保存到 WPS 笔记。只要用户给出任何内容(链接、图片、本地文件、粘贴文字)并有保存笔记的意图,就应使用此 skill。常见触发词:「总结」「提炼」「做笔记」「读书笔记」「学习笔记」「整理成笔记」「帮我看看」「帮我解读」「记一下」「存下来」「整理一下」「帮我归纳」。也适用于用户直接…
SkillDFreshness: D★ 180Claude Code - 0.522score
content-creator
wpsnote
【内容创作起点】用户想要写文章/公众号/文案时的首选skill。 触发词:"帮我写""我想写""准备写""开始写""写个文章""写篇稿子""写公众号""写小红书""仿照这个风格写""分析我的写作风格""提取写作模板"。 核心流程:风格画像→需求确认→大纲设计→深度研究→文章创作→定稿交付。…
SkillDFreshness: D★ 180Claude Code +9
Signals
- Stars
- 180
- Forks
- 9
- Open issues
- 2
- Last commit (this folder)
- Apr 23, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.2.0
- License
- MIT
- Repository
- github.com/wpsnote/wpsnote-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Cite this page
doc-importer skill. Agent Mart. https://agentmart.dev/skills/wpsnote-doc-importer (last updated 2026-10-24)