pdf-asset-extractor
MCP tools for PDF ingestion → extract figures, tables, sections → build knowledge graph. Transforms PDF into queryable assets (images, tables, text) with cross-document RAG. Triggers: PDF, ingest, extract, 圖片, 表格, figure, table, manifest, knowledge graph, 知識圖譜, RAG, 文獻分析.
Best use case
pdf-asset-extractor is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
MCP tools for PDF ingestion → extract figures, tables, sections → build knowledge graph. Transforms PDF into queryable assets (images, tables, text) with cross-document RAG. Triggers: PDF, ingest, extract, 圖片, 表格, figure, table, manifest, knowledge graph, 知識圖譜, RAG, 文獻分析.
Teams using pdf-asset-extractor should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/pdf-asset-extractor/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How pdf-asset-extractor Compares
| Feature / Agent | pdf-asset-extractor | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
MCP tools for PDF ingestion → extract figures, tables, sections → build knowledge graph. Transforms PDF into queryable assets (images, tables, text) with cross-document RAG. Triggers: PDF, ingest, extract, 圖片, 表格, figure, table, manifest, knowledge graph, 知識圖譜, RAG, 文獻分析.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# PDF Asset Extractor (MCP Tools)
## 描述
將 PDF 文件分解為可查詢的資產(圖片、表格、章節),並建立跨文獻知識圖譜。
**核心能力**:
- 📄 **PDF 匯入** → 雙引擎(PyMuPDF 快速 / Marker 高精度)自動提取圖片、表格、文字
- 🖼️ **圖片提取** → 以 base64 返回,支援 Vision AI 分析
- 📊 **表格提取** → 轉換為 Markdown 格式
- 🧭 **章節導航** → 動態層級 Section Tree(支援任意深度)
- 🔍 **知識圖譜** → 跨文獻關係查詢 (LightRAG)
- 📈 **圖譜視覺化** → 導出 Mermaid 圖表
## 觸發條件
- 「ingest PDF」、「匯入 PDF」、「解析文件」、「分析論文」
- 「看 manifest」、「文件結構」、「有什麼圖表」
- 「取得圖片」、「fetch figure」、「拿表格」、「extract」
- 「知識圖譜」、「cross-document」、「比較文獻」、「RAG」
- 「視覺化圖譜」、「export graph」、「mermaid」
- 「章節」、「section」、「導航」、「樹狀結構」
---
## 🔧 雙引擎策略
| 引擎 | 強項 | 弱項 | 觸發方式 |
|------|------|------|----------|
| **PyMuPDF** (預設) | 快速、輕量 (~50MB) | 版面分析精度較低 | `ingest_documents()` |
| **Marker** (高精度) | 精確 bbox、section hierarchy | 重模型 (~1GB)、較慢 | `ingest_documents(use_marker=True)` 或 `parse_pdf_structure()` |
### Marker 產出額外資料
- `blocks.json` — 結構化區塊(含 bbox、polygon、section_hierarchy)
- 支援 Section Navigation 動態層級導航
---
## ⚠️ 重要警告
### 🖼️ 圖片 Context 限制
> **Base64 圖片非常大,一次只處理一張!**
>
> - 一張圖片 ≈ 200KB base64 ≈ **~270K tokens**
> - 對話 context 有限,多張圖片會快速耗盡
> - **建議流程**:先 `inspect_document_manifest` → 選定目標圖 → 一次 fetch 一張
### 👁️ 視覺能力提醒
> 如果 AI 有視覺能力(Vision),可直接分析返回的圖片
> 如果是純文字 AI,應誠實告知無法分析圖片內容
### 📸 圖片 ID 命名規則
> 系統以 `fig_{page}_{index}` 命名,非解析圖說文字
> 需手動對照 manifest 頁碼與實際 Figure 編號
---
## 🔧 可用 MCP Tools
### 文件處理
| Tool | 用途 | 參數 |
|------|------|------|
| `ingest_documents` | 匯入 PDF(ETL 流程) | `file_paths: list[str]`, `async_mode: bool`, `use_marker: bool` |
| `parse_pdf_structure` | Marker 結構化解析(單檔) | `file_path: str` |
| `get_job_status` | 查詢 ETL 進度 | `job_id: str` |
| `list_jobs` | 列出所有工作 | `active_only: bool` |
| `cancel_job` | 取消 ETL 工作 | `job_id: str` |
### 資產查詢
| Tool | 用途 | 參數 |
|------|------|------|
| `list_documents` | 列出所有已處理文件 | 無 |
| `inspect_document_manifest` | 查看文件結構(圖/表/章節清單) | `doc_id: str` |
| `fetch_document_asset` | 取得特定資產 | `doc_id`, `asset_type`, `asset_id` |
### Section Navigation 🧭 (需 Marker blocks.json)
| Tool | 用途 | 參數 |
|------|------|------|
| `list_section_tree` | 顯示完整 section hierarchy 樹狀結構 | `doc_id: str` |
| `get_section_detail` | 取得特定 section 的詳細資訊 | `doc_id: str`, `section_path: str` |
| `get_section_blocks` | 提取特定 section 的所有 blocks | `doc_id: str`, `section_path: str` |
| `search_sections` | 搜尋 section 名稱 | `doc_id: str`, `query: str` |
### 區塊搜尋 (Marker blocks)
| Tool | 用途 | 參數 |
|------|------|------|
| `search_source_location` | 在 blocks.json 中搜尋特定內容 | `doc_id: str`, `query: str`, `block_types: list` |
### 知識圖譜
| Tool | 用途 | 參數 |
|------|------|------|
| `consult_knowledge_graph` | 跨文獻 RAG 查詢 | `query: str`, `mode: str` |
| `export_knowledge_graph` | 導出圖譜(JSON/Mermaid) | `format: str`, `limit: int` |
---
## 📂 MCP Resources(動態更新)
Resources 會自動更新,可直接瀏覽文件大綱:
| Resource URI | 說明 |
|--------------|------|
| `documents://list` | 所有已處理文件列表 |
| `document://{doc_id}/outline` | **📋 文件完整大綱**(推薦起點) |
| `document://{doc_id}/manifest` | 完整 manifest JSON |
| `document://{doc_id}/figures` | 圖片清單(ID、頁碼、尺寸) |
| `document://{doc_id}/tables` | 表格清單 |
| `document://{doc_id}/sections` | 章節層級結構 |
| `knowledge-graph://summary` | 知識圖譜統計概覽 |
### Resource 使用範例
```
# 瀏覽已處理的文件
→ documents://list
# 查看文件大綱(推薦起點)
→ document://abc123def/outline
# 列出所有圖片
→ document://abc123def/figures
# 知識圖譜概覽
→ knowledge-graph://summary
```
---
## 📋 標準操作流程
### 1️⃣ PDF 匯入(ETL)
```
使用者:「幫我匯入這份 PDF」/ 「分析這份論文」
步驟:
1. 取得 PDF 絕對路徑
2. 呼叫 ingest_documents(預設 async_mode=True)
3. 使用 get_job_status 追蹤進度
4. 完成後提供 doc_id
```
**範例呼叫**:
```python
# 異步匯入(推薦,大檔案用)
ingest_documents(file_paths=["/papers/study.pdf"])
# 返回 job_id,用 get_job_status 追蹤
# 同步匯入(小檔案)
ingest_documents(file_paths=["/papers/small.pdf"], async_mode=False)
```
### 2️⃣ 查看文件結構
```
使用者:「這份文件有什麼圖表?」
步驟:
1. 呼叫 list_documents 找到 doc_id
2. 呼叫 inspect_document_manifest
3. 列出所有 figures/tables/sections
```
**範例呼叫**:
```python
list_documents()
inspect_document_manifest(doc_id="abc123def")
```
**Manifest 內容**:
- 📊 Tables: `tab_1`, `tab_2`...(ID、頁碼)
- 🖼️ Figures: `fig_2_1`, `fig_3_1`...(ID、尺寸、頁碼)
- 📑 Sections: `sec_intro`, `sec_methods`...(標題、行號)
### 3️⃣ 取得特定資產
#### 取得圖片(⚠️ 一次一張)
```python
fetch_document_asset(
doc_id="abc123def",
asset_type="figure",
asset_id="fig_3_1"
)
# 返回 ImageContent (base64) + metadata
```
#### 取得表格
```python
fetch_document_asset(
doc_id="abc123def",
asset_type="table",
asset_id="tab_1"
)
# 返回 Markdown 格式表格
```
#### 取得章節/全文
```python
# 特定章節
fetch_document_asset(doc_id="abc123def", asset_type="section", asset_id="sec_methods")
# 全文 Markdown
fetch_document_asset(doc_id="abc123def", asset_type="full_text", asset_id="full")
```
### 4️⃣ 知識圖譜查詢
```
使用者:「比較這兩篇文獻的發現」/ 「AlphaFold 是什麼?」
步驟:
1. 確認文件已 ingest 且已建立索引
2. 選擇查詢模式
3. 呼叫 consult_knowledge_graph
```
**查詢模式**:
| Mode | 用途 | 適合場景 |
|------|------|----------|
| `local` | 細節查詢 | 特定藥物劑量、具體數據 |
| `global` | 全局模式 | 跨文獻趨勢、主題歸納 |
| `hybrid` | 混合模式(推薦) | 一般問答 |
**範例呼叫**:
```python
consult_knowledge_graph(
query="What is AlphaFold and how does it work?",
mode="hybrid"
)
```
### 5️⃣ 知識圖譜視覺化 ✨ NEW
```
使用者:「顯示知識圖譜」/ 「圖譜長什麼樣?」
步驟:
1. 選擇輸出格式
2. 呼叫 export_knowledge_graph
3. Mermaid 格式可直接渲染
```
**輸出格式**:
| Format | 用途 | 建議 limit |
|--------|------|-----------|
| `summary` | 統計 + 樣本節點 | 50(預設)|
| `mermaid` | Mermaid 流程圖 | 20-30 |
| `json` | 完整節點/邊 JSON | 100+ |
**範例呼叫**:
```python
# 快速概覽
export_knowledge_graph(format="summary")
# Mermaid 視覺化(可渲染)
export_knowledge_graph(format="mermaid", limit=25)
# 完整 JSON 數據
export_knowledge_graph(format="json", limit=100)
```
**Mermaid 輸出範例**:
```mermaid
graph TD
N0["AlphaFold"]
N1["DeepMind"]
N2["Protein Structure"]
N0 -->|developed by| N1
N0 -->|predicts| N2
```
---
## 🎯 情境範例
### 情境 A:分析新 PDF 論文
```
使用者:「幫我分析這份 PDF」
執行流程:
1. ingest_documents → 取得 job_id
2. get_job_status → 等待完成
3. inspect_document_manifest → 了解結構
4. fetch section (Introduction) → 快速瀏覽
5. 根據需要 fetch 特定圖表
6. consult_knowledge_graph → 整合分析
```
### 情境 B:提取圖表
```
使用者:「給我 Figure 3」
執行流程:
1. list_documents → 找到 doc_id
2. inspect_document_manifest → 找 fig_X_X 對應
3. fetch_document_asset(asset_type="figure", asset_id="fig_3_1")
4. 返回圖片 + metadata
```
### 情境 C:跨文獻比較
```
使用者:「比較 A 和 B 論文的結論」
執行流程:
1. 確認兩份文件都已 ingest
2. consult_knowledge_graph(mode="global")
3. export_knowledge_graph(format="mermaid") → 視覺化關係
```
### 情境 D:探索知識圖譜
```
使用者:「圖譜裡有什麼?」
執行流程:
1. export_knowledge_graph(format="summary") → 統計
2. export_knowledge_graph(format="mermaid", limit=20) → 視覺化
```
---
## ⚡ Context 預算
| 資產類型 | 大約 Token 數 | 建議 |
|----------|--------------|------|
| Section (1頁) | ~500-1000 | ✅ 優先使用 |
| Table | ~200-500 | ✅ 低成本 |
| Figure (base64) | ~200K-500K | ⚠️ 一次一張 |
| Full text (10頁) | ~10K-20K | ⚠️ 視需要 |
| Knowledge Graph (summary) | ~500 | ✅ 快速概覽 |
| Knowledge Graph (mermaid) | ~1K-3K | ✅ 視覺化 |
---
## 📊 輸出格式
操作後應回報:
```markdown
## PDF 處理結果
### 📄 文件資訊
- **doc_id**: `abc123def`
- **標題**: Nobel Prize Chemistry 2024
- **頁數**: 15 頁
### 📊 可用資產
| 類型 | 數量 | 範例 ID |
|------|------|---------|
| Figures | 8 | fig_2_1, fig_5_1 |
| Tables | 3 | tab_1, tab_2 |
| Sections | 5 | sec_intro, sec_methods |
### 🔗 知識圖譜
- **節點**: 383
- **關係**: 99
- 可使用 `export_knowledge_graph` 視覺化
```Related Skills
asset-aware-mcp-harness
Cline harness for this repo (rules + workflows + checks). Triggers: cline harness, full check, release checklist, workflow, 文檔工作流, DFM, citation-ready.
academic-figure-drawing-harness
Codex drawing harness integration. Triggers: 繪圖, draw, figure, chart, plot, mermaid, SVG, Gemini, graph, 生成圖表.
zotero-keeper-harness
Cline harness for Zotero Keeper and the bundled VS Code extension. Triggers: zotero keeper, zotero mcp, full check, release checklist, workflow, vsix, Cline.
pubmed-search-mcp-harness
Cline harness for PubMed Search MCP. Triggers: pubmed search, literature search, unified_search, pipeline, fulltext, release checklist, Cline.
llm-wiki-builder
Build or refresh Foam-compatible LLM wikis from Zotero, PubMed, documents, and local Markdown notes using a multi-tool workflow.
tool-sync
Auto-sync MCP tool documentation when tools are added, removed, or renamed. Triggers: TS, tool-sync, 工具同步, 同步工具, sync tools, new tool, 新增工具, 工具變更, update tools.
test-generator
Generate comprehensive test suites including static analysis, unit tests, integration tests, E2E tests, and coverage reports. Triggers: TG, test, 測試, 寫測試, coverage, 覆蓋率, pytest, unittest, 驗證.
roadmap-updater
Auto-update ROADMAP.md status based on completed features. Triggers: RM, roadmap, 路線, 規劃, 完成功能, milestone, 里程碑.
readme-updater
Intelligently update README.md to sync with code changes. Triggers: readme, 說明, 更新說明, update readme, 文檔同步.
readme-i18n
Maintain multilingual README versions (English primary, Chinese translation). Triggers: i18n, 翻譯, translate, 多語言, sync readme, 中英文, bilingual.
pubmed-systematic-search
Comprehensive search using generate_search_queries and unified_search. Triggers: 系統性搜尋, 完整搜尋, 文獻回顧, systematic search, comprehensive, MeSH expansion, 同義詞
pubmed-quick-search
Quick literature search using unified_search. Triggers: 搜尋, 找論文, search papers, find articles, PubMed, 文獻搜尋, 快速搜尋