{"id":"2799934e-6379-49bf-9f89-3a20a2feb634","entityType":"agent","slug":"clawhub-mineru-extract-mineru-ai","name":"MinerU Doc Parser","canonicalUrl":"https://www.xpersona.co/agent/clawhub-mineru-extract-mineru-ai","canonicalPath":"/agent/clawhub-mineru-extract-mineru-ai","generatedAt":"2026-10-09T20:32:45.388Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T12:34:31.331Z","emptyReason":null},"description":"MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web page... Skill: MinerU Doc Parser Owner: mineru-extract Summary: MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web page... Tags: latest:0.2.1 Version history: v0.2.1 | 2026-04-07T12:30:46.383Z | user Fix: republish with complete SKILL.md content (previous publish had truncated CLI documentation) v0.2.0 | 2026-04-07T12:15:24.","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.6K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17a507qg9adzt2jkyh0mgzp3183ggjt:mineru-ai","sourceUrl":"https://clawhub.ai/mineru-extract/mineru-ai","homepage":"https://clawhub.ai/mineru-extract/skills/mineru-ai","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/mineru-extract/mineru-ai","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/mineru-extract/skills/mineru-ai","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":58,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web page..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:34:31.331Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:34:31.331Z","emptyReason":null},"stars":null,"forks":null,"downloads":2644,"packageName":null,"latestVersion":"0.2.1","tractionLabel":"2.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:34:31.331Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T12:34:31.331Z","lastCrawledAt":"2026-10-09T12:34:31.331Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T12:34:31.331Z","lastVerifiedAt":null,"highlights":[{"version":"0.2.1","createdAt":"2026-04-07T12:30:46.383Z","changelog":"Fix: republish with complete SKILL.md content (previous publish had truncated CLI documentation)","fileCount":3,"zipByteSize":8292},{"version":"0.2.0","createdAt":"2026-04-07T12:15:24.138Z","changelog":"SEO optimization: new AI-focused description with 200+ words, bilingual keywords, trigger phrases for AI document parsing search queries","fileCount":2,"zipByteSize":2290},{"version":"1.0.10","createdAt":"2026-04-07T02:49:14.735Z","changelog":"- No file changes detected; maintenance version release. - Documentation, description, features, and usage unchanged from previous release. - No new features, bug fixes, or command updates included in this version.","fileCount":3,"zipByteSize":8321},{"version":"1.0.9","createdAt":"2026-04-01T08:08:22.334Z","changelog":"- Added table and formula recognition support to token-free flash extraction mode. - Updated documentation to reflect that flash-extract now recognizes tables and formulas in quick extraction. - Adjusted comparison tables to show feature parity between flash-extract and extract for table/formula recognition. - Clarified best use cases for flash-extract and extract modes.","fileCount":3,"zipByteSize":8322},{"version":"1.0.8","createdAt":"2026-03-30T07:03:14.466Z","changelog":"Version 1.0.8 (no file changes detected): - No detectable changes to files or documentation in this release. - All features and documentation remain the same as in the previous version.","fileCount":3,"zipByteSize":8400},{"version":"1.0.7","createdAt":"2026-03-24T14:32:40.693Z","changelog":"mineru-ai v1.0.7 - Documentation streamlined for conciseness and ease of use, especially in the Core workflow section. - No changes to code or binaries; documentation only. - Command usage instructions remain unchanged. - All features and limits are consistent with previous versions.","fileCount":3,"zipByteSize":8401},{"version":"1.0.6","createdAt":"2026-03-24T13:34:05.339Z","changelog":"**Improved extraction workflow and error handling for MinerU CLI.** - Updated core workflow to always try `flash-extract` first for any input (local file or URL), for faster and simpler usage. - Documented how to interpret `flash-extract` exit codes and next actions (e.g., when to switch to `extract` with a token). - Clarified difference between document URL handling and web page extraction (`flash-extract` vs `crawl`). - Enhanced troubleshooting guidance for error cases in the extraction flow. - Improved workflow steps and user instructions for better clarity and usability.","fileCount":3,"zipByteSize":8685},{"version":"1.0.5","createdAt":"2026-03-24T12:24:25.390Z","changelog":"- Added npm and Go installation instructions for mineru-open-api; now supports install via npm or go install. - Updated metadata to reflect new install methods, replacing previous direct download scripts. - Removed curl/PowerShell script installation instructions. - No CLI feature changes.","fileCount":3,"zipByteSize":8401}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17a507qg9adzt2jkyh0mgzp3183ggjt:mineru-ai","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T20:32:45.382Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mineru-extract-mineru-ai/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T12:34:31.331Z","emptyReason":null},"readme":"Skill: MinerU Doc Parser\n\nOwner: mineru-extract\n\nSummary: MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web page...\n\nTags: latest:0.2.1\n\nVersion history:\n\nv0.2.1 | 2026-04-07T12:30:46.383Z | user\n\nFix: republish with complete SKILL.md content (previous publish had truncated CLI documentation)\n\nv0.2.0 | 2026-04-07T12:15:24.138Z | user\n\nSEO optimization: new AI-focused description with 200+ words, bilingual keywords, trigger phrases for AI document parsing search queries\n\nv1.0.10 | 2026-04-07T02:49:14.735Z | user\n\n- No file changes detected; maintenance version release.\n- Documentation, description, features, and usage unchanged from previous release.\n- No new features, bug fixes, or command updates included in this version.\n\nv1.0.9 | 2026-04-01T08:08:22.334Z | user\n\n- Added table and formula recognition support to token-free flash extraction mode.\n- Updated documentation to reflect that flash-extract now recognizes tables and formulas in quick extraction.\n- Adjusted comparison tables to show feature parity between flash-extract and extract for table/formula recognition.\n- Clarified best use cases for flash-extract and extract modes.\n\nv1.0.8 | 2026-03-30T07:03:14.466Z | user\n\nVersion 1.0.8 (no file changes detected):\n\n- No detectable changes to files or documentation in this release.\n- All features and documentation remain the same as in the previous version.\n\nv1.0.7 | 2026-03-24T14:32:40.693Z | user\n\nmineru-ai v1.0.7\n\n- Documentation streamlined for conciseness and ease of use, especially in the Core workflow section.\n- No changes to code or binaries; documentation only.\n- Command usage instructions remain unchanged.\n- All features and limits are consistent with previous versions.\n\nv1.0.6 | 2026-03-24T13:34:05.339Z | user\n\n**Improved extraction workflow and error handling for MinerU CLI.**\n\n- Updated core workflow to always try `flash-extract` first for any input (local file or URL), for faster and simpler usage.\n- Documented how to interpret `flash-extract` exit codes and next actions (e.g., when to switch to `extract` with a token).\n- Clarified difference between document URL handling and web page extraction (`flash-extract` vs `crawl`).\n- Enhanced troubleshooting guidance for error cases in the extraction flow.\n- Improved workflow steps and user instructions for better clarity and usability.\n\nv1.0.5 | 2026-03-24T12:24:25.390Z | user\n\n- Added npm and Go installation instructions for mineru-open-api; now supports install via npm or go install.\n- Updated metadata to reflect new install methods, replacing previous direct download scripts.\n- Removed curl/PowerShell script installation instructions.\n- No CLI feature changes.\n\nv1.0.3 | 2026-03-23T05:30:18.682Z | user\n\nmineru 1.0.3\n\n- Added CONTRIBUTING.md to guide community contributions.\n- Added _meta.json for enhanced metadata management.\n- Overhauled SKILL.md to provide detailed CLI-based instructions, including installation, usage, and feature comparison for flash-extract and extract modes.\n- Expanded documentation on supported file types, output formats, command-line flags, web crawling, and batch processing.\n- Clarified extraction limits, setup steps, and model selection guidance for improved user onboarding.\n\nArchive index:\n\nArchive v0.2.1: 3 files, 8292 bytes\n\nFiles: skill-card.md (2444b), SKILL.md (17319b), _meta.json (128b)\n\nFile v0.2.1:SKILL.md\n\n---\nname: mineru-ai\ndescription: >\n  MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web pages into clean Markdown, HTML, LaTeX, or DOCX using advanced AI models.\n  Two extraction modes: flash-extract for instant zero-setup parsing (no login, no token, no configuration — just run and get results), and precision extract with AI-powered table recognition, mathematical formula recognition (LaTeX output), OCR for scanned PDFs and images, VLM (Vision Language Model) for complex layouts, and batch processing.\n  Use this skill when you need to: parse a PDF with AI, extract text from documents intelligently, convert PDF to Markdown using AI, OCR a scanned document, recognize tables in a PDF, extract LaTeX formulas from academic papers, batch convert documents, crawl web pages to Markdown, read and parse any document format, or get AI-assisted document understanding.\n  MinerU's AI engine handles complex document layouts, mixed-language content, nested tables, mathematical formulas, figures, and multi-column pages that traditional parsers fail on. Choose vlm model for highest accuracy or pipeline model for zero-hallucination reliability.\n  Supports 80+ languages including Chinese, English, Japanese, Korean, Arabic, Hindi, French, German, Spanish, Russian, and all major script families. Works with local files and URLs.\n  Built for AI developers, researchers, data scientists, and anyone who needs intelligent document parsing. Works as a Claude Code skill, MCP tool, or standalone CLI.\n  AI文档解析、智能PDF提取、AI驱动的文档转换、PDF转Markdown、扫描件OCR、表格智能识别、公式识别、学术论文AI解析、批量文档处理、网页转Markdown。MinerU AI引擎，支持复杂排版、多语言、嵌套表格、数学公式，传统解析器无法处理的文档都能轻松搞定。\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - AI document parsing\n  - OCR on scanned documents\n  - Parsing academic papers\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Batch document processing\n  - Crawling web pages to Markdown\n  - Table recognition in documents\n  - Formula extraction from papers\n  - Reading PDF files\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"🤖\",\"homepage\":\"https://mineru.net\",\"source\":\"https://github.com/MinerU-Extract/mineru-ai\",\"author\":\"OpenDataLab\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# AI Document Parsing with MinerU\n\nIntelligent document extraction powered by AI — parse any document format into clean, structured output.\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\nOr via Go (macOS/Linux):\n\n```bash\ngo install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest\n```\n\n### Verify installation\n\n```bash\nmineru-open-api version\n```\n\n## Two extraction modes\n\n| | `flash-extract` | `extract` |\n|---|---|---|\n| Token required | No | Yes (`mineru-open-api auth`) |\n| Speed | Fast | Normal |\n| Table recognition | No | Yes |\n| Formula recognition | No | Yes |\n| OCR | Yes | Yes |\n| Output formats | Markdown only | md, html, latex, docx, json |\n| Batch mode | No | Yes |\n| Model selection | pipeline | Yes (vlm, pipeline, MinerU-HTML) |\n| File size limit | **10 MB** | Much higher |\n| Page limit | **20 pages** | Much higher |\n| Rate limit | Per-IP per-minute cap | Based on API plan |\n| Best for | Quick start, small/simple docs | Large docs, tables, production |\n\n### flash-extract limits\n\n| Limit | Value |\n|-------|-------|\n| File size | Max **10 MB** |\n| Page count | Max **20 pages** |\n| Supported types | PDF, Images (png/jpg/jpeg/jp2/webp/gif/bmp), Docx, PPTx |\n| IP rate limit | Per-minute request caps (HTTP 429 when exceeded) |\n\nWhen any limit is exceeded, the agent should suggest switching to `extract` with a token (create at https://mineru.net/apiManage/token), which has significantly higher limits.\n\n\n## Core workflow\n\n1. **Start fast** (no token): `mineru-open-api flash-extract <file>` for quick Markdown conversion\n2. **Need more?** Create token at https://mineru.net/apiManage/token, run `mineru-open-api auth`, then use `mineru-open-api extract` for tables, formulas, OCR, multi-format, and batch\n3. **Web pages**: `mineru-open-api crawl <url>` to convert web content\n4. **Check results**: output goes to stdout (default) or `-o` directory\n\n\n## Authentication\n\nOnly required for `extract` and `crawl`. Not needed for `flash-extract`.\n\nConfigure your API token (create one at https://mineru.net/apiManage/token):\n\n```bash\nmineru-open-api auth                    # Interactive token setup\nexport MINERU_TOKEN=\"your-token\"  # Or set via environment variable\n```\n\nToken resolution order: `--token` flag > `MINERU_TOKEN` env > `~/.mineru/config.yaml`.\n\n## Supported input formats\n\n| Format | `flash-extract` | `extract` |\n|--------|:-:|:-:|\n| PDF (`.pdf`) | Yes | Yes |\n| Images (`.png`, `.jpg`, `.jpeg`, `.jp2`, `.webp`, `.gif`, `.bmp`) | Yes | Yes |\n| Word (`.docx`) | Yes | Yes |\n| Word (`.doc`) | No | Yes |\n| PowerPoint (`.pptx`) | Yes | Yes |\n| PowerPoint (`.ppt`) | No | Yes |\n| HTML (`.html`) | No | Yes |\n| URLs (remote files) | Yes | Yes |\n\nThe `crawl` command accepts any HTTP/HTTPS URL and extracts web page content.\n\n## Commands\n\n### flash-extract — Quick extraction (no token needed)\n\nFast, token-free document extraction. Outputs Markdown only. No table recognition. Limited to **10 MB / 20 pages** per file, with IP-based rate limiting.\n\n```bash\nmineru-open-api flash-extract report.pdf                     # Markdown to stdout\nmineru-open-api flash-extract report.pdf -o ./out/           # Save to file\nmineru-open-api flash-extract https://example.com/doc.pdf    # URL mode\nmineru-open-api flash-extract report.pdf --language en       # Specify language\nmineru-open-api flash-extract report.pdf --pages 1-10        # Page range\n```\n\n#### flash-extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10` |\n| `--timeout` | | `900` | Timeout in seconds |\n\n### extract — Precision extraction (token required)\n\nConvert PDFs, images, and other documents to Markdown or other formats. Supports table/formula recognition, OCR, multiple output formats, and batch mode.\n\n```bash\nmineru-open-api extract report.pdf                         # Markdown to stdout\nmineru-open-api extract report.pdf -f html                 # HTML to stdout\nmineru-open-api extract report.pdf -o ./out/               # Save to directory\nmineru-open-api extract report.pdf -o ./out/ -f md,docx    # Multiple formats\nmineru-open-api extract *.pdf -o ./results/                # Batch extract\nmineru-open-api extract --list files.txt -o ./results/     # Batch from file list\nmineru-open-api extract https://example.com/doc.pdf        # Extract from URL\ncat doc.pdf | mineru-open-api extract --stdin -o ./out/    # From stdin\n```\n\n#### extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html`, `latex`, `docx` (comma-separated) |\n| `--model` | | _(auto)_ | Model: `vlm`, `pipeline`, `html` (see below) |\n| `--ocr` | | `false` | Enable OCR for scanned documents |\n| `--formula` | | `true` | Enable/disable formula recognition |\n| `--table` | | `true` | Enable/disable table recognition |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10,15` |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read input list from file (one path per line) |\n| `--concurrency` | | `0` | Batch concurrency (0 = server default) |\n\n#### Model comparison: vlm vs pipeline\n\n| | `vlm` | `pipeline` |\n|---|---|---|\n| Parsing accuracy | Higher — better at complex layouts, mixed content | Standard |\n| Hallucination risk | May produce hallucinated text in rare cases | **No hallucination** — biggest advantage |\n| Best for | Academic papers, complex tables, intricate layouts | General documents where fidelity matters most |\n\nWhen the user values accuracy and the document has complex formatting, suggest `--model vlm`. When the user prioritizes reliability and no-hallucination guarantee, suggest `--model pipeline` (or omit `--model` to use auto).\n\n### crawl — Web page extraction (token required)\n\nFetch web pages and convert to Markdown.\n\n```bash\nmineru-open-api crawl https://example.com/article              # Markdown to stdout\nmineru-open-api crawl https://example.com/article -f html      # HTML to stdout\nmineru-open-api crawl https://example.com/article -o ./out/     # Save to file\nmineru-open-api crawl url1 url2 -o ./pages/                     # Batch crawl\nmineru-open-api crawl --list urls.txt -o ./pages/               # Batch from file list\n```\n\n#### crawl flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html` (comma-separated) |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read URL list from file (one per line) |\n| `--stdin-list` | | `false` | Read URL list from stdin |\n| `--concurrency` | | `0` | Batch concurrency |\n\n### auth — Authentication management\n\n```bash\nmineru-open-api auth              # Interactive token setup\nmineru-open-api auth --verify     # Verify current token is valid\nmineru-open-api auth --show       # Show current token source and masked value\n```\n\n\n## Supported `--language` values\n\nThe `--language` flag accepts the following values (default: `ch`). Used by both `flash-extract` and `extract`. Values are organized by script/language family — each value covers all languages listed in its group.\n\n### Standalone language packs\n\n| Value | Included languages |\n|-------|-------------------|\n| `ch` | Chinese, English, Chinese Traditional |\n| `ch_server` | Chinese, English, Chinese Traditional, Japanese |\n| `en` | English |\n| `japan` | Chinese, English, Chinese Traditional, Japanese |\n| `korean` | Korean, English |\n| `chinese_cht` | Chinese, English, Chinese Traditional, Japanese |\n| `ta` | Tamil, English |\n| `te` | Telugu, English |\n| `ka` | Kannada |\n| `el` | Greek, English |\n| `th` | Thai, English |\n\n### Language family packs\n\n| Value | Script/Family | Included languages |\n|-------|--------------|-------------------|\n| `latin` | Latin script | French, German, Italian, Spanish, Portuguese, Dutch, Swedish, and 40+ more |\n| `arabic` | Arabic script | Arabic, Persian, Uyghur, Urdu, Pashto, Kurdish, and more |\n| `cyrillic` | Cyrillic script | Russian, Ukrainian, Bulgarian, Serbian, Kazakh, and 20+ more |\n| `east_slavic` | East Slavic | Russian, Belarusian, Ukrainian, English |\n| `devanagari` | Devanagari script | Hindi, Marathi, Nepali, Sanskrit, and more |\n\n\n## Output behavior\n\n- **No `-o` flag**: result goes to stdout; status/progress messages go to stderr\n- **With `-o` flag**: result saved to file/directory; progress messages on stderr\n- **Batch mode** (`extract`/`crawl` only): requires `-o` to specify output directory\n- **Binary formats** (`docx`, `extract` only): cannot output to stdout, must use `-o`\n- Markdown output includes extracted images saved alongside the `.md` file\n\n\n\n### General rules\n\nWhen using this skill on behalf of the user:\n\n- **Quote file paths** that contain spaces or special characters with double quotes in commands. Example: `mineru-open-api extract \"report 01.pdf\"`, NOT `mineru-open-api extract report 01.pdf`.\n- **Don't run commands blindly on errors** — if the user asks \"提取失败了怎么办\", explain the exit code and troubleshooting steps instead of re-running the command.\n- **Installation questions** (\"mineru 怎么安装\") should be answered with the install instructions, not by running `mineru-open-api extract`.\n- **DOCX as input is supported** — if the user asks \"这个 Word 文档能转 Markdown 吗\", use `mineru-open-api extract file.docx` or `mineru-open-api flash-extract file.docx`. Note: `.doc` format is only supported by `extract`, not `flash-extract`.\n- **Table extraction** — tables are only recognized by `extract` (not `flash-extract`). If the user mentions tables, use `extract`.\n- For **stdout mode** (no `-o`), only one text format can be output at a time. If the user wants multiple formats, suggest adding `-o`.\n\n### Choosing between flash-extract and extract\n\nThe agent MUST follow this decision logic:\n\n1. **Default to `flash-extract`** when:\n   - User has NOT configured a token (no `~/.mineru/config.yaml`, no `MINERU_TOKEN` env)\n   - User wants a quick/simple extraction without mentioning tables, formulas, OCR, or specific formats\n   - File is **under 10 MB and under 20 pages**\n   - User is trying the tool for the first time\n\n2. **Use `extract`** when:\n   - User explicitly asks for table recognition, formula recognition, or OCR\n   - User requests non-Markdown output formats (html, latex, docx, json)\n   - User needs batch processing (multiple files)\n   - File is **over 10 MB or over 20 pages** (exceeds flash-extract limits)\n   - User has a token configured and wants precision-quality extraction\n\n3. **If unsure**, prefer `flash-extract` — it's faster and requires no setup, but check file size first.\n\n4. When the user does NOT specify an output path (`-o`), the agent MUST generate a default output directory to prevent file overwrites. Use:\n\n```\n~/MinerU-Skill/<name>_<hash>/\n```\n**Naming rules:**\n\n- `<name>`: derived from the source, then **sanitized** for safe directory names.\n  - For URLs: last path segment (e.g. `https://arxiv.org/pdf/2509.22186` → `2509.22186`)\n  - For local files: filename without extension (e.g. `report.pdf` → `report`)\n  - **Sanitization**: replace spaces and shell-unsafe characters with `_`. Collapse consecutive `_` into one. Keep alphanumeric, `-`, `_`, `.`, and CJK characters.\n- `<hash>`: first 6 characters of the MD5 hash of the **full original source path or URL** (before sanitization).\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5sum | cut -c1-6\n```\n\n5. When the user asks to **upgrade** or **update** this skill, the agent MUST re-install the CLI binary:\n\n```bash\nnpm install -g mineru-open-api@latest\n```\n\n### flash-extract limit handling\n\nWhen `flash-extract` fails due to file limits or rate limiting, the agent MUST provide a clear explanation and suggest `extract` as the upgrade path.\n\n### Post-extraction friendly hints\n\nAfter `flash-extract` completes successfully, the agent MUST append a brief hint:\n\n> Tip: `flash-extract` 为快速免登录模式（限 10MB/20页，不含表格识别）。如需解析更大文件、表格/公式识别或多格式导出，请前往 https://mineru.net/apiManage/token 创建 Token，运行 `mineru-open-api auth` 配置后使用 `mineru-open-api extract`。\n\nKeep the hint to ONE short sentence. Do NOT repeat the hint if the user has already seen it in this session.\n\n## Exit codes\n\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 0 | Success | — |\n| 1 | General API or unknown error | Check network connectivity; retry; use `--verbose` for details |\n| 2 | Invalid parameters / usage error | Check command syntax and flag values |\n| 4 | File too large or page limit exceeded | For `flash-extract`: file must be under 10 MB / 20 pages; switch to `extract` with token for higher limits. For `extract`: split the file or use `--pages` |\n| 5 | Extraction failed | The document may be corrupted or unsupported; try a different `--model` |\n| 6 | Timeout | Increase with `--timeout`; large files may need 600+ seconds |\n\n## Troubleshooting\n\n- **\"no API token found\"** (on `extract`/`crawl`): Run `mineru-open-api auth` or set `MINERU_TOKEN` env variable. Or use `flash-extract` which needs no token.\n- **Timeout on large files**: Increase with `--timeout 1600` (seconds)\n- **Batch fails partially**: Check stderr for per-file status; succeeded files are still saved\n- **Binary format to stdout**: Use `-o` flag; `docx` cannot stream to stdout\n- **Private deployment**: Use `--base-url https://your-server.com/api`\n- **Extraction quality is poor**: Try `mineru-open-api extract` with `--model vlm` for complex layouts, or `--ocr` for scanned documents\n- **Tables not extracted**: `flash-extract` does NOT support tables. Use `mineru-open-api extract` with a token.\n- **HTTP 429 on flash-extract**: IP rate limit hit. Wait a few minutes or switch to `mineru-open-api extract` with token.\n\n## Reporting Issues\n\n- Skill issues: Open an issue at https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli\n- CLI issues: Open an issue at https://github.com/MinerU-Extract/mineru-ai\n\nFile v0.2.1:_meta.json\n\n{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"0.2.1\",\n  \"publishedAt\": 1775565046383\n}\n\nFile v0.2.1:skill-card.md\n\n## Description:\n\nMinerU Doc Parser helps agents choose and run the MinerU CLI to parse PDFs, scanned documents, images, Office files, and web pages into Markdown, HTML, LaTeX, DOCX, or JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[mineru-extract](https://clawhub.ai/user/mineru-extract)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, researchers, and data teams use this skill to extract structured content from documents and web pages with MinerU. It guides agents between quick tokenless parsing and authenticated extraction for tables, formulas, OCR, batch jobs, and multiple output formats.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected documents or URLs may be sent to MinerU/OpenDataLab for processing.\n\nMitigation: Use the skill only for documents approved for external processing, and avoid confidential or regulated content unless the user has explicit approval.\n\nRisk: The skill installs a mutable global CLI package.\n\nMitigation: Prefer a pinned CLI version in an isolated environment and review package updates before use.\n\nRisk: MinerU API tokens can be exposed through shared terminals, scripts, logs, or screenshots.\n\nMitigation: Treat tokens as secrets, configure them through approved secret handling, and avoid pasting them into shared or recorded contexts.\n\n## Reference(s):\n\n- [MinerU Homepage](https://mineru.net)\n- [MinerU Source Metadata Link](https://github.com/MinerU-Extract/mineru-ai)\n- [MinerU CLI Issue Reference](https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli)\n- [MinerU Token Management](https://mineru.net/apiManage/token)\n- [ClawHub Skill Page](https://clawhub.ai/mineru-extract/skills/mineru-ai)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration, Markdown, Files]\n\n**Output Format:** [Markdown guidance with inline shell commands and file output paths]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May direct MinerU to produce Markdown, HTML, LaTeX, DOCX, JSON, or extracted image files depending on command flags.]\n\n## Skill Version(s):\n\n0.2.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.2.0: 2 files, 2290 bytes\n\nFiles: SKILL.md (4023b), _meta.json (128b)\n\nFile v0.2.0:SKILL.md\n\n---\nname: mineru-ai\ndescription: >\n  MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web pages into clean Markdown, HTML, LaTeX, or DOCX using advanced AI models.\n  Two extraction modes: flash-extract for instant zero-setup parsing (no login, no token, no configuration — just run and get results), and precision extract with AI-powered table recognition, mathematical formula recognition (LaTeX output), OCR for scanned PDFs and images, VLM (Vision Language Model) for complex layouts, and batch processing.\n  Use this skill when you need to: parse a PDF with AI, extract text from documents intelligently, convert PDF to Markdown using AI, OCR a scanned document, recognize tables in a PDF, extract LaTeX formulas from academic papers, batch convert documents, crawl web pages to Markdown, read and parse any document format, or get AI-assisted document understanding.\n  MinerU's AI engine handles complex document layouts, mixed-language content, nested tables, mathematical formulas, figures, and multi-column pages that traditional parsers fail on. Choose vlm model for highest accuracy or pipeline model for zero-hallucination reliability.\n  Supports 80+ languages including Chinese, English, Japanese, Korean, Arabic, Hindi, French, German, Spanish, Russian, and all major script families. Works with local files and URLs.\n  Built for AI developers, researchers, data scientists, and anyone who needs intelligent document parsing. Works as a Claude Code skill, MCP tool, or standalone CLI.\n  AI文档解析、智能PDF提取、AI驱动的文档转换、PDF转Markdown、扫描件OCR、表格智能识别、公式识别、学术论文AI解析、批量文档处理、网页转Markdown。MinerU AI引擎，支持复杂排版、多语言、嵌套表格、数学公式，传统解析器无法处理的文档都能轻松搞定。\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - AI document parsing\n  - OCR on scanned documents\n  - Parsing academic papers\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Batch document processing\n  - Crawling web pages to Markdown\n  - Table recognition in documents\n  - Formula extraction from papers\n  - Reading PDF files\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"🤖\",\"homepage\":\"https://mineru.net\",\"source\":\"https://github.com/MinerU-Extract/mineru-ai\",\"author\":\"OpenDataLab\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# AI Document Parsing with MinerU\n\nIntelligent document extraction powered by AI — parse any document format into clean, structured output.\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\n## Two extraction modes\n\n| | `flash-extract` | `extract` |\n|---|---|---|\n| Token required | No | Yes |\n| Table recognition | No | Yes |\n| Formula recognition | No | Yes |\n| OCR | Yes | Yes |\n| Output formats | Markdown only | md, html, latex, docx, json |\n| Batch mode | No | Yes |\n| Model selection | pipeline | vlm, pipeline, html |\n| Best for | Quick start | Large docs, tables, production |\n\n## Quick start\n\n```bash\nmineru-open-api flash-extract report.pdf          # No token needed\nmineru-open-api extract report.pdf -f html -o ./  # With token\nmineru-open-api extract *.pdf -o ./results/       # Batch\nmineru-open-api crawl https://example.com         # Web crawl\n```\n\n## Authentication (for extract/crawl only)\n\n```bash\nmineru-open-api auth\n```\n\n## Exit codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Success |\n| 1 | General API error |\n| 2 | Invalid parameters |\n| 4 | File too large |\n| 5 | Extraction failed |\n| 6 | Timeout |\n\nFile v0.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"0.2.0\",\n  \"publishedAt\": 1775564124138\n}\n\nArchive v1.0.10: 3 files, 8321 bytes\n\nFiles: _meta.json (129b), CONTRIBUTING.md (1555b), SKILL.md (17952b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: mineru\ndescription: MinerU document extraction CLI that converts PDFs, images, and web pages into Markdown, HTML, LaTeX, or DOCX via the MinerU API. Supports token-free flash extraction with table/formula recognition for quick start, precision extraction, web crawling, batch processing, and piped workflows.\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - Crawling web pages to Markdown\n  - Batch document processing\n  - OCR on scanned documents\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Parsing document content\n  - Reading PDF files\n  - Extracting tables from documents\n  - Converting Word documents\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"📄\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# Document Extraction with mineru-open-api\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\nOr via Go (macOS/Linux):\n\n```bash\ngo install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest\n```\n\n### Verify installation\n\n```bash\nmineru-open-api version\n```\n\n## Two extraction modes\n\n| | `flash-extract` | `extract` |\n|---|---|---|\n| Token required | No | Yes (`mineru-open-api auth`) |\n| Speed | Fast | Normal |\n| Table recognition | Yes | Yes |\n| Formula recognition | Yes | Yes |\n| OCR | Yes | Yes |\n| Output formats | Markdown only | md, html, latex, docx, json |\n| Batch mode | No | Yes |\n| Model selection | pipeline | Yes (vlm, pipeline, MinerU-HTML) |\n| File size limit | **10 MB** | Much higher |\n| Page limit | **20 pages** | Much higher |\n| Rate limit | Per-IP per-minute cap | Based on API plan |\n| Best for | Quick start, small/simple docs with tables | Large docs, formulas, multi-format, production |\n\n### flash-extract limits\n\n| Limit | Value |\n|-------|-------|\n| File size | Max **10 MB** |\n| Page count | Max **20 pages** |\n| Supported types | PDF, Images (png/jpg/jpeg/jp2/webp/gif/bmp), Docx, PPTx |\n| IP rate limit | Per-minute request caps (HTTP 429 when exceeded) |\n\nWhen any limit is exceeded, the agent should suggest switching to `extract` with a token (create at https://mineru.net/apiManage/token), which has significantly higher limits.\n\n\n## Core workflow\n\n1. **Start fast** (no token): `mineru-open-api flash-extract <file>` for quick Markdown conversion\n2. **Need more?** Create token at https://mineru.net/apiManage/token, run `mineru-open-api auth`, then use `mineru-open-api extract` for tables, formulas, OCR, multi-format, and batch\n3. **Web pages**: `mineru-open-api crawl <url>` to convert web content\n4. **Check results**: output goes to stdout (default) or `-o` directory\n\n\n## Authentication\n\nOnly required for `extract` and `crawl`. Not needed for `flash-extract`.\n\nConfigure your API token (create one at https://mineru.net/apiManage/token):\n\n```bash\nmineru-open-api auth                    # Interactive token setup\nexport MINERU_TOKEN=\"your-token\"  # Or set via environment variable\n```\n\nToken resolution order: `--token` flag > `MINERU_TOKEN` env > `~/.mineru/config.yaml`.\n\n## Supported input formats\n\n| Format | `flash-extract` | `extract` |\n|--------|:-:|:-:|\n| PDF (`.pdf`) | Yes | Yes |\n| Images (`.png`, `.jpg`, `.jpeg`, `.jp2`, `.webp`, `.gif`, `.bmp`) | Yes | Yes |\n| Word (`.docx`) | Yes | Yes |\n| Word (`.doc`) | No | Yes |\n| PowerPoint (`.pptx`) | Yes | Yes |\n| PowerPoint (`.ppt`) | No | Yes |\n| HTML (`.html`) | No | Yes |\n| URLs (remote files) | Yes | Yes |\n\nThe `crawl` command accepts any HTTP/HTTPS URL and extracts web page content.\n\n## Commands\n\n### flash-extract — Quick extraction (no token needed)\n\nFast, token-free document extraction. Outputs Markdown only. Limited to **10 MB / 20 pages** per file, with IP-based rate limiting.\n\n```bash\nmineru-open-api flash-extract report.pdf                     # Markdown to stdout\nmineru-open-api flash-extract report.pdf -o ./out/           # Save to file\nmineru-open-api flash-extract https://example.com/doc.pdf    # URL mode\nmineru-open-api flash-extract report.pdf --language en       # Specify language\nmineru-open-api flash-extract report.pdf --pages 1-10        # Page range\n```\n\n#### flash-extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10` |\n| `--timeout` | | `900` | Timeout in seconds |\n\n### extract — Precision extraction (token required)\n\nConvert PDFs, images, and other documents to Markdown or other formats. Supports table/formula recognition, OCR, multiple output formats, and batch mode.\n\n```bash\nmineru-open-api extract report.pdf                         # Markdown to stdout\nmineru-open-api extract report.pdf -f html                 # HTML to stdout\nmineru-open-api extract report.pdf -o ./out/               # Save to directory\nmineru-open-api extract report.pdf -o ./out/ -f md,docx    # Multiple formats\nmineru-open-api extract *.pdf -o ./results/                # Batch extract\nmineru-open-api extract --list files.txt -o ./results/     # Batch from file list\nmineru-open-api extract https://example.com/doc.pdf        # Extract from URL\ncat doc.pdf | mineru-open-api extract --stdin -o ./out/    # From stdin\n```\n\n#### extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html`, `latex`, `docx` (comma-separated) |\n| `--model` | | _(auto)_ | Model: `vlm`, `pipeline`, `html` (see below) |\n| `--ocr` | | `false` | Enable OCR for scanned documents |\n| `--formula` | | `true` | Enable/disable formula recognition |\n| `--table` | | `true` | Enable/disable table recognition |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10,15` |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read input list from file (one path per line) |\n\n| `--concurrency` | | `0` | Batch concurrency (0 = server default) |\n\n#### Model comparison: vlm vs pipeline\n\n| | `vlm` | `pipeline` |\n|---|---|---|\n| Parsing accuracy | Higher — better at complex layouts, mixed content | Standard |\n| Hallucination risk | May produce hallucinated text in rare cases | **No hallucination** — biggest advantage |\n| Best for | Academic papers, complex tables, intricate layouts | General documents where fidelity matters most |\n\nWhen the user values accuracy and the document has complex formatting, suggest `--model vlm`. When the user prioritizes reliability and no-hallucination guarantee, suggest `--model pipeline` (or omit `--model` to use auto).\n\n### crawl — Web page extraction (token required)\n\nFetch web pages and convert to Markdown.\n\n```bash\nmineru-open-api crawl https://example.com/article              # Markdown to stdout\nmineru-open-api crawl https://example.com/article -f html      # HTML to stdout\nmineru-open-api crawl https://example.com/article -o ./out/     # Save to file\nmineru-open-api crawl url1 url2 -o ./pages/                     # Batch crawl\nmineru-open-api crawl --list urls.txt -o ./pages/               # Batch from file list\n```\n\n#### crawl flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html` (comma-separated) |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read URL list from file (one per line) |\n| `--stdin-list` | | `false` | Read URL list from stdin |\n| `--concurrency` | | `0` | Batch concurrency |\n\n### auth — Authentication management\n\n```bash\nmineru-open-api auth              # Interactive token setup\nmineru-open-api auth --verify     # Verify current token is valid\nmineru-open-api auth --show       # Show current token source and masked value\n```\n\n\n## Supported `--language` values\n\nThe `--language` flag accepts the following values (default: `ch`). Used by both `flash-extract` and `extract`. Values are organized by script/language family — each value covers all languages listed in its group.\n\n### Standalone language packs\n\nFor specific languages or CJK combinations.\n\n| Value | Included languages | 说明 |\n|-------|-------------------|------|\n| `ch` | Chinese, English, Chinese Traditional | 中英文（默认值） |\n| `ch_server` | Chinese, English, Chinese Traditional, Japanese | 繁体、手写体 |\n| `en` | English | 纯英文 |\n| `japan` | Chinese, English, Chinese Traditional, Japanese | 日文为主 |\n| `korean` | Korean, English | 韩文 |\n| `chinese_cht` | Chinese, English, Chinese Traditional, Japanese | 繁体中文为主 |\n| `ta` | Tamil, English | 泰米尔文 |\n| `te` | Telugu, English | 泰卢固文 |\n| `ka` | Kannada | 卡纳达文 |\n| `el` | Greek, English | 希腊文 |\n| `th` | Thai, English | 泰文 |\n\n### Language family packs\n\nOne value covers many languages sharing the same script system.\n\n| Value | Script/Family | Included languages |\n|-------|--------------|-------------------|\n| `latin` | Latin script (拉丁语系) | French, German, Afrikaans, Italian, Spanish, Bosnian, Portuguese, Czech, Welsh, Danish, Estonian, Irish, Croatian, Uzbek, Hungarian, Serbian (Latin), Indonesian, Occitan, Icelandic, Lithuanian, Maori, Malay, Dutch, Norwegian, Polish, Slovak, Slovenian, Albanian, Swedish, Swahili, Tagalog, Turkish, Latin, Azerbaijani, Kurdish, Latvian, Maltese, Pali, Romanian, Vietnamese, Finnish, Basque, Galician, Luxembourgish, Romansh, Catalan, Quechua |\n| `arabic` | Arabic script (阿拉伯语系) | Arabic, Persian, Uyghur, Urdu, Pashto, Kurdish, Sindhi, Balochi, English |\n| `cyrillic` | Cyrillic script (西里尔语系) | Russian, Belarusian, Ukrainian, Serbian (Cyrillic), Bulgarian, Mongolian, Abkhazian, Adyghe, Kabardian, Avar, Dargin, Ingush, Chechen, Lak, Lezgin, Tabasaran, Kazakh, Kyrgyz, Tajik, Macedonian, Tatar, Chuvash, Bashkir, Malian, Moldovan, Udmurt, Komi, Ossetian, Buryat, Kalmyk, Tuvan, Sakha, Karakalpak, English |\n| `east_slavic` | East Slavic (东斯拉夫语系) | Russian, Belarusian, Ukrainian, English |\n| `devanagari` | Devanagari script (天城文语系) | Hindi, Marathi, Nepali, Bihari, Maithili, Angika, Bhojpuri, Magahi, Santali, Newari, Konkani, Sanskrit, Haryanvi, English |\n\n\n\n\n\n## Output behavior\n\n- **No `-o` flag**: result goes to stdout; status/progress messages go to stderr\n- **With `-o` flag**: result saved to file/directory; progress messages on stderr\n- **Batch mode** (`extract`/`crawl` only): requires `-o` to specify output directory\n- **Binary formats** (`docx`, `extract` only): cannot output to stdout, must use `-o`\n- Markdown output includes extracted images saved alongside the `.md` file\n\n\n\n### General rules\n\nWhen using this skill on behalf of the user:\n\n- **Quote file paths** that contain spaces or special characters with double quotes in commands. Example: `mineru-open-api extract \"report 01.pdf\"`, NOT `mineru-open-api extract report 01.pdf`.\n- **Don't run commands blindly on errors** — if the user asks \"提取失败了怎么办\", explain the exit code and troubleshooting steps instead of re-running the command.\n- **Installation questions** (\"mineru 怎么安装\") should be answered with the install instructions, not by running `mineru-open-api extract`.\n- **DOCX as input is supported** — if the user asks \"这个 Word 文档能转 Markdown 吗\", use `mineru-open-api extract file.docx` or `mineru-open-api flash-extract file.docx`. Note: `.doc` format is only supported by `extract`, not `flash-extract`.\n- For **stdout mode** (no `-o`), only one text format can be output at a time. If the user wants multiple formats, suggest adding `-o`.\n\n### Choosing between flash-extract and extract\n\nThe agent MUST follow this decision logic:\n\n1. **Default to `flash-extract`** when:\n   - User has NOT configured a token (no `~/.mineru/config.yaml`, no `MINERU_TOKEN` env)\n   - User wants a quick/simple extraction without mentioning tables, formulas, OCR, or specific formats\n   - File is **under 10 MB and under 20 pages**\n   - User is trying the tool for the first time\n\n2. **Use `extract`** when:\n   - User explicitly asks for OCR on scanned documents\n   - User requests non-Markdown output formats (html, latex, docx, json)\n   - User needs batch processing (multiple files)\n   - File is **over 10 MB or over 20 pages** (exceeds flash-extract limits)\n   - User has a token configured and wants precision-quality extraction\n\n3. **If unsure**, prefer `flash-extract` — it's faster and requires no setup, but check file size first.\n\n4. When the user does NOT specify an output path (`-o`), the agent MUST generate a default output directory to prevent file overwrites. Use:\n\n```\n~/MinerU-Skill/<name>_<hash>/\n```\n**Naming rules:**\n\n- `<name>`: derived from the source, then **sanitized** for safe directory names.\n  - For URLs: last path segment (e.g. `https://arxiv.org/pdf/2509.22186` → `2509.22186`)\n  - For local files: filename without extension (e.g. `report.pdf` → `report`)\n  - **Sanitization**: replace spaces and shell-unsafe characters (`space`, `(`, `)`, `[`, `]`, `&`, `'`, `\"`, `!`, `#`, `$`, `` ` ``) with `_`. Collapse consecutive `_` into one. Keep alphanumeric, `-`, `_`, `.`, and CJK characters.\n- `<hash>`: first 6 characters of the MD5 hash of the **full original source path or URL** (before sanitization). This ensures:\n  - Different URLs with similar basenames get unique directories\n  - Re-running the same source reuses the same directory (idempotent)\n**How the agent should generate the hash:**\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5sum | cut -c1-6\n```\n\nOr on macOS:\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5 | cut -c1-6\n```\n\n5. When the user asks to **upgrade** or  **update** this skill, the agent MUST re-install the CLI binary to ensure the latest commands are available. Run the install command **before** using any new features\n\n\n### flash-extract limit handling\n\nWhen `flash-extract` fails due to file limits or rate limiting, the agent MUST provide a clear explanation and suggest `extract` as the upgrade path:\n\n\n\n**Rate limited (HTTP 429):**\n\n> `flash-extract` 请求频率超出限制（每 IP 有每分钟/每小时的请求上限）。你可以：\n> 1. 稍等几分钟后重试\n> 2. 前往 https://mineru.net/apiManage/token 创建 Token，使用 `mineru-open-api extract` 获取独立配额，不受 IP 限频影响\n\n**Pre-check**: if the agent can determine the file size before running `flash-extract` (e.g. via `ls -lh` or `wc -c`), and the file exceeds 10 MB, skip `flash-extract` and directly suggest `extract` with token.\n\n### Post-extraction friendly hints\n\nAfter `flash-extract` completes successfully, the agent MUST append a brief hint:\n\n> Tip: `flash-extract` 为快速免登录模式（限 10MB/20页，仅输出 Markdown）。如需解析更大文件、OCR 扫描件或多格式导出，请前往 https://mineru.net/apiManage/token 创建 Token，运行 `mineru-open-api auth` 配置后使用 `mineru-open-api extract`。\n\nKeep the hint to ONE short sentence. Do NOT repeat the hint if the user has already seen it in this session.\n\n\n\n**Examples:**\n\n| Source | `<name>` | Output directory |\n|--------|----------|-----------------|\n| `https://arxiv.org/pdf/2509.22186` | `2509.22186` | `~/MinerU-Skill/2509.22186_a3f2b1/` |\n| `https://arxiv.org/pdf/2509.200` | `2509.200` | `~/MinerU-Skill/2509.200_c7e9d4/` |\n\n\n\n**When the user specifies `-o`**: use the user's path as-is, do NOT override with the default directory.\n\n## Exit codes\n\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 0 | Success | — |\n| 1 | General API or unknown error | Check network connectivity; retry; use `--verbose` for details |\n| 2 | Invalid parameters / usage error | Check command syntax and flag values |\n\n| 4 | File too large or page limit exceeded | For `flash-extract`: file must be under 10 MB / 20 pages; switch to `extract` with token for higher limits. For `extract`: split the file or use `--pages` |\n| 5 | Extraction failed | The document may be corrupted or unsupported; try a different `--model` |\n| 6 | Timeout | Increase with `--timeout`; large files may need 600+ seconds \n\n## Troubleshooting\n\n- **\"no API token found\"** (on `extract`/`crawl`): Run `mineru-open-api auth` or set `MINERU_TOKEN` env variable. Or use `flash-extract` which needs no token.\n- **Timeout on large files**: Increase with `--timeout 1600` (seconds)\n- **Batch fails partially**: Check stderr for per-file status; succeeded files are still saved\n- **Binary format to stdout**: Use `-o` flag; `docx` cannot stream to stdout\n- **Private deployment**: Use `--base-url https://your-server.com/api`\n- **Extraction quality is poor**: Try `mineru-open-api extract` with `--model vlm` for complex layouts, or `--ocr` for scanned documents\n\n- **HTTP 429 on flash-extract**: IP rate limit hit. Wait a few minutes or switch to `mineru-open-api extract` with token.\n\n## Notes\n\n- `extract` requires a token but provides precision-featured extraction\n- All status/progress messages go to stderr; only document content goes to stdout\n- Batch mode automatically polls the API with exponential backoff\n- Token is stored in `~/.mineru/config.yaml` after `mineru-open-api auth`\n\n\n\n## Reporting Issues\n\n- Skill issues: Open an issue at https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli\n- agent-browser CLI issues: Open an issue at https://github.com/MinerU-Extract/mineru-document-extractor\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1775530154735\n}\n\nFile v1.0.10:CONTRIBUTING.md\n\n# Contributing to MinerU CLI Skill\n\nThis skill wraps the `mineru-open-api` CLI. Determine where the problem lies before reporting issues.\n\n## Issue Reporting Guide\n\n### Open an issue in this repository if\n\n- The skill documentation is unclear or missing\n- Examples in SKILL.md do not work as described\n- You need help using the CLI with this skill wrapper\n- The skill is missing a command or flag that the CLI supports\n\n### Open an issue at the mineru-open-cli repository if\n\n- The CLI crashes or throws errors\n- Commands do not behave as documented\n- You found a bug in document extraction or web crawling\n- You need a new feature in the CLI itself\n\n## Before Opening an Issue\n\n1. Install the latest version:\n\n   ```bash\n   npm install -g mineru-open-api@latest\n   ```\n\n2. Test the command in your terminal to isolate the issue:\n\n   ```bash\n   mineru-open-api auth --verify\n   mineru-open-api extract test.pdf\n   ```\n\n3. Check your authentication:\n\n   ```bash\n   mineru-open-api auth --show\n   ```\n\n## Issue Report Template\n\n```\n**Command:** mineru-open-api extract report.pdf -o ./out/\n**Expected:** Markdown output saved to ./out/report.md\n**Actual:** [describe what happened]\n**OS:** [e.g. macOS 14, Ubuntu 22.04]\n```\n\n## Adding New Commands to the Skill\n\nUpdate SKILL.md when the upstream CLI adds new commands or flags:\n\n- Keep the Installation and Authentication sections current\n- Add new commands in the correct category (extract/crawl/auth/status)\n- Include usage examples for every new flag\n- Update the exit codes table if new codes are added\n\nArchive v1.0.9: 3 files, 8322 bytes\n\nFiles: _meta.json (128b), CONTRIBUTING.md (1555b), SKILL.md (17952b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: mineru\ndescription: MinerU document extraction CLI that converts PDFs, images, and web pages into Markdown, HTML, LaTeX, or DOCX via the MinerU API. Supports token-free flash extraction with table/formula recognition for quick start, precision extraction, web crawling, batch processing, and piped workflows.\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - Crawling web pages to Markdown\n  - Batch document processing\n  - OCR on scanned documents\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Parsing document content\n  - Reading PDF files\n  - Extracting tables from documents\n  - Converting Word documents\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"📄\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# Document Extraction with mineru-open-api\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\nOr via Go (macOS/Linux):\n\n```bash\ngo install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest\n```\n\n### Verify installation\n\n```bash\nmineru-open-api version\n```\n\n## Two extraction modes\n\n| | `flash-extract` | `extract` |\n|---|---|---|\n| Token required | No | Yes (`mineru-open-api auth`) |\n| Speed | Fast | Normal |\n| Table recognition | Yes | Yes |\n| Formula recognition | Yes | Yes |\n| OCR | Yes | Yes |\n| Output formats | Markdown only | md, html, latex, docx, json |\n| Batch mode | No | Yes |\n| Model selection | pipeline | Yes (vlm, pipeline, MinerU-HTML) |\n| File size limit | **10 MB** | Much higher |\n| Page limit | **20 pages** | Much higher |\n| Rate limit | Per-IP per-minute cap | Based on API plan |\n| Best for | Quick start, small/simple docs with tables | Large docs, formulas, multi-format, production |\n\n### flash-extract limits\n\n| Limit | Value |\n|-------|-------|\n| File size | Max **10 MB** |\n| Page count | Max **20 pages** |\n| Supported types | PDF, Images (png/jpg/jpeg/jp2/webp/gif/bmp), Docx, PPTx |\n| IP rate limit | Per-minute request caps (HTTP 429 when exceeded) |\n\nWhen any limit is exceeded, the agent should suggest switching to `extract` with a token (create at https://mineru.net/apiManage/token), which has significantly higher limits.\n\n\n## Core workflow\n\n1. **Start fast** (no token): `mineru-open-api flash-extract <file>` for quick Markdown conversion\n2. **Need more?** Create token at https://mineru.net/apiManage/token, run `mineru-open-api auth`, then use `mineru-open-api extract` for tables, formulas, OCR, multi-format, and batch\n3. **Web pages**: `mineru-open-api crawl <url>` to convert web content\n4. **Check results**: output goes to stdout (default) or `-o` directory\n\n\n## Authentication\n\nOnly required for `extract` and `crawl`. Not needed for `flash-extract`.\n\nConfigure your API token (create one at https://mineru.net/apiManage/token):\n\n```bash\nmineru-open-api auth                    # Interactive token setup\nexport MINERU_TOKEN=\"your-token\"  # Or set via environment variable\n```\n\nToken resolution order: `--token` flag > `MINERU_TOKEN` env > `~/.mineru/config.yaml`.\n\n## Supported input formats\n\n| Format | `flash-extract` | `extract` |\n|--------|:-:|:-:|\n| PDF (`.pdf`) | Yes | Yes |\n| Images (`.png`, `.jpg`, `.jpeg`, `.jp2`, `.webp`, `.gif`, `.bmp`) | Yes | Yes |\n| Word (`.docx`) | Yes | Yes |\n| Word (`.doc`) | No | Yes |\n| PowerPoint (`.pptx`) | Yes | Yes |\n| PowerPoint (`.ppt`) | No | Yes |\n| HTML (`.html`) | No | Yes |\n| URLs (remote files) | Yes | Yes |\n\nThe `crawl` command accepts any HTTP/HTTPS URL and extracts web page content.\n\n## Commands\n\n### flash-extract — Quick extraction (no token needed)\n\nFast, token-free document extraction. Outputs Markdown only. Limited to **10 MB / 20 pages** per file, with IP-based rate limiting.\n\n```bash\nmineru-open-api flash-extract report.pdf                     # Markdown to stdout\nmineru-open-api flash-extract report.pdf -o ./out/           # Save to file\nmineru-open-api flash-extract https://example.com/doc.pdf    # URL mode\nmineru-open-api flash-extract report.pdf --language en       # Specify language\nmineru-open-api flash-extract report.pdf --pages 1-10        # Page range\n```\n\n#### flash-extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10` |\n| `--timeout` | | `900` | Timeout in seconds |\n\n### extract — Precision extraction (token required)\n\nConvert PDFs, images, and other documents to Markdown or other formats. Supports table/formula recognition, OCR, multiple output formats, and batch mode.\n\n```bash\nmineru-open-api extract report.pdf                         # Markdown to stdout\nmineru-open-api extract report.pdf -f html                 # HTML to stdout\nmineru-open-api extract report.pdf -o ./out/               # Save to directory\nmineru-open-api extract report.pdf -o ./out/ -f md,docx    # Multiple formats\nmineru-open-api extract *.pdf -o ./results/                # Batch extract\nmineru-open-api extract --list files.txt -o ./results/     # Batch from file list\nmineru-open-api extract https://example.com/doc.pdf        # Extract from URL\ncat doc.pdf | mineru-open-api extract --stdin -o ./out/    # From stdin\n```\n\n#### extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html`, `latex`, `docx` (comma-separated) |\n| `--model` | | _(auto)_ | Model: `vlm`, `pipeline`, `html` (see below) |\n| `--ocr` | | `false` | Enable OCR for scanned documents |\n| `--formula` | | `true` | Enable/disable formula recognition |\n| `--table` | | `true` | Enable/disable table recognition |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10,15` |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read input list from file (one path per line) |\n\n| `--concurrency` | | `0` | Batch concurrency (0 = server default) |\n\n#### Model comparison: vlm vs pipeline\n\n| | `vlm` | `pipeline` |\n|---|---|---|\n| Parsing accuracy | Higher — better at complex layouts, mixed content | Standard |\n| Hallucination risk | May produce hallucinated text in rare cases | **No hallucination** — biggest advantage |\n| Best for | Academic papers, complex tables, intricate layouts | General documents where fidelity matters most |\n\nWhen the user values accuracy and the document has complex formatting, suggest `--model vlm`. When the user prioritizes reliability and no-hallucination guarantee, suggest `--model pipeline` (or omit `--model` to use auto).\n\n### crawl — Web page extraction (token required)\n\nFetch web pages and convert to Markdown.\n\n```bash\nmineru-open-api crawl https://example.com/article              # Markdown to stdout\nmineru-open-api crawl https://example.com/article -f html      # HTML to stdout\nmineru-open-api crawl https://example.com/article -o ./out/     # Save to file\nmineru-open-api crawl url1 url2 -o ./pages/                     # Batch crawl\nmineru-open-api crawl --list urls.txt -o ./pages/               # Batch from file list\n```\n\n#### crawl flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html` (comma-separated) |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read URL list from file (one per line) |\n| `--stdin-list` | | `false` | Read URL list from stdin |\n| `--concurrency` | | `0` | Batch concurrency |\n\n### auth — Authentication management\n\n```bash\nmineru-open-api auth              # Interactive token setup\nmineru-open-api auth --verify     # Verify current token is valid\nmineru-open-api auth --show       # Show current token source and masked value\n```\n\n\n## Supported `--language` values\n\nThe `--language` flag accepts the following values (default: `ch`). Used by both `flash-extract` and `extract`. Values are organized by script/language family — each value covers all languages listed in its group.\n\n### Standalone language packs\n\nFor specific languages or CJK combinations.\n\n| Value | Included languages | 说明 |\n|-------|-------------------|------|\n| `ch` | Chinese, English, Chinese Traditional | 中英文（默认值） |\n| `ch_server` | Chinese, English, Chinese Traditional, Japanese | 繁体、手写体 |\n| `en` | English | 纯英文 |\n| `japan` | Chinese, English, Chinese Traditional, Japanese | 日文为主 |\n| `korean` | Korean, English | 韩文 |\n| `chinese_cht` | Chinese, English, Chinese Traditional, Japanese | 繁体中文为主 |\n| `ta` | Tamil, English | 泰米尔文 |\n| `te` | Telugu, English | 泰卢固文 |\n| `ka` | Kannada | 卡纳达文 |\n| `el` | Greek, English | 希腊文 |\n| `th` | Thai, English | 泰文 |\n\n### Language family packs\n\nOne value covers many languages sharing the same script system.\n\n| Value | Script/Family | Included languages |\n|-------|--------------|-------------------|\n| `latin` | Latin script (拉丁语系) | French, German, Afrikaans, Italian, Spanish, Bosnian, Portuguese, Czech, Welsh, Danish, Estonian, Irish, Croatian, Uzbek, Hungarian, Serbian (Latin), Indonesian, Occitan, Icelandic, Lithuanian, Maori, Malay, Dutch, Norwegian, Polish, Slovak, Slovenian, Albanian, Swedish, Swahili, Tagalog, Turkish, Latin, Azerbaijani, Kurdish, Latvian, Maltese, Pali, Romanian, Vietnamese, Finnish, Basque, Galician, Luxembourgish, Romansh, Catalan, Quechua |\n| `arabic` | Arabic script (阿拉伯语系) | Arabic, Persian, Uyghur, Urdu, Pashto, Kurdish, Sindhi, Balochi, English |\n| `cyrillic` | Cyrillic script (西里尔语系) | Russian, Belarusian, Ukrainian, Serbian (Cyrillic), Bulgarian, Mongolian, Abkhazian, Adyghe, Kabardian, Avar, Dargin, Ingush, Chechen, Lak, Lezgin, Tabasaran, Kazakh, Kyrgyz, Tajik, Macedonian, Tatar, Chuvash, Bashkir, Malian, Moldovan, Udmurt, Komi, Ossetian, Buryat, Kalmyk, Tuvan, Sakha, Karakalpak, English |\n| `east_slavic` | East Slavic (东斯拉夫语系) | Russian, Belarusian, Ukrainian, English |\n| `devanagari` | Devanagari script (天城文语系) | Hindi, Marathi, Nepali, Bihari, Maithili, Angika, Bhojpuri, Magahi, Santali, Newari, Konkani, Sanskrit, Haryanvi, English |\n\n\n\n\n\n## Output behavior\n\n- **No `-o` flag**: result goes to stdout; status/progress messages go to stderr\n- **With `-o` flag**: result saved to file/directory; progress messages on stderr\n- **Batch mode** (`extract`/`crawl` only): requires `-o` to specify output directory\n- **Binary formats** (`docx`, `extract` only): cannot output to stdout, must use `-o`\n- Markdown output includes extracted images saved alongside the `.md` file\n\n\n\n### General rules\n\nWhen using this skill on behalf of the user:\n\n- **Quote file paths** that contain spaces or special characters with double quotes in commands. Example: `mineru-open-api extract \"report 01.pdf\"`, NOT `mineru-open-api extract report 01.pdf`.\n- **Don't run commands blindly on errors** — if the user asks \"提取失败了怎么办\", explain the exit code and troubleshooting steps instead of re-running the command.\n- **Installation questions** (\"mineru 怎么安装\") should be answered with the install instructions, not by running `mineru-open-api extract`.\n- **DOCX as input is supported** — if the user asks \"这个 Word 文档能转 Markdown 吗\", use `mineru-open-api extract file.docx` or `mineru-open-api flash-extract file.docx`. Note: `.doc` format is only supported by `extract`, not `flash-extract`.\n- For **stdout mode** (no `-o`), only one text format can be output at a time. If the user wants multiple formats, suggest adding `-o`.\n\n### Choosing between flash-extract and extract\n\nThe agent MUST follow this decision logic:\n\n1. **Default to `flash-extract`** when:\n   - User has NOT configured a token (no `~/.mineru/config.yaml`, no `MINERU_TOKEN` env)\n   - User wants a quick/simple extraction without mentioning tables, formulas, OCR, or specific formats\n   - File is **under 10 MB and under 20 pages**\n   - User is trying the tool for the first time\n\n2. **Use `extract`** when:\n   - User explicitly asks for OCR on scanned documents\n   - User requests non-Markdown output formats (html, latex, docx, json)\n   - User needs batch processing (multiple files)\n   - File is **over 10 MB or over 20 pages** (exceeds flash-extract limits)\n   - User has a token configured and wants precision-quality extraction\n\n3. **If unsure**, prefer `flash-extract` — it's faster and requires no setup, but check file size first.\n\n4. When the user does NOT specify an output path (`-o`), the agent MUST generate a default output directory to prevent file overwrites. Use:\n\n```\n~/MinerU-Skill/<name>_<hash>/\n```\n**Naming rules:**\n\n- `<name>`: derived from the source, then **sanitized** for safe directory names.\n  - For URLs: last path segment (e.g. `https://arxiv.org/pdf/2509.22186` → `2509.22186`)\n  - For local files: filename without extension (e.g. `report.pdf` → `report`)\n  - **Sanitization**: replace spaces and shell-unsafe characters (`space`, `(`, `)`, `[`, `]`, `&`, `'`, `\"`, `!`, `#`, `$`, `` ` ``) with `_`. Collapse consecutive `_` into one. Keep alphanumeric, `-`, `_`, `.`, and CJK characters.\n- `<hash>`: first 6 characters of the MD5 hash of the **full original source path or URL** (before sanitization). This ensures:\n  - Different URLs with similar basenames get unique directories\n  - Re-running the same source reuses the same directory (idempotent)\n**How the agent should generate the hash:**\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5sum | cut -c1-6\n```\n\nOr on macOS:\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5 | cut -c1-6\n```\n\n5. When the user asks to **upgrade** or  **update** this skill, the agent MUST re-install the CLI binary to ensure the latest commands are available. Run the install command **before** using any new features\n\n\n### flash-extract limit handling\n\nWhen `flash-extract` fails due to file limits or rate limiting, the agent MUST provide a clear explanation and suggest `extract` as the upgrade path:\n\n\n\n**Rate limited (HTTP 429):**\n\n> `flash-extract` 请求频率超出限制（每 IP 有每分钟/每小时的请求上限）。你可以：\n> 1. 稍等几分钟后重试\n> 2. 前往 https://mineru.net/apiManage/token 创建 Token，使用 `mineru-open-api extract` 获取独立配额，不受 IP 限频影响\n\n**Pre-check**: if the agent can determine the file size before running `flash-extract` (e.g. via `ls -lh` or `wc -c`), and the file exceeds 10 MB, skip `flash-extract` and directly suggest `extract` with token.\n\n### Post-extraction friendly hints\n\nAfter `flash-extract` completes successfully, the agent MUST append a brief hint:\n\n> Tip: `flash-extract` 为快速免登录模式（限 10MB/20页，仅输出 Markdown）。如需解析更大文件、OCR 扫描件或多格式导出，请前往 https://mineru.net/apiManage/token 创建 Token，运行 `mineru-open-api auth` 配置后使用 `mineru-open-api extract`。\n\nKeep the hint to ONE short sentence. Do NOT repeat the hint if the user has already seen it in this session.\n\n\n\n**Examples:**\n\n| Source | `<name>` | Output directory |\n|--------|----------|-----------------|\n| `https://arxiv.org/pdf/2509.22186` | `2509.22186` | `~/MinerU-Skill/2509.22186_a3f2b1/` |\n| `https://arxiv.org/pdf/2509.200` | `2509.200` | `~/MinerU-Skill/2509.200_c7e9d4/` |\n\n\n\n**When the user specifies `-o`**: use the user's path as-is, do NOT override with the default directory.\n\n## Exit codes\n\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 0 | Success | — |\n| 1 | General API or unknown error | Check network connectivity; retry; use `--verbose` for details |\n| 2 | Invalid parameters / usage error | Check command syntax and flag values |\n\n| 4 | File too large or page limit exceeded | For `flash-extract`: file must be under 10 MB / 20 pages; switch to `extract` with token for higher limits. For `extract`: split the file or use `--pages` |\n| 5 | Extraction failed | The document may be corrupted or unsupported; try a different `--model` |\n| 6 | Timeout | Increase with `--timeout`; large files may need 600+ seconds \n\n## Troubleshooting\n\n- **\"no API token found\"** (on `extract`/`crawl`): Run `mineru-open-api auth` or set `MINERU_TOKEN` env variable. Or use `flash-extract` which needs no token.\n- **Timeout on large files**: Increase with `--timeout 1600` (seconds)\n- **Batch fails partially**: Check stderr for per-file status; succeeded files are still saved\n- **Binary format to stdout**: Use `-o` flag; `docx` cannot stream to stdout\n- **Private deployment**: Use `--base-url https://your-server.com/api`\n- **Extraction quality is poor**: Try `mineru-open-api extract` with `--model vlm` for complex layouts, or `--ocr` for scanned documents\n\n- **HTTP 429 on flash-extract**: IP rate limit hit. Wait a few minutes or switch to `mineru-open-api extract` with token.\n\n## Notes\n\n- `extract` requires a token but provides precision-featured extraction\n- All status/progress messages go to stderr; only document content goes to stdout\n- Batch mode automatically polls the API with exponential backoff\n- Token is stored in `~/.mineru/config.yaml` after `mineru-open-api auth`\n\n\n\n## Reporting Issues\n\n- Skill issues: Open an issue at https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli\n- agent-browser CLI issues: Open an issue at https://github.com/MinerU-Extract/mineru-document-extractor\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1775030902334\n}\n\nFile v1.0.9:CONTRIBUTING.md\n\n# Contributing to MinerU CLI Skill\n\nThis skill wraps the `mineru-open-api` CLI. Determine where the problem lies before reporting issues.\n\n## Issue Reporting Guide\n\n### Open an issue in this repository if\n\n- The skill documentation is unclear or missing\n- Examples in SKILL.md do not work as described\n- You need help using the CLI with this skill wrapper\n- The skill is missing a command or flag that the CLI supports\n\n### Open an issue at the mineru-open-cli repository if\n\n- The CLI crashes or throws errors\n- Commands do not behave as documented\n- You found a bug in document extraction or web crawling\n- You need a new feature in the CLI itself\n\n## Before Opening an Issue\n\n1. Install the latest version:\n\n   ```bash\n   npm install -g mineru-open-api@latest\n   ```\n\n2. Test the command in your terminal to isolate the issue:\n\n   ```bash\n   mineru-open-api auth --verify\n   mineru-open-api extract test.pdf\n   ```\n\n3. Check your authentication:\n\n   ```bash\n   mineru-open-api auth --show\n   ```\n\n## Issue Report Template\n\n```\n**Command:** mineru-open-api extract report.pdf -o ./out/\n**Expected:** Markdown output saved to ./out/report.md\n**Actual:** [describe what happened]\n**OS:** [e.g. macOS 14, Ubuntu 22.04]\n```\n\n## Adding New Commands to the Skill\n\nUpdate SKILL.md when the upstream CLI adds new commands or flags:\n\n- Keep the Installation and Authentication sections current\n- Add new commands in the correct category (extract/crawl/auth/status)\n- Include usage examples for every new flag\n- Update the exit codes table if new codes are added\n\nArchive v1.0.8: 3 files, 8400 bytes\n\nFiles: _meta.json (128b), CONTRIBUTING.md (1555b), SKILL.md (18218b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: mineru\ndescription: MinerU document extraction CLI that converts PDFs, images, and web pages into Markdown, HTML, LaTeX, or DOCX via the MinerU API. Supports token-free flash extraction for quick start, precision extraction with table/formula recognition, web crawling, batch processing, and piped workflows.\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - Crawling web pages to Markdown\n  - Batch document processing\n  - OCR on scanned documents\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Parsing document content\n  - Reading PDF files\n  - Extracting tables from documents\n  - Converting Word documents\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"📄\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# Document Extraction with mineru-open-api\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\nOr via Go (macOS/Linux):\n\n```bash\ngo install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest\n```\n\n### Verify installation\n\n```bash\nmineru-open-api version\n```\n\n## Two extraction modes\n\n| | `flash-extract` | `extract` |\n|---|---|---|\n| Token required | No | Yes (`mineru-open-api auth`) |\n| Speed | Fast | Normal |\n| Table recognition | No | Yes |\n| Formula recognition | No | Yes |\n| OCR | Yes | Yes |\n| Output formats | Markdown only | md, html, latex, docx, json |\n| Batch mode | No | Yes |\n| Model selection | pipeline | Yes (vlm, pipeline, MinerU-HTML) |\n| File size limit | **10 MB** | Much higher |\n| Page limit | **20 pages** | Much higher |\n| Rate limit | Per-IP per-minute cap | Based on API plan |\n| Best for | Quick start, small/simple docs | Large docs, tables, production |\n\n### flash-extract limits\n\n| Limit | Value |\n|-------|-------|\n| File size | Max **10 MB** |\n| Page count | Max **20 pages** |\n| Supported types | PDF, Images (png/jpg/jpeg/jp2/webp/gif/bmp), Docx, PPTx |\n| IP rate limit | Per-minute request caps (HTTP 429 when exceeded) |\n\nWhen any limit is exceeded, the agent should suggest switching to `extract` with a token (create at https://mineru.net/apiManage/token), which has significantly higher limits.\n\n\n## Core workflow\n\n1. **Start fast** (no token): `mineru-open-api flash-extract <file>` for quick Markdown conversion\n2. **Need more?** Create token at https://mineru.net/apiManage/token, run `mineru-open-api auth`, then use `mineru-open-api extract` for tables, formulas, OCR, multi-format, and batch\n3. **Web pages**: `mineru-open-api crawl <url>` to convert web content\n4. **Check results**: output goes to stdout (default) or `-o` directory\n\n\n## Authentication\n\nOnly required for `extract` and `crawl`. Not needed for `flash-extract`.\n\nConfigure your API token (create one at https://mineru.net/apiManage/token):\n\n```bash\nmineru-open-api auth                    # Interactive token setup\nexport MINERU_TOKEN=\"your-token\"  # Or set via environment variable\n```\n\nToken resolution order: `--token` flag > `MINERU_TOKEN` env > `~/.mineru/config.yaml`.\n\n## Supported input formats\n\n| Format | `flash-extract` | `extract` |\n|--------|:-:|:-:|\n| PDF (`.pdf`) | Yes | Yes |\n| Images (`.png`, `.jpg`, `.jpeg`, `.jp2`, `.webp`, `.gif`, `.bmp`) | Yes | Yes |\n| Word (`.docx`) | Yes | Yes |\n| Word (`.doc`) | No | Yes |\n| PowerPoint (`.pptx`) | Yes | Yes |\n| PowerPoint (`.ppt`) | No | Yes |\n| HTML (`.html`) | No | Yes |\n| URLs (remote files) | Yes | Yes |\n\nThe `crawl` command accepts any HTTP/HTTPS URL and extracts web page content.\n\n## Commands\n\n### flash-extract — Quick extraction (no token needed)\n\nFast, token-free document extraction. Outputs Markdown only. No table recognition. Limited to **10 MB / 20 pages** per file, with IP-based rate limiting.\n\n```bash\nmineru-open-api flash-extract report.pdf                     # Markdown to stdout\nmineru-open-api flash-extract report.pdf -o ./out/           # Save to file\nmineru-open-api flash-extract https://example.com/doc.pdf    # URL mode\nmineru-open-api flash-extract report.pdf --language en       # Specify language\nmineru-open-api flash-extract report.pdf --pages 1-10        # Page range\n```\n\n#### flash-extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10` |\n| `--timeout` | | `900` | Timeout in seconds |\n\n### extract — Precision extraction (token required)\n\nConvert PDFs, images, and other documents to Markdown or other formats. Supports table/formula recognition, OCR, multiple output formats, and batch mode.\n\n```bash\nmineru-open-api extract report.pdf                         # Markdown to stdout\nmineru-open-api extract report.pdf -f html                 # HTML to stdout\nmineru-open-api extract report.pdf -o ./out/               # Save to directory\nmineru-open-api extract report.pdf -o ./out/ -f md,docx    # Multiple formats\nmineru-open-api extract *.pdf -o ./results/                # Batch extract\nmineru-open-api extract --list files.txt -o ./results/     # Batch from file list\nmineru-open-api extract https://example.com/doc.pdf        # Extract from URL\ncat doc.pdf | mineru-open-api extract --stdin -o ./out/    # From stdin\n```\n\n#### extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html`, `latex`, `docx` (comma-separated) |\n| `--model` | | _(auto)_ | Model: `vlm`, `pipeline`, `html` (see below) |\n| `--ocr` | | `false` | Enable OCR for scanned documents |\n| `--formula` | | `true` | Enable/disable formula recognition |\n| `--table` | | `true` | Enable/disable table recognition |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10,15` |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read input list from file (one path per line) |\n\n| `--concurrency` | | `0` | Batch concurrency (0 = server default) |\n\n#### Model comparison: vlm vs pipeline\n\n| | `vlm` | `pipeline` |\n|---|---|---|\n| Parsing accuracy | Higher — better at complex layouts, mixed content | Standard |\n| Hallucination risk | May produce hallucinated text in rare cases | **No hallucination** — biggest advantage |\n| Best for | Academic papers, complex tables, intricate layouts | General documents where fidelity matters most |\n\nWhen the user values accuracy and the document has complex formatting, suggest `--model vlm`. When the user prioritizes reliability and no-hallucination guarantee, suggest `--model pipeline` (or omit `--model` to use auto).\n\n### crawl — Web page extraction (token required)\n\nFetch web pages and convert to Markdown.\n\n```bash\nmineru-open-api crawl https://example.com/article              # Markdown to stdout\nmineru-open-api crawl https://example.com/article -f html      # HTML to stdout\nmineru-open-api crawl https://example.com/article -o ./out/     # Save to file\nmineru-open-api crawl url1 url2 -o ./pages/                     # Batch crawl\nmineru-open-api crawl --list urls.txt -o ./pages/               # Batch from file list\n```\n\n#### crawl flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html` (comma-separated) |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read URL list from file (one per line) |\n| `--stdin-list` | | `false` | Read URL list from stdin |\n| `--concurrency` | | `0` | Batch concurrency |\n\n### auth — Authentication management\n\n```bash\nmineru-open-api auth              # Interactive token setup\nmineru-open-api auth --verify     # Verify current token is valid\nmineru-open-api auth --show       # Show current token source and masked value\n```\n\n\n## Supported `--language` values\n\nThe `--language` flag accepts the following values (default: `ch`). Used by both `flash-extract` and `extract`. Values are organized by script/language family — each value covers all languages listed in its group.\n\n### Standalone language packs\n\nFor specific languages or CJK combinations.\n\n| Value | Included languages | 说明 |\n|-------|-------------------|------|\n| `ch` | Chinese, English, Chinese Traditional | 中英文（默认值） |\n| `ch_server` | Chinese, English, Chinese Traditional, Japanese | 繁体、手写体 |\n| `en` | English | 纯英文 |\n| `japan` | Chinese, English, Chinese Traditional, Japanese | 日文为主 |\n| `korean` | Korean, English | 韩文 |\n| `chinese_cht` | Chinese, English, Chinese Traditional, Japanese | 繁体中文为主 |\n| `ta` | Tamil, English | 泰米尔文 |\n| `te` | Telugu, English | 泰卢固文 |\n| `ka` | Kannada | 卡纳达文 |\n| `el` | Greek, English | 希腊文 |\n| `th` | Thai, English | 泰文 |\n\n### Language family packs\n\nOne value covers many languages sharing the same script system.\n\n| Value | Script/Family | Included languages |\n|-------|--------------|-------------------|\n| `latin` | Latin script (拉丁语系) | French, German, Afrikaans, Italian, Spanish, Bosnian, Portuguese, Czech, Welsh, Danish, Estonian, Irish, Croatian, Uzbek, Hungarian, Serbian (Latin), Indonesian, Occitan, Icelandic, Lithuanian, Maori, Malay, Dutch, Norwegian, Polish, Slovak, Slovenian, Albanian, Swedish, Swahili, Tagalog, Turkish, Latin, Azerbaijani, Kurdish, Latvian, Maltese, Pali, Romanian, Vietnamese, Finnish, Basque, Galician, Luxembourgish, Romansh, Catalan, Quechua |\n| `arabic` | Arabic script (阿拉伯语系) | Arabic, Persian, Uyghur, Urdu, Pashto, Kurdish, Sindhi, Balochi, English |\n| `cyrillic` | Cyrillic script (西里尔语系) | Russian, Belarusian, Ukrainian, Serbian (Cyrillic), Bulgarian, Mongolian, Abkhazian, Adyghe, Kabardian, Avar, Dargin, Ingush, Chechen, Lak, Lezgin, Tabasaran, Kazakh, Kyrgyz, Tajik, Macedonian, Tatar, Chuvash, Bashkir, Malian, Moldovan, Udmurt, Komi, Ossetian, Buryat, Kalmyk, Tuvan, Sakha, Karakalpak, English |\n| `east_slavic` | East Slavic (东斯拉夫语系) | Russian, Belarusian, Ukrainian, English |\n| `devanagari` | Devanagari script (天城文语系) | Hindi, Marathi, Nepali, Bihari, Maithili, Angika, Bhojpuri, Magahi, Santali, Newari, Konkani, Sanskrit, Haryanvi, English |\n\n\n\n\n\n## Output behavior\n\n- **No `-o` flag**: result goes to stdout; status/progress messages go to stderr\n- **With `-o` flag**: result saved to file/directory; progress messages on stderr\n- **Batch mode** (`extract`/`crawl` only): requires `-o` to specify output directory\n- **Binary formats** (`docx`, `extract` only): cannot output to stdout, must use `-o`\n- Markdown output includes extracted images saved alongside the `.md` file\n\n\n\n### General rules\n\nWhen using this skill on behalf of the user:\n\n- **Quote file paths** that contain spaces or special characters with double quotes in commands. Example: `mineru-open-api extract \"report 01.pdf\"`, NOT `mineru-open-api extract report 01.pdf`.\n- **Don't run commands blindly on errors** — if the user asks \"提取失败了怎么办\", explain the exit code and troubleshooting steps instead of re-running the command.\n- **Installation questions** (\"mineru 怎么安装\") should be answered with the install instructions, not by running `mineru-open-api extract`.\n- **DOCX as input is supported** — if the user asks \"这个 Word 文档能转 Markdown 吗\", use `mineru-open-api extract file.docx` or `mineru-open-api flash-extract file.docx`. Note: `.doc` format is only supported by `extract`, not `flash-extract`.\n- **Table extraction** — tables are only recognized by `extract` (not `flash-extract`). If the user mentions tables, use `extract`.\n- For **stdout mode** (no `-o`), only one text format can be output at a time. If the user wants multiple formats, suggest adding `-o`.\n\n### Choosing between flash-extract and extract\n\nThe agent MUST follow this decision logic:\n\n1. **Default to `flash-extract`** when:\n   - User has NOT configured a token (no `~/.mineru/config.yaml`, no `MINERU_TOKEN` env)\n   - User wants a quick/simple extraction without mentioning tables, formulas, OCR, or specific formats\n   - File is **under 10 MB and under 20 pages**\n   - User is trying the tool for the first time\n\n2. **Use `extract`** when:\n   - User explicitly asks for table recognition, formula recognition, or OCR\n   - User requests non-Markdown output formats (html, latex, docx, json)\n   - User needs batch processing (multiple files)\n   - File is **over 10 MB or over 20 pages** (exceeds flash-extract limits)\n   - User has a token configured and wants precision-quality extraction\n\n3. **If unsure**, prefer `flash-extract` — it's faster and requires no setup, but check file size first.\n\n4. When the user does NOT specify an output path (`-o`), the agent MUST generate a default output directory to prevent file overwrites. Use:\n\n```\n~/MinerU-Skill/<name>_<hash>/\n```\n**Naming rules:**\n\n- `<name>`: derived from the source, then **sanitized** for safe directory names.\n  - For URLs: last path segment (e.g. `https://arxiv.org/pdf/2509.22186` → `2509.22186`)\n  - For local files: filename without extension (e.g. `report.pdf` → `report`)\n  - **Sanitization**: replace spaces and shell-unsafe characters (`space`, `(`, `)`, `[`, `]`, `&`, `'`, `\"`, `!`, `#`, `$`, `` ` ``) with `_`. Collapse consecutive `_` into one. Keep alphanumeric, `-`, `_`, `.`, and CJK characters.\n- `<hash>`: first 6 characters of the MD5 hash of the **full original source path or URL** (before sanitization). This ensures:\n  - Different URLs with similar basenames get unique directories\n  - Re-running the same source reuses the same directory (idempotent)\n**How the agent should generate the hash:**\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5sum | cut -c1-6\n```\n\nOr on macOS:\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5 | cut -c1-6\n```\n\n5. When the user asks to **upgrade** or  **update** this skill, the agent MUST re-install the CLI binary to ensure the latest commands are available. Run the install command **before** using any new features\n\n\n### flash-extract limit handling\n\nWhen `flash-extract` fails due to file limits or rate limiting, the agent MUST provide a clear explanation and suggest `extract` as the upgrade path:\n\n\n\n**Rate limited (HTTP 429):**\n\n> `flash-extract` 请求频率超出限制（每 IP 有每分钟/每小时的请求上限）。你可以：\n> 1. 稍等几分钟后重试\n> 2. 前往 https://mineru.net/apiManage/token 创建 Token，使用 `mineru-open-api extract` 获取独立配额，不受 IP 限频影响\n\n**Pre-check**: if the agent can determine the file size before running `flash-extract` (e.g. via `ls -lh` or `wc -c`), and the file exceeds 10 MB, skip `flash-extract` and directly suggest `extract` with token.\n\n### Post-extraction friendly hints\n\nAfter `flash-extract` completes successfully, the agent MUST append a brief hint:\n\n> Tip: `flash-extract` 为快速免登录模式（限 10MB/20页，不含表格识别）。如需解析更大文件、表格/公式识别或多格式导出，请前往 https://mineru.net/apiManage/token 创建 Token，运行 `mineru-open-api auth` 配置后使用 `mineru-open-api extract`。\n\nKeep the hint to ONE short sentence. Do NOT repeat the hint if the user has already seen it in this session.\n\n\n\n**Examples:**\n\n| Source | `<name>` | Output directory |\n|--------|----------|-----------------|\n| `https://arxiv.org/pdf/2509.22186` | `2509.22186` | `~/MinerU-Skill/2509.22186_a3f2b1/` |\n| `https://arxiv.org/pdf/2509.200` | `2509.200` | `~/MinerU-Skill/2509.200_c7e9d4/` |\n\n\n\n**When the user specifies `-o`**: use the user's path as-is, do NOT override with the default directory.\n\n## Exit codes\n\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 0 | Success | — |\n| 1 | General API or unknown error | Check network connectivity; retry; use `--verbose` for details |\n| 2 | Invalid parameters / usage error | Check command syntax and flag values |\n\n| 4 | File too large or page limit exceeded | For `flash-extract`: file must be under 10 MB / 20 pages; switch to `extract` with token for higher limits. For `extract`: split the file or use `--pages` |\n| 5 | Extraction failed | The document may be corrupted or unsupported; try a different `--model` |\n| 6 | Timeout | Increase with `--timeout`; large files may need 600+ seconds \n\n## Troubleshooting\n\n- **\"no API token found\"** (on `extract`/`crawl`): Run `mineru-open-api auth` or set `MINERU_TOKEN` env variable. Or use `flash-extract` which needs no token.\n- **Timeout on large files**: Increase with `--timeout 1600` (seconds)\n- **Batch fails partially**: Check stderr for per-file status; succeeded files are still saved\n- **Binary format to stdout**: Use `-o` flag; `docx` cannot stream to stdout\n- **Private deployment**: Use `--base-url https://your-server.com/api`\n- **Extraction quality is poor**: Try `mineru-open-api extract` with `--model vlm` for complex layouts, or `--ocr` for scanned documents\n- **Tables not extracted**: `flash-extract` does NOT support tables. Use `mineru-open-api extract` with a token.\n- **HTTP 429 on flash-extract**: IP rate limit hit. Wait a few minutes or switch to `mineru-open-api extract` with token.\n\n## Notes\n\n- `extract` requires a token but provides precision-featured extraction\n- All status/progress messages go to stderr; only document content goes to stdout\n- Batch mode automatically polls the API with exponential backoff\n- Token is stored in `~/.mineru/config.yaml` after `mineru-open-api auth`\n\n\n\n## Reporting Issues\n\n- Skill issues: Open an issue at https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli\n- agent-browser CLI issues: Open an issue at https://github.com/MinerU-Extract/mineru-document-extractor\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1774854194466\n}\n\nFile v1.0.8:CONTRIBUTING.md\n\n# Contributing to MinerU CLI Skill\n\nThis skill wraps the `mineru-open-api` CLI. Determine where the problem lies before reporting issues.\n\n## Issue Reporting Guide\n\n### Open an issue in this repository if\n\n- The skill documentation is unclear or missing\n- Examples in SKILL.md do not work as described\n- You need help using the CLI with this skill wrapper\n- The skill is missing a command or flag that the CLI supports\n\n### Open an issue at the mineru-open-cli repository if\n\n- The CLI crashes or throws errors\n- Commands do not behave as documented\n- You found a bug in document extraction or web crawling\n- You need a new feature in the CLI itself\n\n## Before Opening an Issue\n\n1. Install the latest version:\n\n   ```bash\n   npm install -g mineru-open-api@latest\n   ```\n\n2. Test the command in your terminal to isolate the issue:\n\n   ```bash\n   mineru-open-api auth --verify\n   mineru-open-api extract test.pdf\n   ```\n\n3. Check your authentication:\n\n   ```bash\n   mineru-open-api auth --show\n   ```\n\n## Issue Report Template\n\n```\n**Command:** mineru-open-api extract report.pdf -o ./out/\n**Expected:** Markdown output saved to ./out/report.md\n**Actual:** [describe what happened]\n**OS:** [e.g. macOS 14, Ubuntu 22.04]\n```\n\n## Adding New Commands to the Skill\n\nUpdate SKILL.md when the upstream CLI adds new commands or flags:\n\n- Keep the Installation and Authentication sections current\n- Add new commands in the correct category (extract/crawl/auth/status)\n- Include usage examples for every new flag\n- Update the exit codes table if new codes are added\n\nArchive v1.0.7: 3 files, 8401 bytes\n\nFiles: _meta.json (128b), CONTRIBUTING.md (1555b), SKILL.md (18218b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: mineru\ndescription: MinerU document extraction CLI that converts PDFs, images, and web pages into Markdown, HTML, LaTeX, or DOCX via the MinerU API. Supports token-free flash extraction for quick start, precision extraction with table/formula recognition, web crawling, batch processing, and piped workflows.\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - Crawling web pages to Markdown\n  - Batch document processing\n  - OCR on scanned documents\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Parsing document content\n  - Reading PDF files\n  - Extracting tables from documents\n  - Converting Word documents\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"📄\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# Document Extraction with mineru-open-api\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\nOr via Go (macOS/Linux):\n\n```bash\ngo install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest\n```\n\n### Verify installation\n\n```bash\nmineru-open-api version\n```\n\n## Two extraction modes\n\n| | `flash-extract` | `extract` |\n|---|---|---|\n| Token required | No | Yes (`mineru-open-api auth`) |\n| Speed | Fast | Normal |\n| Table recognition | No | Yes |\n| Formula recognition | No | Yes |\n| OCR | Yes | Yes |\n| Output formats | Markdown only | md, html, latex, docx, json |\n| Batch mode | No | Yes |\n| Model selection | pipeline | Yes (vlm, pipeline, MinerU-HTML) |\n| File size limit | **10 MB** | Much higher |\n| Page limit | **20 pages** | Much higher |\n| Rate limit | Per-IP per-minute cap | Based on API plan |\n| Best for | Quick start, small/simple docs | Large docs, tables, production |\n\n### flash-extract limits\n\n| Limit | Value |\n|-------|-------|\n| File size | Max **10 MB** |\n| Page count | Max **20 pages** |\n| Supported types | PDF, Images (png/jpg/jpeg/jp2/webp/gif/bmp), Docx, PPTx |\n| IP rate limit | Per-minute request caps (HTTP 429 when exceeded) |\n\nWhen any limit is exceeded, the agent should suggest switching to `extract` with a token (create at https://mineru.net/apiManage/token), which has significantly higher limits.\n\n\n## Core workflow\n\n1. **Start fast** (no token): `mineru-open-api flash-extract <file>` for quick Markdown conversion\n2. **Need more?** Create token at https://mineru.net/apiManage/token, run `mineru-open-api auth`, then use `mineru-open-api extract` for tables, formulas, OCR, multi-format, and batch\n3. **Web pages**: `mineru-open-api crawl <url>` to convert web content\n4. **Check results**: output goes to stdout (default) or `-o` directory\n\n\n## Authentication\n\nOnly required for `extract` and `crawl`. Not needed for `flash-extract`.\n\nConfigure your API token (create one at https://mineru.net/apiManage/token):\n\n```bash\nmineru-open-api auth                    # Interactive token setup\nexport MINERU_TOKEN=\"your-token\"  # Or set via environment variable\n```\n\nToken resolution order: `--token` flag > `MINERU_TOKEN` env > `~/.mineru/config.yaml`.\n\n## Supported input formats\n\n| Format | `flash-extract` | `extract` |\n|--------|:-:|:-:|\n| PDF (`.pdf`) | Yes | Yes |\n| Images (`.png`, `.jpg`, `.jpeg`, `.jp2`, `.webp`, `.gif`, `.bmp`) | Yes | Yes |\n| Word (`.docx`) | Yes | Yes |\n| Word (`.doc`) | No | Yes |\n| PowerPoint (`.pptx`) | Yes | Yes |\n| PowerPoint (`.ppt`) | No | Yes |\n| HTML (`.html`) | No | Yes |\n| URLs (remote files) | Yes | Yes |\n\nThe `crawl` command accepts any HTTP/HTTPS URL and extracts web page content.\n\n## Commands\n\n### flash-extract — Quick extraction (no token needed)\n\nFast, token-free document extraction. Outputs Markdown only. No table recognition. Limited to **10 MB / 20 pages** per file, with IP-based rate limiting.\n\n```bash\nmineru-open-api flash-extract report.pdf                     # Markdown to stdout\nmineru-open-api flash-extract report.pdf -o ./out/           # Save to file\nmineru-open-api flash-extract https://example.com/doc.pdf    # URL mode\nmineru-open-api flash-extract report.pdf --language en       # Specify language\nmineru-open-api flash-extract report.pdf --pages 1-10        # Page range\n```\n\n#### flash-extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10` |\n| `--timeout` | | `900` | Timeout in seconds |\n\n### extract — Precision extraction (token required)\n\nConvert PDFs, images, and other documents to Markdown or other formats. Supports table/formula recognition, OCR, multiple output formats, and batch mode.\n\n```bash\nmineru-open-api extract report.pdf                         # Markdown to stdout\nmineru-open-api extract report.pdf -f html                 # HTML to stdout\nmineru-open-api extract report.pdf -o ./out/               # Save to directory\nmineru-open-api extract report.pdf -o ./out/ -f md,docx    # Multiple formats\nmineru-open-api extract *.pdf -o ./results/                # Batch extract\nmineru-open-api extract --list files.txt -o ./results/     # Batch from file list\nmineru-open-api extract https://example.com/doc.pdf        # Extract from URL\ncat doc.pdf | mineru-open-api extract --stdin -o ./out/    # From stdin\n```\n\n#### extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html`, `latex`, `docx` (comma-separated) |\n| `--model` | | _(auto)_ | Model: `vlm`, `pipeline`, `html` (see below) |\n| `--ocr` | | `false` | Enable OCR for scanned documents |\n| `--formula` | | `true` | Enable/disable formula recognition |\n| `--table` | | `true` | Enable/disable table recognition |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10,15` |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read input list from file (one path per line) |\n\n| `--concurrency` | | `0` | Batch concurrency (0 = server default) |\n\n#### Model comparison: vlm vs pipeline\n\n| | `vlm` | `pipeline` |\n|---|---|---|\n| Parsing accuracy | Higher — better at complex layouts, mixed content | Standard |\n| Hallucination risk | May produce hallucinated text in rare cases | **No hallucination** — biggest advantage |\n| Best for | Academic papers, complex tables, intricate layouts | General documents where fidelity matters most |\n\nWhen the user values accuracy and the document has complex formatting, suggest `--model vlm`. When the user prioritizes reliability and no-hallucination guarantee, suggest `--model pipeline` (or omit `--model` to use auto).\n\n### crawl — Web page extraction (token required)\n\nFetch web pages and convert to Markdown.\n\n```bash\nmineru-open-api crawl https://example.com/article              # Markdown to stdout\nmineru-open-api crawl https://example.com/article -f html      # HTML to stdout\nmineru-open-api crawl https://example.com/article -o ./out/     # Save to file\nmineru-open-api crawl url1 url2 -o ./pages/                     # Batch crawl\nmineru-open-api crawl --list urls.txt -o ./pages/               # Batch from file list\n```\n\n#### crawl flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html` (comma-separated) |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read URL list from file (one per line) |\n| `--stdin-list` | | `false` | Read URL list from stdin |\n| `--concurrency` | | `0` | Batch concurrency |\n\n### auth — Authentication management\n\n```bash\nmineru-open-api auth              # Interactive token setup\nmineru-open-api auth --verify     # Verify current token is valid\nmineru-open-api auth --show       # Show current token source and masked value\n```\n\n\n## Supported `--language` values\n\nThe `--language` flag accepts the following values (default: `ch`). Used by both `flash-extract` and `extract`. Values are organized by script/language family — each value covers all languages listed in its group.\n\n### Standalone language packs\n\nFor specific languages or CJK combinations.\n\n| Value | Included languages | 说明 |\n|-------|-------------------|------|\n| `ch` | Chinese, English, Chinese Traditional | 中英文（默认值） |\n| `ch_server` | Chinese, English, Chinese Traditional, Japanese | 繁体、手写体 |\n| `en` | English | 纯英文 |\n| `japan` | Chinese, English, Chinese Traditional, Japanese | 日文为主 |\n| `korean` | Korean, English | 韩文 |\n| `chinese_cht` | Chinese, English, Chinese Traditional, Japanese | 繁体中文为主 |\n| `ta` | Tamil, English | 泰米尔文 |\n| `te` | Telugu, English | 泰卢固文 |\n| `ka` | Kannada | 卡纳达文 |\n| `el` | Greek, English | 希腊文 |\n| `th` | Thai, English | 泰文 |\n\n### Language family packs\n\nOne value covers many languages sharing the same script system.\n\n| Value | Script/Family | Included languages |\n|-------|--------------|-------------------|\n| `latin` | Latin script (拉丁语系) | French, German, Afrikaans, Italian, Spanish, Bosnian, Portuguese, Czech, Welsh, Danish, Estonian, Irish, Croatian, Uzbek, Hungarian, Serbian (Latin), Indonesian, Occitan, Icelandic, Lithuanian, Maori, Malay, Dutch, Norwegian, Polish, Slovak, Slovenian, Albanian, Swedish, Swahili, Tagalog, Turkish, Latin, Azerbaijani, Kurdish, Latvian, Maltese, Pali, Romanian, Vietnamese, Finnish, Basque, Galician, Luxembourgish, Romansh, Catalan, Quechua |\n| `arabic` | Arabic script (阿拉伯语系) | Arabic, Persian, Uyghur, Urdu, Pashto, Kurdish, Sindhi, Balochi, English |\n| `cyrillic` | Cyrillic script (西里尔语系) | Russian, Belarusian, Ukrainian, Serbian (Cyrillic), Bulgarian, Mongolian, Abkhazian, Adyghe, Kabardian, Avar, Dargin, Ingush, Chechen, Lak, Lezgin, Tabasaran, Kazakh, Kyrgyz, Tajik, Macedonian, Tatar, Chuvash, Bashkir, Malian, Moldovan, Udmurt, Komi, Ossetian, Buryat, Kalmyk, Tuvan, Sakha, Karakalpak, English |\n| `east_slavic` | East Slavic (东斯拉夫语系) | Russian, Belarusian, Ukrainian, English |\n| `devanagari` | Devanagari script (天城文语系) | Hindi, Marathi, Nepali, Bihari, Maithili, Angika, Bhojpuri, Magahi, Santali, Newari, Konkani, Sanskrit, Haryanvi, English |\n\n\n\n\n\n## Output behavior\n\n- **No `-o` flag**: result goes to stdout; status/progress messages go to stderr\n- **With `-o` flag**: result saved to file/directory; progress messages on stderr\n- **Batch mode** (`extract`/`crawl` only): requires `-o` to specify output directory\n- **Binary formats** (`docx`, `extract` only): cannot output to stdout, must use `-o`\n- Markdown output includes extracted images saved alongside the `.md` file\n\n\n\n### General rules\n\nWhen using this skill on behalf of the user:\n\n- **Quote file paths** that contain spaces or special characters with double quotes in commands. Example: `mineru-open-api extract \"report 01.pdf\"`, NOT `mineru-open-api extract report 01.pdf`.\n- **Don't run commands blindly on errors** — if the user asks \"提取失败了怎么办\", explain the exit code and troubleshooting steps instead of re-running the command.\n- **Installation questions** (\"mineru 怎么安装\") should be answered with the install instructions, not by running `mineru-open-api extract`.\n- **DOCX as input is supported** — if the user asks \"这个 Word 文档能转 Markdown 吗\", use `mineru-open-api extract file.docx` or `mineru-open-api flash-extract file.docx`. Note: `.doc` format is only supported by `extract`, not `flash-extract`.\n- **Table extraction** — tables are only recognized by `extract` (not `flash-extract`). If the user mentions tables, use `extract`.\n- For **stdout mode** (no `-o`), only one text format can be output at a time. If the user wants multiple formats, suggest adding `-o`.\n\n### Choosing between flash-extract and extract\n\nThe agent MUST follow this decision logic:\n\n1. **Default to `flash-extract`** when:\n   - User has NOT configured a token (no `~/.mineru/config.yaml`, no `MINERU_TOKEN` env)\n   - User wants a quick/simple extraction without mentioning tables, formulas, OCR, or specific formats\n   - File is **under 10 MB and under 20 pages**\n   - User is trying the tool for the first time\n\n2. **Use `extract`** when:\n   - User explicitly asks for table recognition, formula recognition, or OCR\n   - User requests non-Markdown output formats (html, latex, docx, json)\n   - User needs batch processing (multiple files)\n   - File is **over 10 MB or over 20 pages** (exceeds flash-extract limits)\n   - User has a token configured and wants precision-quality extraction\n\n3. **If unsure**, prefer `flash-extract` — it's faster and requires no setup, but check file size first.\n\n4. When the user does NOT specify an output path (`-o`), the agent MUST generate a default output directory to prevent file overwrites. Use:\n\n```\n~/MinerU-Skill/<name>_<hash>/\n```\n**Naming rules:**\n\n- `<name>`: derived from the source, then **sanitized** for safe directory names.\n  - For URLs: last path segment (e.g. `https://arxiv.org/pdf/2509.22186` → `2509.22186`)\n  - For local files: filename without extension (e.g. `report.pdf` → `report`)\n  - **Sanitization**: replace spaces and shell-unsafe characters (`space`, `(`, `)`, `[`, `]`, `&`, `'`, `\"`, `!`, `#`, `$`, `` ` ``) with `_`. Collapse consecutive `_` into one. Keep alphanumeric, `-`, `_`, `.`, and CJK characters.\n- `<hash>`: first 6 characters of the MD5 hash of the **full original source path or URL** (before sanitization). This ensures:\n  - Different URLs with similar basenames get unique directories\n  - Re-running the same source reuses the same directory (idempotent)\n**How the agent should generate the hash:**\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5sum | cut -c1-6\n```\n\nOr on macOS:\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5 | cut -c1-6\n```\n\n5. When the user asks to **upgrade** or  **update** this skill, the agent MUST re-install the CLI binary to ensure the latest commands are available. Run the install command **before** using any new features\n\n\n### flash-extract limit handling\n\nWhen `flash-extract` fails due to file limits or rate limiting, the agent MUST provide a clear explanation and suggest `extract` as the upgrade path:\n\n\n\n**Rate limited (HTTP 429):**\n\n> `flash-extract` 请求频率超出限制（每 IP 有每分钟/每小时的请求上限）。你可以：\n> 1. 稍等几分钟后重试\n> 2. 前往 https://mineru.net/apiManage/token 创建 Token，使用 `mineru-open-api extract` 获取独立配额，不受 IP 限频影响\n\n**Pre-check**: if the agent can determine the file size before running `flash-extract` (e.g. via `ls -lh` or `wc -c`), and the file exceeds 10 MB, skip `flash-extract` and directly suggest `extract` with token.\n\n### Post-extraction friendly hints\n\nAfter `flash-extract` completes successfully, the agent MUST append a brief hint:\n\n> Tip: `flash-extract` 为快速免登录模式（限 10MB/20页，不含表格识别）。如需解析更大文件、表格/公式识别或多格式导出，请前往 https://mineru.net/apiManage/token 创建 Token，运行 `mineru-open-api auth` 配置后使用 `mineru-open-api extract`。\n\nKeep the hint to ONE short sentence. Do NOT repeat the hint if the user has already seen it in this session.\n\n\n\n**Examples:**\n\n| Source | `<name>` | Output directory |\n|--------|----------|-----------------|\n| `https://arxiv.org/pdf/2509.22186` | `2509.22186` | `~/MinerU-Skill/2509.22186_a3f2b1/` |\n| `https://arxiv.org/pdf/2509.200` | `2509.200` | `~/MinerU-Skill/2509.200_c7e9d4/` |\n\n\n\n**When the user specifies `-o`**: use the user's path as-is, do NOT override with the default directory.\n\n## Exit codes\n\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 0 | Success | — |\n| 1 | General API or unknown error | Check network connectivity; retry; use `--verbose` for details |\n| 2 | Invalid parameters / usage error | Check command syntax and flag values |\n\n| 4 | File too large or page limit exceeded | For `flash-extract`: file must be under 10 MB / 20 pages; switch to `extract` with token for higher limits. For `extract`: split the file or use `--pages` |\n| 5 | Extraction failed | The document may be corrupted or unsupported; try a different `--model` |\n| 6 | Timeout | Increase with `--timeout`; large files may need 600+ seconds \n\n## Troubleshooting\n\n- **\"no API token found\"** (on `extract`/`crawl`): Run `mineru-open-api auth` or set `MINERU_TOKEN` env variable. Or use `flash-extract` which needs no token.\n- **Timeout on large files**: Increase with `--timeout 1600` (seconds)\n- **Batch fails partially**: Check stderr for per-file status; succeeded files are still saved\n- **Binary format to stdout**: Use `-o` flag; `docx` cannot stream to stdout\n- **Private deployment**: Use `--base-url https://your-server.com/api`\n- **Extraction quality is poor**: Try `mineru-open-api extract` with `--model vlm` for complex layouts, or `--ocr` for scanned documents\n- **Tables not extracted**: `flash-extract` does NOT support tables. Use `mineru-open-api extract` with a token.\n- **HTTP 429 on flash-extract**: IP rate limit hit. Wait a few minutes or switch to `mineru-open-api extract` with token.\n\n## Notes\n\n- `extract` requires a token but provides precision-featured extraction\n- All status/progress messages go to stderr; only document content goes to stdout\n- Batch mode automatically polls the API with exponential backoff\n- Token is stored in `~/.mineru/config.yaml` after `mineru-open-api auth`\n\n\n\n## Reporting Issues\n\n- Skill issues: Open an issue at https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli\n- agent-browser CLI issues: Open an issue at https://github.com/MinerU-Extract/mineru-document-extractor\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1774362760693\n}\n\nFile v1.0.7:CONTRIBUTING.md\n\n# Contributing to MinerU CLI Skill\n\nThis skill wraps the `mineru-open-api` CLI. Determine where the problem lies before reporting issues.\n\n## Issue Reporting Guide\n\n### Open an issue in this repository if\n\n- The skill documentation is unclear or missing\n- Examples in SKILL.md do not work as described\n- You need help using the CLI with this skill wrapper\n- The skill is missing a command or flag that the CLI supports\n\n### Open an issue at the mineru-open-cli repository if\n\n- The CLI crashes or throws errors\n- Commands do not behave as documented\n- You found a bug in document extraction or web crawling\n- You need a new feature in the CLI itself\n\n## Before Opening an Issue\n\n1. Install the latest version:\n\n   ```bash\n   npm install -g mineru-open-api@latest\n   ```\n\n2. Test the command in your terminal to isolate the issue:\n\n   ```bash\n   mineru-open-api auth --verify\n   mineru-open-api extract test.pdf\n   ```\n\n3. Check your authentication:\n\n   ```bash\n   mineru-open-api auth --show\n   ```\n\n## Issue Report Template\n\n```\n**Command:** mineru-open-api extract report.pdf -o ./out/\n**Expected:** Markdown output saved to ./out/report.md\n**Actual:** [describe what happened]\n**OS:** [e.g. macOS 14, Ubuntu 22.04]\n```\n\n## Adding New Commands to the Skill\n\nUpdate SKILL.md when the upstream CLI adds new commands or flags:\n\n- Keep the Installation and Authentication sections current\n- Add new commands in the correct category (extract/crawl/auth/status)\n- Include usage examples for every new flag\n- Update the exit codes table if new codes are added\n\nArchive v1.0.6: 3 files, 8685 bytes\n\nFiles: _meta.json (128b), CONTRIBUTING.md (1555b), SKILL.md (19083b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: mineru\ndescription: MinerU document extraction CLI that converts PDFs, images, and web pages into Markdown, HTML, LaTeX, or DOCX via the MinerU API. Supports token-free flash extraction for quick start, precision extraction with table/formula recognition, web crawling, batch processing, and piped workflows.\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - Crawling web pages to Markdown\n  - Batch document processing\n  - OCR on scanned documents\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Parsing document content\n  - Reading PDF files\n  - Extracting tables from documents\n  - Converting Word documents\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"📄\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# Document Extraction with mineru-open-api\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\nOr via Go (macOS/Linux):\n\n```bash\ngo install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest\n```\n\n### Verify installation\n\n```bash\nmineru-open-api version\n```\n\n## Two extraction modes\n\n| | `flash-extract` | `extract` |\n|---|---|---|\n| Token required | No | Yes (`mineru-open-api auth`) |\n| Speed | Fast | Normal |\n| Table recognition | No | Yes |\n| Formula recognition | No | Yes |\n| OCR | Yes | Yes |\n| Output formats | Markdown only | md, html, latex, docx, json |\n| Batch mode | No | Yes |\n| Model selection | pipeline | Yes (vlm, pipeline, MinerU-HTML) |\n| File size limit | **10 MB** | Much higher |\n| Page limit | **20 pages** | Much higher |\n| Rate limit | Per-IP per-minute cap | Based on API plan |\n| Best for | Quick start, small/simple docs | Large docs, tables, production |\n\n### flash-extract limits\n\n| Limit | Value |\n|-------|-------|\n| File size | Max **10 MB** |\n| Page count | Max **20 pages** |\n| Supported types | PDF, Images (png/jpg/jpeg/jp2/webp/gif/bmp), Docx, PPTx |\n| IP rate limit | Per-minute request caps (HTTP 429 when exceeded) |\n\nWhen any limit is exceeded, the agent should suggest switching to `extract` with a token (create at https://mineru.net/apiManage/token), which has significantly higher limits.\n\n\n## Core workflow\n\n1. **Always try `flash-extract` first** — for any input (local file or URL), run `mineru-open-api flash-extract <file-or-url>`. It's fast, no login needed, and handles URLs to documents directly.\n2. **If `flash-extract` fails** — read the exit code and decide:\n   - Exit 4 (file too large / too many pages) → switch to `mineru-open-api extract` with a token\n   - Exit 7 (quota exceeded) → wait for reset or switch to `mineru-open-api extract` with a token\n   - Other errors → check troubleshooting section\n3. **Need tables, formulas, or multi-format?** Create token at https://mineru.net/apiManage/token, run `mineru-open-api auth`, then use `mineru-open-api extract`\n4. **Web pages** (HTML content, NOT document URLs): `mineru-open-api crawl <url>`\n5. **Check results**: output goes to stdout (default) or `-o` directory\n\n\n## Authentication\n\nOnly required for `extract` and `crawl`. Not needed for `flash-extract`.\n\nConfigure your API token (create one at https://mineru.net/apiManage/token):\n\n```bash\nmineru-open-api auth                    # Interactive token setup\nexport MINERU_TOKEN=\"your-token\"  # Or set via environment variable\n```\n\nToken resolution order: `--token` flag > `MINERU_TOKEN` env > `~/.mineru/config.yaml`.\n\n## Supported input formats\n\n| Format | `flash-extract` | `extract` |\n|--------|:-:|:-:|\n| PDF (`.pdf`) | Yes | Yes |\n| Images (`.png`, `.jpg`, `.jpeg`, `.jp2`, `.webp`, `.gif`, `.bmp`) | Yes | Yes |\n| Word (`.docx`) | Yes | Yes |\n| Word (`.doc`) | No | Yes |\n| PowerPoint (`.pptx`) | Yes | Yes |\n| PowerPoint (`.ppt`) | No | Yes |\n| HTML (`.html`) | No | Yes |\n| URLs (remote files) | Yes | Yes |\n\nThe `crawl` command accepts any HTTP/HTTPS URL and extracts web page content.\n\n## Commands\n\n### flash-extract — Quick extraction (no token needed)\n\nFast, token-free document extraction. Outputs Markdown only. No table recognition. Limited to **10 MB / 20 pages** per file, with IP-based rate limiting.\n\n```bash\nmineru-open-api flash-extract report.pdf                     # Markdown to stdout\nmineru-open-api flash-extract report.pdf -o ./out/           # Save to file\nmineru-open-api flash-extract https://example.com/doc.pdf    # URL mode\nmineru-open-api flash-extract report.pdf --language en       # Specify language\nmineru-open-api flash-extract report.pdf --pages 1-10        # Page range\n```\n\n#### flash-extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10` |\n| `--timeout` | | `900` | Timeout in seconds |\n\n### extract — Precision extraction (token required)\n\nConvert PDFs, images, and other documents to Markdown or other formats. Supports table/formula recognition, OCR, multiple output formats, and batch mode.\n\n```bash\nmineru-open-api extract report.pdf                         # Markdown to stdout\nmineru-open-api extract report.pdf -f html                 # HTML to stdout\nmineru-open-api extract report.pdf -o ./out/               # Save to directory\nmineru-open-api extract report.pdf -o ./out/ -f md,docx    # Multiple formats\nmineru-open-api extract *.pdf -o ./results/                # Batch extract\nmineru-open-api extract --list files.txt -o ./results/     # Batch from file list\nmineru-open-api extract https://example.com/doc.pdf        # Extract from URL\ncat doc.pdf | mineru-open-api extract --stdin -o ./out/    # From stdin\n```\n\n#### extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html`, `latex`, `docx` (comma-separated) |\n| `--model` | | _(auto)_ | Model: `vlm`, `pipeline`, `html` (see below) |\n| `--ocr` | | `false` | Enable OCR for scanned documents |\n| `--formula` | | `true` | Enable/disable formula recognition |\n| `--table` | | `true` | Enable/disable table recognition |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10,15` |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read input list from file (one path per line) |\n\n| `--concurrency` | | `0` | Batch concurrency (0 = server default) |\n\n#### Model comparison: vlm vs pipeline\n\n| | `vlm` | `pipeline` |\n|---|---|---|\n| Parsing accuracy | Higher — better at complex layouts, mixed content | Standard |\n| Hallucination risk | May produce hallucinated text in rare cases | **No hallucination** — biggest advantage |\n| Best for | Academic papers, complex tables, intricate layouts | General documents where fidelity matters most |\n\nWhen the user values accuracy and the document has complex formatting, suggest `--model vlm`. When the user prioritizes reliability and no-hallucination guarantee, suggest `--model pipeline` (or omit `--model` to use auto).\n\n### crawl — Web page extraction (token required)\n\nFetch web pages and convert to Markdown.\n\n```bash\nmineru-open-api crawl https://example.com/article              # Markdown to stdout\nmineru-open-api crawl https://example.com/article -f html      # HTML to stdout\nmineru-open-api crawl https://example.com/article -o ./out/     # Save to file\nmineru-open-api crawl url1 url2 -o ./pages/                     # Batch crawl\nmineru-open-api crawl --list urls.txt -o ./pages/               # Batch from file list\n```\n\n#### crawl flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html` (comma-separated) |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read URL list from file (one per line) |\n| `--stdin-list` | | `false` | Read URL list from stdin |\n| `--concurrency` | | `0` | Batch concurrency |\n\n### auth — Authentication management\n\n```bash\nmineru-open-api auth              # Interactive token setup\nmineru-open-api auth --verify     # Verify current token is valid\nmineru-open-api auth --show       # Show current token source and masked value\n```\n\n\n## Supported `--language` values\n\nThe `--language` flag accepts the following values (default: `ch`). Used by both `flash-extract` and `extract`. Values are organized by script/language family — each value covers all languages listed in its group.\n\n### Standalone language packs\n\nFor specific languages or CJK combinations.\n\n| Value | Included languages | 说明 |\n|-------|-------------------|------|\n| `ch` | Chinese, English, Chinese Traditional | 中英文（默认值） |\n| `ch_server` | Chinese, English, Chinese Traditional, Japanese | 繁体、手写体 |\n| `en` | English | 纯英文 |\n| `japan` | Chinese, English, Chinese Traditional, Japanese | 日文为主 |\n| `korean` | Korean, English | 韩文 |\n| `chinese_cht` | Chinese, English, Chinese Traditional, Japanese | 繁体中文为主 |\n| `ta` | Tamil, English | 泰米尔文 |\n| `te` | Telugu, English | 泰卢固文 |\n| `ka` | Kannada | 卡纳达文 |\n| `el` | Greek, English | 希腊文 |\n| `th` | Thai, English | 泰文 |\n\n### Language family packs\n\nOne value covers many languages sharing the same script system.\n\n| Value | Script/Family | Included languages |\n|-------|--------------|-------------------|\n| `latin` | Latin script (拉丁语系) | French, German, Afrikaans, Italian, Spanish, Bosnian, Portuguese, Czech, Welsh, Danish, Estonian, Irish, Croatian, Uzbek, Hungarian, Serbian (Latin), Indonesian, Occitan, Icelandic, Lithuanian, Maori, Malay, Dutch, Norwegian, Polish, Slovak, Slovenian, Albanian, Swedish, Swahili, Tagalog, Turkish, Latin, Azerbaijani, Kurdish, Latvian, Maltese, Pali, Romanian, Vietnamese, Finnish, Basque, Galician, Luxembourgish, Romansh, Catalan, Quechua |\n| `arabic` | Arabic script (阿拉伯语系) | Arabic, Persian, Uyghur, Urdu, Pashto, Kurdish, Sindhi, Balochi, English |\n| `cyrillic` | Cyrillic script (西里尔语系) | Russian, Belarusian, Ukrainian, Serbian (Cyrillic), Bulgarian, Mongolian, Abkhazian, Adyghe, Kabardian, Avar, Dargin, Ingush, Chechen, Lak, Lezgin, Tabasaran, Kazakh, Kyrgyz, Tajik, Macedonian, Tatar, Chuvash, Bashkir, Malian, Moldovan, Udmurt, Komi, Ossetian, Buryat, Kalmyk, Tuvan, Sakha, Karakalpak, English |\n| `east_slavic` | East Slavic (东斯拉夫语系) | Russian, Belarusian, Ukrainian, English |\n| `devanagari` | Devanagari script (天城文语系) | Hindi, Marathi, Nepali, Bihari, Maithili, Angika, Bhojpuri, Magahi, Santali, Newari, Konkani, Sanskrit, Haryanvi, English |\n\n\n\n\n\n## Output behavior\n\n- **No `-o` flag**: result goes to stdout; status/progress messages go to stderr\n- **With `-o` flag**: result saved to file/directory; progress messages on stderr\n- **Batch mode** (`extract`/`crawl` only): requires `-o` to specify output directory\n- **Binary formats** (`docx`, `extract` only): cannot output to stdout, must use `-o`\n- Markdown output includes extracted images saved alongside the `.md` file\n\n\n\n### General rules\n\nWhen using this skill on behalf of the user:\n\n- **Quote file paths** that contain spaces or special characters with double quotes in commands. Example: `mineru-open-api extract \"report 01.pdf\"`, NOT `mineru-open-api extract report 01.pdf`.\n- **Don't run commands blindly on errors** — if the user asks \"提取失败了怎么办\", explain the exit code and troubleshooting steps instead of re-running the command.\n- **Installation questions** (\"mineru 怎么安装\") should be answered with the install instructions, not by running `mineru-open-api extract`.\n- **DOCX as input is supported** — if the user asks \"这个 Word 文档能转 Markdown 吗\", use `mineru-open-api extract file.docx` or `mineru-open-api flash-extract file.docx`. Note: `.doc` format is only supported by `extract`, not `flash-extract`.\n- **Table extraction** — tables are only recognized by `extract` (not `flash-extract`). If the user mentions tables, use `extract`.\n- For **stdout mode** (no `-o`), only one text format can be output at a time. If the user wants multiple formats, suggest adding `-o`.\n\n### Choosing between flash-extract, extract, and crawl\n\n**Rule: always try `flash-extract` first** — whether the input is a local file OR a URL (e.g. `https://cdn-mineru.openxlab.org.cn/demo/example.pdf`). Do NOT assume a URL means \"web page\" and route to `crawl`. Let the CLI handle it and decide based on the result:\n\n1. **Always start with `flash-extract`** for any input (local file or URL):\n   - `mineru-open-api flash-extract report.pdf`\n   - `mineru-open-api flash-extract https://example.com/doc.pdf`\n   - If it succeeds → done.\n   - If it fails → read the error/exit code and switch accordingly (see below).\n\n2. **Switch to `extract`** only when:\n   - `flash-extract` fails with exit code 4 (file too large / too many pages)\n   - `flash-extract` fails with exit code 7 (quota exceeded)\n   - User explicitly asks for table recognition, formula recognition, or OCR\n   - User requests non-Markdown output formats (html, latex, docx, json)\n   - User needs batch processing (multiple files)\n\n3. **Use `crawl`** only when:\n   - User explicitly asks to extract a **web page** (HTML content), NOT a document file at a URL\n   - Example: \"帮我抓取这个网页内容\" → `crawl`\n   - Example: \"帮我解析这个 PDF\" + gives a URL → `flash-extract` (NOT crawl)\n\n4. **If unsure**, always prefer `flash-extract` — it handles both local files and URLs.\n\n4. When the user does NOT specify an output path (`-o`), the agent MUST generate a default output directory to prevent file overwrites. Use:\n\n```\n~/MinerU-Skill/<name>_<hash>/\n```\n**Naming rules:**\n\n- `<name>`: derived from the source, then **sanitized** for safe directory names.\n  - For URLs: last path segment (e.g. `https://arxiv.org/pdf/2509.22186` → `2509.22186`)\n  - For local files: filename without extension (e.g. `report.pdf` → `report`)\n  - **Sanitization**: replace spaces and shell-unsafe characters (`space`, `(`, `)`, `[`, `]`, `&`, `'`, `\"`, `!`, `#`, `$`, `` ` ``) with `_`. Collapse consecutive `_` into one. Keep alphanumeric, `-`, `_`, `.`, and CJK characters.\n- `<hash>`: first 6 characters of the MD5 hash of the **full original source path or URL** (before sanitization). This ensures:\n  - Different URLs with similar basenames get unique directories\n  - Re-running the same source reuses the same directory (idempotent)\n**How the agent should generate the hash:**\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5sum | cut -c1-6\n```\n\nOr on macOS:\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5 | cut -c1-6\n```\n\n5. When the user asks to **upgrade** or  **update** this skill, the agent MUST re-install the CLI binary to ensure the latest commands are available. Run the install command **before** using any new features\n\n\n### flash-extract limit handling\n\nWhen `flash-extract` fails due to file limits or rate limiting, the agent MUST provide a clear explanation and suggest `extract` as the upgrade path:\n\n\n\n**Rate limited (HTTP 429):**\n\n> `flash-extract` 请求频率超出限制（每 IP 有每分钟/每小时的请求上限）。你可以：\n> 1. 稍等几分钟后重试\n> 2. 前往 https://mineru.net/apiManage/token 创建 Token，使用 `mineru-open-api extract` 获取独立配额，不受 IP 限频影响\n\n**Pre-check**: if the agent can determine the file size before running `flash-extract` (e.g. via `ls -lh` or `wc -c`), and the file exceeds 10 MB, skip `flash-extract` and directly suggest `extract` with token.\n\n### Post-extraction friendly hints\n\nAfter `flash-extract` completes successfully, the agent MUST append a brief hint:\n\n> Tip: `flash-extract` 为快速免登录模式（限 10MB/20页，不含表格识别）。如需解析更大文件、表格/公式识别或多格式导出，请前往 https://mineru.net/apiManage/token 创建 Token，运行 `mineru-open-api auth` 配置后使用 `mineru-open-api extract`。\n\nKeep the hint to ONE short sentence. Do NOT repeat the hint if the user has already seen it in this session.\n\n\n\n**Examples:**\n\n| Source | `<name>` | Output directory |\n|--------|----------|-----------------|\n| `https://arxiv.org/pdf/2509.22186` | `2509.22186` | `~/MinerU-Skill/2509.22186_a3f2b1/` |\n| `https://arxiv.org/pdf/2509.200` | `2509.200` | `~/MinerU-Skill/2509.200_c7e9d4/` |\n\n\n\n**When the user specifies `-o`**: use the user's path as-is, do NOT override with the default directory.\n\n## Exit codes\n\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 0 | Success | — |\n| 1 | General API or unknown error | Check network connectivity; retry; use `--verbose` for details |\n| 2 | Invalid parameters / usage error | Check command syntax and flag values |\n\n| 4 | File too large or page limit exceeded | For `flash-extract`: file must be under 10 MB / 20 pages; switch to `extract` with token for higher limits. For `extract`: split the file or use `--pages` |\n| 5 | Extraction failed | The document may be corrupted or unsupported; try a different `--model` |\n| 6 | Timeout | Increase with `--timeout`; large files may need 600+ seconds \n\n## Troubleshooting\n\n- **\"no API token found\"** (on `extract`/`crawl`): Run `mineru-open-api auth` or set `MINERU_TOKEN` env variable. Or use `flash-extract` which needs no token.\n- **Timeout on large files**: Increase with `--timeout 1600` (seconds)\n- **Batch fails partially**: Check stderr for per-file status; succeeded files are still saved\n- **Binary format to stdout**: Use `-o` flag; `docx` cannot stream to stdout\n- **Private deployment**: Use `--base-url https://your-server.com/api`\n- **Extraction quality is poor**: Try `mineru-open-api extract` with `--model vlm` for complex layouts, or `--ocr` for scanned documents\n- **Tables not extracted**: `flash-extract` does NOT support tables. Use `mineru-open-api extract` with a token.\n- **HTTP 429 on flash-extract**: IP rate limit hit. Wait a few minutes or switch to `mineru-open-api extract` with token.\n\n## Notes\n\n- `extract` requires a token but provides precision-featured extraction\n- All status/progress messages go to stderr; only document content goes to stdout\n- Batch mode automatically polls the API with exponential backoff\n- Token is stored in `~/.mineru/config.yaml` after `mineru-open-api auth`\n\n\n\n## Reporting Issues\n\n- Skill issues: Open an issue at https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli\n- agent-browser CLI issues: Open an issue at https://github.com/MinerU-Extract/mineru-document-extractor\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1774359245339\n}\n\nFile v1.0.6:CONTRIBUTING.md\n\n# Contributing to MinerU CLI Skill\n\nThis skill wraps the `mineru-open-api` CLI. Determine where the problem lies before reporting issues.\n\n## Issue Reporting Guide\n\n### Open an issue in this repository if\n\n- The skill documentation is unclear or missing\n- Examples in SKILL.md do not work as described\n- You need help using the CLI with this skill wrapper\n- The skill is missing a command or flag that the CLI supports\n\n### Open an issue at the mineru-open-cli repository if\n\n- The CLI crashes or throws errors\n- Commands do not behave as documented\n- You found a bug in document extraction or web crawling\n- You need a new feature in the CLI itself\n\n## Before Opening an Issue\n\n1. Install the latest version:\n\n   ```bash\n   npm install -g mineru-open-api@latest\n   ```\n\n2. Test the command in your terminal to isolate the issue:\n\n   ```bash\n   mineru-open-api auth --verify\n   mineru-open-api extract test.pdf\n   ```\n\n3. Check your authentication:\n\n   ```bash\n   mineru-open-api auth --show\n   ```\n\n## Issue Report Template\n\n```\n**Command:** mineru-open-api extract report.pdf -o ./out/\n**Expected:** Markdown output saved to ./out/report.md\n**Actual:** [describe what happened]\n**OS:** [e.g. macOS 14, Ubuntu 22.04]\n```\n\n## Adding New Commands to the Skill\n\nUpdate SKILL.md when the upstream CLI adds new commands or flags:\n\n- Keep the Installation and Authentication sections current\n- Add new commands in the correct category (extract/crawl/auth/status)\n- Include usage examples for every new flag\n- Update the exit codes table if new codes are added\n\nArchive v1.0.5: 3 files, 8401 bytes\n\nFiles: _meta.json (128b), CONTRIBUTING.md (1555b), SKILL.md (18218b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: mineru\ndescription: MinerU document extraction CLI that converts PDFs, images, and web pages into Markdown, HTML, LaTeX, or DOCX via the MinerU API. Supports token-free flash extraction for quick start, precision extraction with table/formula recognition, web crawling, batch processing, and piped workflows.\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - Crawling web pages to Markdown\n  - Batch document processing\n  - OCR on scanned documents\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Parsing document content\n  - Reading PDF files\n  - Extracting tables from documents\n  - Converting Word documents\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"📄\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# Document Extraction with mineru-open-api\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\nOr via Go (macOS/Linux):\n\n```bash\ngo install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest\n```\n\n### Verify installation\n\n```bash\nmineru-open-api version\n```\n\n## Two extraction modes\n\n| | `flash-extract` | `extract` |\n|---|---|---|\n| Token required | No | Yes (`mineru-open-api auth`) |\n| Speed | Fast | Normal |\n| Table recognition | No | Yes |\n| Formula recognition | No | Yes |\n| OCR | Yes | Yes |\n| Output formats | Markdown only | md, html, latex, docx, json |\n| Batch mode | No | Yes |\n| Model selection | pipeline | Yes (vlm, pipeline, MinerU-HTML) |\n| File size limit | **10 MB** | Much higher |\n| Page limit | **20 pages** | Much higher |\n| Rate limit | Per-IP per-minute cap | Based on API plan |\n| Best for | Quick start, small/simple docs | Large docs, tables, production |\n\n### flash-extract limits\n\n| Limit | Value |\n|-------|-------|\n| File size | Max **10 MB** |\n| Page count | Max **20 pages** |\n| Supported types | PDF, Images (png/jpg/jpeg/jp2/webp/gif/bmp), Docx, PPTx |\n| IP rate limit | Per-minute request caps (HTTP 429 when exceeded) |\n\nWhen any limit is exceeded, the agent should suggest switching to `extract` with a token (create at https://mineru.net/apiManage/token), which has significantly higher limits.\n\n\n## Core workflow\n\n1. **Start fast** (no token): `mineru-open-api flash-extract <file>` for quick Markdown conversion\n2. **Need more?** Create token at https://mineru.net/apiManage/token, run `mineru-open-api auth`, then use `mineru-open-api extract` for tables, formulas, OCR, multi-format, and batch\n3. **Web pages**: `mineru-open-api crawl <url>` to convert web content\n4. **Check results**: output goes to stdout (default) or `-o` directory\n\n\n## Authentication\n\nOnly required for `extract` and `crawl`. Not needed for `flash-extract`.\n\nConfigure your API token (create one at https://mineru.net/apiManage/token):\n\n```bash\nmineru-open-api auth                    # Interactive token setup\nexport MINERU_TOKEN=\"your-token\"  # Or set via environment variable\n```\n\nToken resolution order: `--token` flag > `MINERU_TOKEN` env > `~/.mineru/config.yaml`.\n\n## Supported input formats\n\n| Format | `flash-extract` | `extract` |\n|--------|:-:|:-:|\n| PDF (`.pdf`) | Yes | Yes |\n| Images (`.png`, `.jpg`, `.jpeg`, `.jp2`, `.webp`, `.gif`, `.bmp`) | Yes | Yes |\n| Word (`.docx`) | Yes | Yes |\n| Word (`.doc`) | No | Yes |\n| PowerPoint (`.pptx`) | Yes | Yes |\n| PowerPoint (`.ppt`) | No | Yes |\n| HTML (`.html`) | No | Yes |\n| URLs (remote files) | Yes | Yes |\n\nThe `crawl` command accepts any HTTP/HTTPS URL and extracts web page content.\n\n## Commands\n\n### flash-extract — Quick extraction (no token needed)\n\nFast, token-free document extraction. Outputs Markdown only. No table recognition. Limited to **10 MB / 20 pages** per file, with IP-based rate limiting.\n\n```bash\nmineru-open-api flash-extract report.pdf                     # Markdown to stdout\nmineru-open-api flash-extract report.pdf -o ./out/           # Save to file\nmineru-open-api flash-extract https://example.com/doc.pdf    # URL mode\nmineru-open-api flash-extract report.pdf --language en       # Specify language\nmineru-open-api flash-extract report.pdf --pages 1-10        # Page range\n```\n\n#### flash-extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10` |\n| `--timeout` | | `900` | Timeout in seconds |\n\n### extract — Precision extraction (token required)\n\nConvert PDFs, images, and other documents to Markdown or other formats. Supports table/formula recognition, OCR, multiple output formats, and batch mode.\n\n```bash\nmineru-open-api extract report.pdf                         # Markdown to stdout\nmineru-open-api extract report.pdf -f html                 # HTML to stdout\nmineru-open-api extract report.pdf -o ./out/               # Save to directory\nmineru-open-api extract report.pdf -o ./out/ -f md,docx    # Multiple formats\nmineru-open-api extract *.pdf -o ./results/                # Batch extract\nmineru-open-api extract --list files.txt -o ./results/     # Batch from file list\nmineru-open-api extract https://example.com/doc.pdf        # Extract from URL\ncat doc.pdf | mineru-open-api extract --stdin -o ./out/    # From stdin\n```\n\n#### extract flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path (file or directory) |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html`, `latex`, `docx` (comma-separated) |\n| `--model` | | _(auto)_ | Model: `vlm`, `pipeline`, `html` (see below) |\n| `--ocr` | | `false` | Enable OCR for scanned documents |\n| `--formula` | | `true` | Enable/disable formula recognition |\n| `--table` | | `true` | Enable/disable table recognition |\n| `--language` | | `ch` | Document language |\n| `--pages` | | _(all)_ | Page range, e.g. `1-10,15` |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read input list from file (one path per line) |\n\n| `--concurrency` | | `0` | Batch concurrency (0 = server default) |\n\n#### Model comparison: vlm vs pipeline\n\n| | `vlm` | `pipeline` |\n|---|---|---|\n| Parsing accuracy | Higher — better at complex layouts, mixed content | Standard |\n| Hallucination risk | May produce hallucinated text in rare cases | **No hallucination** — biggest advantage |\n| Best for | Academic papers, complex tables, intricate layouts | General documents where fidelity matters most |\n\nWhen the user values accuracy and the document has complex formatting, suggest `--model vlm`. When the user prioritizes reliability and no-hallucination guarantee, suggest `--model pipeline` (or omit `--model` to use auto).\n\n### crawl — Web page extraction (token required)\n\nFetch web pages and convert to Markdown.\n\n```bash\nmineru-open-api crawl https://example.com/article              # Markdown to stdout\nmineru-open-api crawl https://example.com/article -f html      # HTML to stdout\nmineru-open-api crawl https://example.com/article -o ./out/     # Save to file\nmineru-open-api crawl url1 url2 -o ./pages/                     # Batch crawl\nmineru-open-api crawl --list urls.txt -o ./pages/               # Batch from file list\n```\n\n#### crawl flags\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--output` | `-o` | _(stdout)_ | Output path |\n| `--format` | `-f` | `md` | Output formats: `md`, `json`, `html` (comma-separated) |\n| `--timeout` | | `900`/`1800` | Timeout in seconds (single/batch) |\n| `--list` | | | Read URL list from file (one per line) |\n| `--stdin-list` | | `false` | Read URL list from stdin |\n| `--concurrency` | | `0` | Batch concurrency |\n\n### auth — Authentication management\n\n```bash\nmineru-open-api auth              # Interactive token setup\nmineru-open-api auth --verify     # Verify current token is valid\nmineru-open-api auth --show       # Show current token source and masked value\n```\n\n\n## Supported `--language` values\n\nThe `--language` flag accepts the following values (default: `ch`). Used by both `flash-extract` and `extract`. Values are organized by script/language family — each value covers all languages listed in its group.\n\n### Standalone language packs\n\nFor specific languages or CJK combinations.\n\n| Value | Included languages | 说明 |\n|-------|-------------------|------|\n| `ch` | Chinese, English, Chinese Traditional | 中英文（默认值） |\n| `ch_server` | Chinese, English, Chinese Traditional, Japanese | 繁体、手写体 |\n| `en` | English | 纯英文 |\n| `japan` | Chinese, English, Chinese Traditional, Japanese | 日文为主 |\n| `korean` | Korean, English | 韩文 |\n| `chinese_cht` | Chinese, English, Chinese Traditional, Japanese | 繁体中文为主 |\n| `ta` | Tamil, English | 泰米尔文 |\n| `te` | Telugu, English | 泰卢固文 |\n| `ka` | Kannada | 卡纳达文 |\n| `el` | Greek, English | 希腊文 |\n| `th` | Thai, English | 泰文 |\n\n### Language family packs\n\nOne value covers many languages sharing the same script system.\n\n| Value | Script/Family | Included languages |\n|-------|--------------|-------------------|\n| `latin` | Latin script (拉丁语系) | French, German, Afrikaans, Italian, Spanish, Bosnian, Portuguese, Czech, Welsh, Danish, Estonian, Irish, Croatian, Uzbek, Hungarian, Serbian (Latin), Indonesian, Occitan, Icelandic, Lithuanian, Maori, Malay, Dutch, Norwegian, Polish, Slovak, Slovenian, Albanian, Swedish, Swahili, Tagalog, Turkish, Latin, Azerbaijani, Kurdish, Latvian, Maltese, Pali, Romanian, Vietnamese, Finnish, Basque, Galician, Luxembourgish, Romansh, Catalan, Quechua |\n| `arabic` | Arabic script (阿拉伯语系) | Arabic, Persian, Uyghur, Urdu, Pashto, Kurdish, Sindhi, Balochi, English |\n| `cyrillic` | Cyrillic script (西里尔语系) | Russian, Belarusian, Ukrainian, Serbian (Cyrillic), Bulgarian, Mongolian, Abkhazian, Adyghe, Kabardian, Avar, Dargin, Ingush, Chechen, Lak, Lezgin, Tabasaran, Kazakh, Kyrgyz, Tajik, Macedonian, Tatar, Chuvash, Bashkir, Malian, Moldovan, Udmurt, Komi, Ossetian, Buryat, Kalmyk, Tuvan, Sakha, Karakalpak, English |\n| `east_slavic` | East Slavic (东斯拉夫语系) | Russian, Belarusian, Ukrainian, English |\n| `devanagari` | Devanagari script (天城文语系) | Hindi, Marathi, Nepali, Bihari, Maithili, Angika, Bhojpuri, Magahi, Santali, Newari, Konkani, Sanskrit, Haryanvi, English |\n\n\n\n\n\n## Output behavior\n\n- **No `-o` flag**: result goes to stdout; status/progress messages go to stderr\n- **With `-o` flag**: result saved to file/directory; progress messages on stderr\n- **Batch mode** (`extract`/`crawl` only): requires `-o` to specify output directory\n- **Binary formats** (`docx`, `extract` only): cannot output to stdout, must use `-o`\n- Markdown output includes extracted images saved alongside the `.md` file\n\n\n\n### General rules\n\nWhen using this skill on behalf of the user:\n\n- **Quote file paths** that contain spaces or special characters with double quotes in commands. Example: `mineru-open-api extract \"report 01.pdf\"`, NOT `mineru-open-api extract report 01.pdf`.\n- **Don't run commands blindly on errors** — if the user asks \"提取失败了怎么办\", explain the exit code and troubleshooting steps instead of re-running the command.\n- **Installation questions** (\"mineru 怎么安装\") should be answered with the install instructions, not by running `mineru-open-api extract`.\n- **DOCX as input is supported** — if the user asks \"这个 Word 文档能转 Markdown 吗\", use `mineru-open-api extract file.docx` or `mineru-open-api flash-extract file.docx`. Note: `.doc` format is only supported by `extract`, not `flash-extract`.\n- **Table extraction** — tables are only recognized by `extract` (not `flash-extract`). If the user mentions tables, use `extract`.\n- For **stdout mode** (no `-o`), only one text format can be output at a time. If the user wants multiple formats, suggest adding `-o`.\n\n### Choosing between flash-extract and extract\n\nThe agent MUST follow this decision logic:\n\n1. **Default to `flash-extract`** when:\n   - User has NOT configured a token (no `~/.mineru/config.yaml`, no `MINERU_TOKEN` env)\n   - User wants a quick/simple extraction without mentioning tables, formulas, OCR, or specific formats\n   - File is **under 10 MB and under 20 pages**\n   - User is trying the tool for the first time\n\n2. **Use `extract`** when:\n   - User explicitly asks for table recognition, formula recognition, or OCR\n   - User requests non-Markdown output formats (html, latex, docx, json)\n   - User needs batch processing (multiple files)\n   - File is **over 10 MB or over 20 pages** (exceeds flash-extract limits)\n   - User has a token configured and wants precision-quality extraction\n\n3. **If unsure**, prefer `flash-extract` — it's faster and requires no setup, but check file size first.\n\n4. When the user does NOT specify an output path (`-o`), the agent MUST generate a default output directory to prevent file overwrites. Use:\n\n```\n~/MinerU-Skill/<name>_<hash>/\n```\n**Naming rules:**\n\n- `<name>`: derived from the source, then **sanitized** for safe directory names.\n  - For URLs: last path segment (e.g. `https://arxiv.org/pdf/2509.22186` → `2509.22186`)\n  - For local files: filename without extension (e.g. `report.pdf` → `report`)\n  - **Sanitization**: replace spaces and shell-unsafe characters (`space`, `(`, `)`, `[`, `]`, `&`, `'`, `\"`, `!`, `#`, `$`, `` ` ``) with `_`. Collapse consecutive `_` into one. Keep alphanumeric, `-`, `_`, `.`, and CJK characters.\n- `<hash>`: first 6 characters of the MD5 hash of the **full original source path or URL** (before sanitization). This ensures:\n  - Different URLs with similar basenames get unique directories\n  - Re-running the same source reuses the same directory (idempotent)\n**How the agent should generate the hash:**\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5sum | cut -c1-6\n```\n\nOr on macOS:\n\n```bash\necho -n \"https://arxiv.org/pdf/2509.22186\" | md5 | cut -c1-6\n```\n\n5. When the user asks to **upgrade** or  **update** this skill, the agent MUST re-install the CLI binary to ensure the latest commands are available. Run the install command **before** using any new features\n\n\n### flash-extract limit handling\n\nWhen `flash-extract` fails due to file limits or rate limiting, the agent MUST provide a clear explanation and suggest `extract` as the upgrade path:\n\n\n\n**Rate limited (HTTP 429):**\n\n> `flash-extract` 请求频率超出限制（每 IP 有每分钟/每小时的请求上限）。你可以：\n> 1. 稍等几分钟后重试\n> 2. 前往 https://mineru.net/apiManage/token 创建 Token，使用 `mineru-open-api extract` 获取独立配额，不受 IP 限频影响\n\n**Pre-check**: if the agent can determine the file size before running `flash-extract` (e.g. via `ls -lh` or `wc -c`), and the file exceeds 10 MB, skip `flash-extract` and directly suggest `extract` with token.\n\n### Post-extraction friendly hints\n\nAfter `flash-extract` completes successfully, the agent MUST append a brief hint:\n\n> Tip: `flash-extract` 为快速免登录模式（限 10MB/20页，不含表格识别）。如需解析更大文件、表格/公式识别或多格式导出，请前往 https://mineru.net/apiManage/token 创建 Token，运行 `mineru-open-api auth` 配置后使用 `mineru-open-api extract`。\n\nKeep the hint to ONE short sentence. Do NOT repeat the hint if the user has already seen it in this session.\n\n\n\n**Examples:**\n\n| Source | `<name>` | Output directory |\n|--------|----------|-----------------|\n| `https://arxiv.org/pdf/2509.22186` | `2509.22186` | `~/MinerU-Skill/2509.22186_a3f2b1/` |\n| `https://arxiv.org/pdf/2509.200` | `2509.200` | `~/MinerU-Skill/2509.200_c7e9d4/` |\n\n\n\n**When the user specifies `-o`**: use the user's path as-is, do NOT override with the default directory.\n\n## Exit codes\n\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 0 | Success | — |\n| 1 | General API or unknown error | Check network connectivity; retry; use `--verbose` for details |\n| 2 | Invalid parameters / usage error | Check command syntax and flag values |\n\n| 4 | File too large or page limit exceeded | For `flash-extract`: file must be under 10 MB / 20 pages; switch to `extract` with token for higher limits. For `extract`: split the file or use `--pages` |\n| 5 | Extraction failed | The document may be corrupted or unsupported; try a different `--model` |\n| 6 | Timeout | Increase with `--timeout`; large files may need 600+ seconds \n\n## Troubleshooting\n\n- **\"no API token found\"** (on `extract`/`crawl`): Run `mineru-open-api auth` or set `MINERU_TOKEN` env variable. Or use `flash-extract` which needs no token.\n- **Timeout on large files**: Increase with `--timeout 1600` (seconds)\n- **Batch fails partially**: Check stderr for per-file status; succeeded files are still saved\n- **Binary format to stdout**: Use `-o` flag; `docx` cannot stream to stdout\n- **Private deployment**: Use `--base-url https://your-server.com/api`\n- **Extraction quality is poor**: Try `mineru-open-api extract` with `--model vlm` for complex layouts, or `--ocr` for scanned documents\n- **Tables not extracted**: `flash-extract` does NOT support tables. Use `mineru-open-api extract` with a token.\n- **HTTP 429 on flash-extract**: IP rate limit hit. Wait a few minutes or switch to `mineru-open-api extract` with token.\n\n## Notes\n\n- `extract` requires a token but provides precision-featured extraction\n- All status/progress messages go to stderr; only document content goes to stdout\n- Batch mode automatically polls the API with exponential backoff\n- Token is stored in `~/.mineru/config.yaml` after `mineru-open-api auth`\n\n\n\n## Reporting Issues\n\n- Skill issues: Open an issue at https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli\n- agent-browser CLI issues: Open an issue at https://github.com/MinerU-Extract/mineru-document-extractor\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1774355065390\n}\n\nFile v1.0.5:CONTRIBUTING.md\n\n# Contributing to MinerU CLI Skill\n\nThis skill wraps the `mineru-open-api` CLI. Determine where the problem lies before reporting issues.\n\n## Issue Reporting Guide\n\n### Open an issue in this repository if\n\n- The skill documentation is unclear or missing\n- Examples in SKILL.md do not work as described\n- You need help using the CLI with this skill wrapper\n- The skill is missing a command or flag that the CLI supports\n\n### Open an issue at the mineru-open-cli repository if\n\n- The CLI crashes or throws errors\n- Commands do not behave as documented\n- You found a bug in document extraction or web crawling\n- You need a new feature in the CLI itself\n\n## Before Opening an Issue\n\n1. Install the latest version:\n\n   ```bash\n   npm install -g mineru-open-api@latest\n   ```\n\n2. Test the command in your terminal to isolate the issue:\n\n   ```bash\n   mineru-open-api auth --verify\n   mineru-open-api extract test.pdf\n   ```\n\n3. Check your authentication:\n\n   ```bash\n   mineru-open-api auth --show\n   ```\n\n## Issue Report Tem\n\nArchive v1.0.3: 3 files, 8500 bytes\n\nFiles: _meta.json (128b), CONTRIBUTING.md (1592b), SKILL.md (18394b)","readmeExcerpt":"Skill: MinerU Doc Parser Owner: mineru-extract Summary: MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web page... Tags: latest:0.2.1 Version history: v0.2.1 | 2026-04-07T12:30:46.383Z | user Fix: republish with complete SKILL.md content (previous publish had truncated CLI documentation) v0.2.0 | 2026-04-07T12:15:24.","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"npm install -g mineru-open-api"},{"language":"bash","snippet":"go install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest"},{"language":"bash","snippet":"mineru-open-api version"},{"language":"bash","snippet":"mineru-open-api auth                    # Interactive token setup\nexport MINERU_TOKEN=\"your-token\"  # Or set via environment variable"},{"language":"bash","snippet":"mineru-open-api flash-extract report.pdf                     # Markdown to stdout\nmineru-open-api flash-extract report.pdf -o ./out/           # Save to file\nmineru-open-api flash-extract https://example.com/doc.pdf    # URL mode\nmineru-open-api flash-extract report.pdf --language en       # Specify language\nmineru-open-api flash-extract report.pdf --pages 1-10        # Page range"},{"language":"bash","snippet":"mineru-open-api extract report.pdf                         # Markdown to stdout\nmineru-open-api extract report.pdf -f html                 # HTML to stdout\nmineru-open-api extract report.pdf -o ./out/               # Save to directory\nmineru-open-api extract report.pdf -o ./out/ -f md,docx    # Multiple formats\nmineru-open-api extract *.pdf -o ./results/                # Batch extract\nmineru-open-api extract --list files.txt -o ./results/     # Batch from file list\nmineru-open-api extract https://example.com/doc.pdf        # Extract from URL\ncat doc.pdf | mineru-open-api extract --stdin -o ./out/    # From stdin"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: mineru-ai\ndescription: >\n  MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web pages into clean Markdown, HTML, LaTeX, or DOCX using advanced AI models.\n  Two extraction modes: flash-extract for instant zero-setup parsing (no login, no token, no configuration — just run and get results), and precision extract with AI-powered table recognition, mathematical formula recognition (LaTeX output), OCR for scanned PDFs and images, VLM (Vision Language Model) for complex layouts, and batch processing.\n  Use this skill when you need to: parse a PDF with AI, extract text from documents intelligently, convert PDF to Markdown using AI, OCR a scanned document, recognize tables in a PDF, extract LaTeX formulas from academic papers, batch convert documents, crawl web pages to Markdown, read and parse any document format, or get AI-assisted document understanding.\n  MinerU's AI engine handles complex document layouts, mixed-language content, nested tables, mathematical formulas, figures, and multi-column pages that traditional parsers fail on. Choose vlm model for highest accuracy or pipeline model for zero-hallucination reliability.\n  Supports 80+ languages including Chinese, English, Japanese, Korean, Arabic, Hindi, French, German, Spanish, Russian, and all major script families. Works with local files and URLs.\n  Built for AI developers, researchers, data scientists, and anyone who needs intelligent document parsing. Works as a Claude Code skill, MCP tool, or standalone CLI.\n  AI文档解析、智能PDF提取、AI驱动的文档转换、PDF转Markdown、扫描件OCR、表格智能识别、公式识别、学术论文AI解析、批量文档处理、网页转Markdown。MinerU AI引擎，支持复杂排版、多语言、嵌套表格、数学公式，传统解析器无法处理的文档都能轻松搞定。\nread_when:\n  - Extracting text from PDF documents\n  - Converting documents to Markdown\n  - AI document parsing\n  - OCR on scanned documents\n  - Parsing academic papers\n  - Converting PDF to HTML, LaTeX, or DOCX\n  - Batch document processing\n  - Crawling web pages to Markdown\n  - Table recognition in documents\n  - Formula extraction from papers\n  - Reading PDF files\n  - Quick document parsing without login\nmetadata: {\"openclaw\":{\"emoji\":\"🤖\",\"homepage\":\"https://mineru.net\",\"source\":\"https://github.com/MinerU-Extract/mineru-ai\",\"author\":\"OpenDataLab\",\"requires\":{\"bins\":[\"mineru-open-api\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"node\",\"package\":\"mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via npm\"},{\"id\":\"go\",\"kind\":\"go\",\"package\":\"github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api\",\"bins\":[\"mineru-open-api\"],\"label\":\"Install via go install\",\"os\":[\"darwin\",\"linux\"]}]}}\nallowed-tools: Bash(mineru-open-api:*)\n---\n\n# AI Document Parsing with MinerU\n\nIntelligent document extraction powered by AI — parse any document format into clean, structured output.\n\n## Installation\n\n```bash\nnpm install -g mineru-open-api\n```\n\nOr via Go (macOS/Linux):\n\n```bash\ngo install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest\n```\n\n##"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cm5w6xmv109061sz9nbc0p1836d96\",\n  \"slug\": \"mineru-ai\",\n  \"version\": \"0.2.1\",\n  \"publishedAt\": 1775565046383\n}"},{"path":"skill-card.md","content":"## Description:\n\nMinerU Doc Parser helps agents choose and run the MinerU CLI to parse PDFs, scanned documents, images, Office files, and web pages into Markdown, HTML, LaTeX, DOCX, or JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[mineru-extract](https://clawhub.ai/user/mineru-extract)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, researchers, and data teams use this skill to extract structured content from documents and web pages with MinerU. It guides agents between quick tokenless parsing and authenticated extraction for tables, formulas, OCR, batch jobs, and multiple output formats.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected documents or URLs may be sent to MinerU/OpenDataLab for processing.\n\nMitigation: Use the skill only for documents approved for external processing, and avoid confidential or regulated content unless the user has explicit approval.\n\nRisk: The skill installs a mutable global CLI package.\n\nMitigation: Prefer a pinned CLI version in an isolated environment and review package updates before use.\n\nRisk: MinerU API tokens can be exposed through shared terminals, scripts, logs, or screenshots.\n\nMitigation: Treat tokens as secrets, configure them through approved secret handling, and avoid pasting them into shared or recorded contexts.\n\n## Reference(s):\n\n- [MinerU Homepage](https://mineru.net)\n- [MinerU Source Metadata Link](https://github.com/MinerU-Extract/mineru-ai)\n- [MinerU CLI Issue Reference](https://github.com/opendatalab/MinerU-Ecosystem/tree/main/cli)\n- [MinerU Token Management](https://mineru.net/apiManage/token)\n- [ClawHub Skill Page](https://clawhub.ai/mineru-extract/skills/mineru-ai)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration, Markdown, Files]\n\n**Output Format:** [Markdown guidance with inline shell commands and file output paths]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May direct MinerU to produce Markdown, HTML, LaTeX, DOCX, JSON, or extracted image files depending on command flags.]\n\n## Skill Version(s):\n\n0.2.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web page... Skill: MinerU Doc Parser Owner: mineru-extract Summary: MinerU AI document parser — intelligent document extraction powered by AI. Parse PDFs, scanned documents, images, Word files, PowerPoint slides, and web page... Tags: latest:0.2.1 Version history: v0.2.1 | 2026-04-07T12:30:46.383Z | user Fix: republish with complete SKILL.md content (previous publish had truncated CLI documentation) v0.2.0 | 2026-04-07T12:15:24.","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1398,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:34:31.331Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:34:31.331Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T20:32:45.388Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}