OpenClaw/clawhub-security-signals huggingface dataset:
Skill: mrnsmh/openclaw-skill-contact-finder (version 0.1.0)

--- name: contact-finder description: Find professional emails and contacts from a name + company/domain using SerpAPI + OpenAI GPT-4o-mini. license: MIT metadata: author: Jack2 version: 1.0.0 tags: prospecting, email, contacts, serpapi, openai, lead-generation --- # contact-finder Find professional emails and contacts from a name + company/domain. Combines SerpAPI (Google Search) and OpenAI GPT-4o-mini to search, extract, and validate contacts. ## Usage ```bash python3 scripts/find_contacts.py --company "Acme Corp" --domain "acme.com" --name "John Doe" python3 scripts/find_contacts.py --company "Stripe" --domain "stripe.com" python3 scripts/find_contacts.py --company "OpenAI" --domain "openai.com" --name "Sam Altman" --output json ``` ## Options | Flag | Description | Required | |------|-------------|----------| | `--company` | Company name | ✅ | | `--domain` | Email domain (e.g. acme.com) | ✅ | | `--name` | Full name to search (optional) | ❌ | | `--output` | Output format: `table` (default) or `json` | ❌ | ## Output Returns a list of contacts with: - **email** — Found or guessed email address - **linkedin** — LinkedIn profile URL (if found) - **title** — Job title (if found) - **confidence** — `high` / `medium` / `low` ## Setup ```bash pip3 install openai requests ``` Set credentials in environment or edit `scripts/find_contacts.py`: - `SERPAPI_KEY` - `OPENAI_API_KEY` ## How It Works 1. Search Google via SerpAPI: `"name" site:domain email`, LinkedIn profiles 2. Generate common email format guesses (firstname@, f.lastname@, firstname.lastname@...) 3. Use GPT-4o-mini to extract/validate emails from search snippets 4. Score confidence based on source (direct find = high, pattern guess = low/medium) ## References See `references/patterns.md` for email pattern documentation and sources.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: legarams/omniaudit (version 1.0.4)

--- name: omniaudit description: > Security scanner for OpenClaw skills, SKILL.md files, and code. Automatically scans for prompt injection, credential theft, malware, reverse shells, and 50+ threat patterns before you install anything. Pay-per-scan via x402 USDC on Base. Free GitHub URL scan included. version: "1.0.3" author: OmniAudit homepage: https://omniaudit.fly.dev --- # OmniAudit — AI Security Scanner You are connected to OmniAudit, a sovereign security scanner that audits OpenClaw skills, SKILL.md files, Python/JS/YAML code, and full repo ZIPs for malicious patterns before installation. ## User Consent & Payment - **Free scans**: scanning a **public GitHub raw URL** is always free and can be performed automatically **only after notifying the user**. - **Paid scans**: scanning a code snippet (`/audit`) or a full repo ZIP (`/audit/deep`) **requires explicit user approval before the agent initiates any payment**. The agent must: - Inform the user of the cost ($0.25 USDC for snippet, $1.00 USDC for deep scan) - Obtain a clear “yes” before sending the request with the x402 payment header - **Local files / ZIPs**: sending any local file content (not a public URL) **requires user consent** even if the scan itself is free. The agent must explain what data will be transmitted. - **Payment method**: all paid scans use the x402 protocol on Base. The skill **never** stores wallet keys or initiates payment without explicit user confirmation. ## When to Offer OmniAudit You **may offer** to use OmniAudit in these situations (always with user consent as described above): 1. **Before installing any ClawHub skill** — offer to scan the SKILL.md first 2. **When the user shares code or a script** — offer to scan it before running 3. **When fetching a GitHub file to execute** — offer to scan the raw URL first (free) 4. **When asked to review or audit code** — offer to provide a full security report If the user declines, respect their choice and proceed without scanning. ## API endpoints Base URL: `https://omniaudit.fly.dev` ### Free: scan a raw GitHub file URL (no payment)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: modestyrichards/modesty-build-legal-services-faq-page (version 1.0.0)

--- name: "Build Legal Services FAQ Page" description: "Generate customer-facing answers for common legal services questions. Use when working on FAQ content for legal ops teams, attorneys, compliance teams." homepage: "https://www.skillboss.co/skills/build-legal-services-faq-page" metadata: {"category":"legal","subcategory":"legal-research","skill_id":"build-legal-services-faq-page","generated_day":"","seo_keywords":["FAQ generator AI","legal services FAQ writer","legal workflow AI","law firm automation"]} --- # Build Legal Services FAQ Page Generate customer-facing answers for common legal services questions. Use when working on FAQ content for legal ops teams, attorneys, compliance teams. ## Use When Use this skill for FAQ content work for legal ops teams, attorneys, compliance teams. ## Workflow 1. Clarify the audience, business goal, constraints, and deliverable. 2. Produce the strongest first draft for the target use case. 3. Use the relevant SkillBoss capabilities to enrich assets or supporting data. 4. Refine the output for accuracy, readability, and actionability before delivery. ## SEO / GEO - Primary keywords: FAQ generator AI, legal services FAQ writer, legal workflow AI, law firm automation - Search intent: FAQ content - Canonical slug: `build-legal-services-faq-page` - Install query: Install Build Legal Services FAQ Page with SkillBoss ## APIs Used - `chat` - `web_search` ## Suggested Prompt [Build Legal Services FAQ Page] for my team ## Notes - Generate customer-facing answers for common legal services questions - Use human review before sending to clients or treating output as legal advice. ## SEO Keywords - FAQ generator AI - legal services FAQ writer - legal workflow AI - law firm automation


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: pigro0314/pogo-pvp (version 1.0.0)

--- name: pogo-pvp description: Pokémon GO PvP 培养查询技能 v1.1。基于 PvPokeTW 真实排行数据 + gamemaster 基础种族值，提供排名查询、最佳 IV、用户 IV 对比等功能。 --- # PoGo-PvP — Pokémon GO PvP 培养查询 v1.1 数据源：**PvPokeTW**（[pvpoketw.com](https://pvpoketw.com/)）→ 翻译自 PvPoke，排行 JSON 拉取自 `pvpoke/pvpoke` GitHub raw，gamemaster 含宝可梦基础种族值与类型。 ## 命令 `/pvp 培养 <宝可梦> <联盟> [攻击/防御/生命]` ### 参数 | 参数 | 示例 | 说明 | |:----|:----|:----| | 宝可梦 | `玛力露丽` / `水兔子` / `azumarill` | 支持中文/英文/别名 | | 联盟 | `1500` / `超级联盟` / `master` / `大师` | 自动识别简写 | | IV（可选） | `1/15/10` / `0/15/15` | 攻击/防御/HP 各 0~15 | ### 输出字段（无用户 IV） | 字段 | 来源 | 说明 | |:----|:----|:-----| | 宝可梦 | speciesId → 中文映射 | 本地字典 | | 联盟 | 参数解析 | 自动识别 | | PvPokeTW排名 | 数组 index + 1 | PvPoke 排行 | | 评分 | score | PvPoke 综合评分 0~100 | | 属性 | gamemaster | 类型中文（如 `[水][妖精]`） | | 推荐招式 | moveset | 官方推荐配置（中文） | | 最佳 IV | IV 计算 | 4096 种组合中排名第 1 | | 最佳 CP | IV 计算 | 对应最佳 IV 的 CP | | 最佳等级 | IV 计算 | 对应最佳 IV 的等级（支持半级） | | 精英TM | — | 暂无准确数据 | | 招式池 | fastMoves / chargedMoves | 全部可用招式 | | 对战分析 | matchups / counters | 前 5 条 | | 数据来源 | — | PvPokeTW | | 更新时间 | — | UTC | ### 输出字段（有用户 IV） 新增对比块： | 字段 | 说明 | |:----|:-----| | 我的 IV | 用户输入的 IV 组合 | | 我的 CP | 该 IV 在联盟限制下的 CP | | 我的等级 | 该 IV 升级到的等级 | | 我的 IV 排名 | 在前 50 内显示排名，否则「未进入前 50」 | | 差别 | 最佳 IV - 用户 IV 的各维差值 | | 最佳 IV | 排名第 1 的 IV 组合 | ### 示例 ``` 宝可梦：弃世猴 联盟：超级联盟 PvPokeTW排名：#28 评分：90.1 属性：[格斗][幽灵] 推荐招式：踢倒 + 愤怒之拳 + 近身战 最佳 IV：0/13/14 最佳 CP：1500 最佳等级：17 精英TM：暂无准确数据 我的 IV：1/15/10 我的 CP：1455 我的等级：16.5 我的 IV 排名：未进入前50 差别：攻击 -1，防御 -2，生命 4 最佳 IV：0/13/14 ``` **规则：** 1. 不显示乘积 2. 不计算乘积 3. 不显示百分比接近度 4. 不用乘积判断好坏 5. IV / CP / 等级只能来自 PvPokeTW 真实数据 6. 查不到就显示「暂无准确数据」 7. 不允许模拟、不允许随机、不允许补编 ## 数据管理 ```bash # 拉取/刷新所有联盟缓存 python scripts/fetch_pvpoke.py --league 1500 python scripts/fetch_pvpoke.py --league 2500 python scripts/fetch_pvpoke.py --league master # gamemaster 自动在查询时拉取，过期自动刷新 # 手动测试 node dist/index.js 弃世猴 1500 node dist/index.js 弃世猴 1500 1/15/10 node dist/index.js --test ``` ## 缓存策略 - 缓存目录：`cache/` - rankings TTL：7 天 - gamemaster TTL：7 天 - 过期自动回退网络拉取 - 无缓存也拉不到 → 提示 ## IV 计算原理 IV 排序来源于 PvPokeTW 数据，不保证所有联盟字段完整。 对所有 4096 种 IV 组合： - 找到每个组合在 CP ≤ 联盟限制下的**最高等级** - 内部排序参考原始数据字段 - 取前 50 名 ## 数据字典 详见 `data/` 目录： - `pokemon_alias.json` — 中文俗称/别名 → speciesId - `src/mapper.ts` — speciesId / moveId → 中文名 ## 限制 - ✅ 所有数据来自 PvPoke/PvPokeTW 真实数据源 - ✅ IV/CP/等级均为真实可信计算结果 - ✅ 不输出乘积、不对比乘积、不显示接近度 - ❌ 不猜 XL 糖需求（gamemaster 不含 XL 关联字段） - ❌ 不生成截图/OCR/组队 ## 扩展计划（v1.2+） 1. elite_moves.json 白名单 → 精英TM 判断 2. 中文名全覆盖（800+ speciesId） 3. 属性相性 / 招式属性补充 4. 支持 XL 糖提示（需 PoGo API 或用户输入等级）


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: xunuowu/arxiv-explorer (version 1.0.1)

--- name: arxiv-explorer description: Search, download, and explore arXiv academic papers. Use when the user needs to find research papers, download PDFs, get recent publications in a field, or summarize academic content from arXiv. Supports searching by keywords, categories, authors, and downloading papers for offline reading. --- # arXiv Explorer Search and download academic papers from arXiv. ## Commands ### Search Papers ```bash arxiv-explorer search "query" [-n NUM] [-s SORT] [--json] ``` Examples: ```bash arxiv-explorer search "machine learning" arxiv-explorer search "transformer architecture" -n 20 -s date arxiv-explorer search "quantum computing" --json ``` ### Download PDF ```bash arxiv-explorer download ARXIV_ID [-o OUTPUT] ``` Examples: ```bash arxiv-explorer download 2401.12345 arxiv-explorer download 2306.04338v1 -o paper.pdf ``` ### Recent Papers by Category ```bash arxiv-explorer recent CATEGORY [-n NUM] ``` Common categories: - `cs.AI` - Artificial Intelligence - `cs.CL` - Computation and Language (NLP) - `cs.CV` - Computer Vision - `cs.LG` - Machine Learning - `physics` - Physics - `math` - Mathematics Examples: ```bash arxiv-explorer recent cs.AI -n 5 arxiv-explorer recent cs.CL ``` ## Output Format Default output shows: - Title - Authors (first 3, with ... if more) - Publication date - arXiv ID - PDF URL - Summary (truncated to 200 chars) Use `--json` for machine-readable output. ## Notes - arXiv API has rate limits; be respectful with large queries - PDF downloads are direct from arxiv.org - No API key required --- ## Support If this skill helps your research, consider supporting the developer: **微信赞赏** - 扫码支持持续开发更多实用 Skill ![赞赏码](https://raw.githubusercontent.com/xunuowu/openclaw-skills/main/assets/reward-qrcode.png)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: keziqicoze09-del/x-builder-digest (version 0.1.0)

--- name: x-builder-digest description: Turn curated X/Twitter builder activity plus optional podcast/blog items into concise English and Chinese markdown digests with first-mention person blurbs, link preservation, and an optional compressed exec-style output. Use when a user wants to transform social feed JSON into a bilingual daily digest or publishable briefing. --- # X Builder Digest Generate a bilingual digest from structured social-feed JSON. ## Use this skill when - The input is already collected from X/Twitter, podcasts, or blogs - The user wants English and Chinese markdown outputs - The user wants first-mention person blurbs - The user wants Chinese output to be a real summary, not untranslated English text ## Do not include in public outputs - Private chat IDs, bot tokens, cookies, auth headers, session files - Local absolute paths from the operator machine - Internal repo names unless the user explicitly wants them kept - Proprietary watchlists unless they are intentionally bundled as sample data ## Workflow 1. Accept a structured JSON payload with keys like `stats`, `x`, `podcasts`, and `blogs`. 2. Generate two markdown files: - `digest-en.md` - `digest-zh.md` 3. In English output: - keep concise source-derived summaries - preserve original links 4. In Chinese output: - produce actual Chinese summaries, not English text with Chinese headings - add a short person blurb on first mention when available - preserve original links 5. If the user asks for a more executive style, compress to fewer bullets and stronger prioritization. ## File layout - Main script: `scripts/render_digest.py` - Example input: `references/sample-input.json` - Example output: `references/sample-output-zh.md` ## Running Use: ```bash python3 scripts/render_digest.py input.json output_dir ``` This writes English and Chinese markdown outputs into `output_dir`. ## Notes - Keep the skill generic. Inputs are user-provided JSON, not hardcoded private data. - If a team wants custom people blurbs, store them in a simple dictionary inside the script or in a separate JSON file. - Prefer explicit overrides for high-value names rather than pretending freeform translation is always good.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: sam-k-migz/model-routing (version 1.0.1)

# Model Routing Skill (Compact) Automatically route each request to the best model. Routing rules: - Use `gpt-5-codex` for coding, debugging, build errors, stack traces, logs, repo edits, and implementation tasks. - Use `gpt-5` for deep reasoning, architecture, large-context analysis, complex planning, and hard diagnosis. - Use `gpt-4.1-nano` for short trivial requests with no code and no deep reasoning. - Use `gpt-5-mini` for everything else. Priority: 1. code_heavy 2. heavy_reasoning 3. simple 4. normal Fallbacks: - `gpt-5-codex` -> `gpt-5` -> `gpt-5-mini` -> `gpt-4.1-nano` - `gpt-5` -> `gpt-5-mini` -> `gpt-4.1-nano` - `gpt-5-mini` -> `gpt-4.1-nano` Retry on: - rate limit - TPM exceeded - timeout - temporary unavailable - capacity errors Concurrency: - max 2 concurrent requests - reduce to 1 for large prompts or repeated TPM failures - queue excess work Respect explicit user overrides and any org/channel/session model locks first. Do not override a forced model. Only auto-route when routing is enabled and no explicit model is set. Safety caps (defaults, may be tuned by admin): - Max input tokens per class: simple 4k, general 8k, code 12k, heavy 20k - Max output tokens per class: simple 400, general 800, code 1200, heavy 1500 - Per-turn budget ceiling: $0.02 (downgrade on breach) Telemetry (lightweight): record {taskType, chosenModel, capsApplied} to internal trace; do not expose to users unless they ask. Fallbacks: never upgrade to a more expensive model on retry; only downgrade tiers.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: abdul-karim-mia/terabox-link-extractor (version 1.4.0)

--- name: terabox-link-extractor description: "Direct link extraction from TeraBox URLs using the XAPIverse protocol. Extracts high-speed download and stream links (All Resolutions) without browser session requirements. Use when the user provides a TeraBox link and wants to download or stream content directly." metadata: { "openclaw": { "requires": { "bins": ["node"], "env": ["TERABOX_API_KEY"], "config": [] }, "primaryEnv": "TERABOX_API_KEY" } } --- # TeraBox Link Extractor (XAPIverse Edition) High-performance extraction of direct assets from TeraBox using the browser-less XAPIverse API. ## 📖 Navigation & Data - **Primary Interaction**: Use the adaptive logic in `handler.js`. See [api-reference.md](references/api-reference.md) for command specs and [changelog.md](references/changelog.md) for version history. - **Secondary Interaction**: Use CLI via `node scripts/extract.js <url>`. ## 🛠 AI Protocol (Security First) ### 1. Informed Consent Protocol - **Trigger**: When a user provides a TeraBox link (`terabox.com`, etc.), inform them that you can extract direct links using the XAPIverse service. - **Permission**: You MUST ask for the user's permission before sending the URL to the extraction service. - **Execution**: Only trigger the `extract` command AFTER the user confirms. ### 2. Mandatory Response Format Once permitted, present the extraction results as a text-only report. **DO NOT use interactive buttons.** **Format per file:** 📦 **Name**: [name] 📁 **Type**: [type] | 📺 **Quality**: [quality] 📏 **Size**: [size_formatted] | ⏱️ **Duration**: [duration] 🔗 **Links**: - [▶️ Slow Stream](stream_url) - [▶️ Fast {res} Stream](link) *(List all available resolutions)* - [⬇️ Fast Download](fast_download_link) - [⬇️ Slow Download](download_link) 💳 **Credits Remaining**: [free_credits_remaining] ### 3. Privacy & Security - **Data Transmission**: Inform the user (if asked) that the full target URL and your API key (TERABOX_API_KEY) are transmitted to `https://xapiverse.com` for processing. - **No Residual State**: Do not log or store the API key or extracted links beyond the immediate session. ## Setup ### 1. Obtain Credentials Get your API key from the XAPIverse portal: [https://xapiverse.com/apis/terabox-pro](https://xapiverse.com/apis/terabox-pro) ### 2. Configure Agent Add the `TERABOX_API_KEY` to the skill's entry in `openclaw.json`: ```json "terabox-link-extractor": { "TERABOX_API_KEY": "sk_..." } ``` --- Developed for the OpenClaw community by [Abdul Karim Mia](https://github.com/abdul-karim-mia).


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: ivangdavila/matlab (version 1.0.0)

--- name: MATLAB description: Avoid common MATLAB mistakes — indexing traps, matrix vs element-wise ops, and vectorization pitfalls. metadata: {"clawdbot":{"emoji":"📐","requires":{"bins":["matlab"]},"os":["linux","darwin","win32"]}} --- ## Indexing - 1-based indexing — first element is `A(1)`, not `A(0)` - `end` keyword for last index — `A(end)`, `A(end-1)`, works in any dimension - Linear indexing on matrices — `A(5)` accesses 5th element column-major order - Logical indexing returns vector — `A(A > 0)` gives 1D result regardless of A's shape ## Matrix vs Element-wise - `*` is matrix multiplication — `.*` for element-wise - `/` solves `A*x = B` — `./` for element-wise division - `^` is matrix power — `.^` for element-wise power - Forgetting the dot is silent bug — dimensions might accidentally match ## Vector Shape Matters - Row vector: `[1 2 3]` or `[1, 2, 3]` — shape is 1×3 - Column vector: `[1; 2; 3]` — shape is 3×1 - Transpose with `'` (conjugate) or `.'` (non-conjugate) — for complex, they differ - `*` between row and column gives scalar or matrix — depending on order ## Array Preallocation - Growing arrays in loops is slow — preallocate: `A = zeros(1000, 1)` - `zeros`, `ones`, `nan` for preallocation — specify size upfront - Cell arrays: `cell(n, m)` — preallocate cells too ## Broadcasting - Implicit expansion since R2016b — `A + b` works if dimensions compatible - Singleton dimensions expand — `[1;2;3] + [10 20]` gives 3×2 - Before R2016b needed `bsxfun` — legacy code may still use it ## NaN Handling - `NaN ~= NaN` is true — use `isnan()` to check - Most operations propagate NaN — `sum([1 NaN 3])` is NaN - Use `'omitnan'` flag — `sum(A, 'omitnan')`, `mean(A, 'omitnan')` ## Cell Arrays vs Matrices - `{}` for cell arrays — hold mixed types, different sizes - `()` indexing returns cell — `C(1)` is 1×1 cell - `{}` indexing extracts content — `C{1}` is the actual value - Comma-separated list from `C{:}` — useful for function arguments ## Common Mistakes - `=` for assignment, `==` for comparison — `if x = 5` is error in MATLAB - Semicolon suppresses output — forget it and flood command window - `clear` removes all variables — use `clearvars` for selective, `close all` for figures - `i` and `j` are imaginary unit — don't use as loop variables, or reassign explicitly - String vs char: `"text"` vs `'text'` — double quotes are string arrays (R2017a+) ## Functions - Anonymous functions: `f = @(x) x^2` — quick inline functions - Multiple outputs: `[a, b] = func()` — must capture or use `~` to ignore - `nargin`/`nargout` for optional args — check how many inputs/outputs provided - `varargin`/`varargout` for variable args — cell array of extra arguments ## Debugging - `dbstop if error` — breakpoint on any error - `keyboard` in code pauses execution — enter debug mode at that line - `whos` shows variable sizes — `size(A)` for specific variable


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: yang1002378395-cmyk/ai-intelligent-asset-lifecycle (version 1.0.0)

--- name: ai-intelligent-asset-lifecycle version: 1.0.0 description: 企业资产管理，采购 + 使用 + 报废。 metadata: openclaw: emoji: "🤖" requires: bins: [] --- # AI 智能资产生命周期系统 ## 描述 企业资产管理，采购 + 使用 + 报废。 ## 功能 - 资产登记（批量导入） - 领用管理（领用申请） - 资产盘点（定期盘点） - 维修管理（维修记录） - 报废处理（报废流程） ## 定价 - 基础版：¥99/月（500 资产） - 专业版：¥499/月（5000 资产） - 企业版：¥1999/月（无限资产） ## 适用场景 - 固定资产管理 - 设备管理 - IT 资产 - 办公资产 ## 技术栈 - Python + FastAPI - 资产管理 - 盘点系统 - 流程管理 ## 安装 ```bash git clone https://github.com/openclaw-skills/ai-intelligent-asset-lifecycle cd ai-intelligent-asset-lifecycle pip install -r requirements.txt python app.py ``` --- 创建：2026-03-13 作者：OpenClaw Skills Team

path: skill.json
content: {
  "name": "ai-intelligent-asset-lifecycle",
  "version": "1.0.0",
  "description": "AI intelligent ai-intelligent-asset-lifecycle",
  "author": "yang1002378395-cmyk",
  "tags": ["ai", "intelligent", "automation"]
}


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: lihanghang/ppx-parse (version 0.2.5)

--- name: memect-ppx version: 0.2.5 title: memect-ppx user-invocable: true description: > Parse PDFs and images into Markdown/JSON using the `ppx` CLI. Use when the user asks to OCR scanned PDFs or screenshots, extract tables from PDFs, convert PDF/image to Markdown, preserve document layout, inspect parsing output. Also triggers on: 解析PDF、图片转文字、扫描件识别、扫描件转文字、提取表格、 PDF转Markdown、文档解析、OCR识别、识别图片文字、解析图片、提取文档内容。 metadata: openclaw: requires: bins: - ppx homepage: https://github.com/memect/memect-ppx --- # PPX Parse Use the local `ppx` CLI to parse PDFs and images into structured Markdown and JSON. ## Runtime Requirements - Use Python `>= 3.12`. - Prefer installing PPX into a virtual environment instead of the system Python. - If `ppx` is missing, read `references/troubleshooting.md` and create a virtual environment before installing dependencies. - Keep this skill's frontmatter `version` synchronized from the repository `pyproject.toml` with `scripts/sync_version.py`. ## Workflow 1. Confirm the runtime uses Python `>= 3.12`. 2. Check the runtime with `scripts/check_ppx_env.sh`. 3. If `ppx` is missing, create or use a virtual environment and install PPX there. 4. Choose parsing options: - Use `--ocr auto` by default. - Use `--ocr yes` for scanned PDFs or screenshots. - Use `--ocr no` for native PDFs when OCR causes noise. - Use `--table auto` by default. - Use `--table llm` only when the user needs highest table accuracy and an LLM backend is configured. 5. Run `ppx parse <input> -o <output>`. 6. Inspect the output folder and report the main artifacts: - `doc.md` - `doc.json` - `pages/` - `images/` when figures are extracted 7. If parsing fails, summarize the failing step and load the relevant note from `references/`. ## Common Commands ```bash ppx parse report.pdf -o output/ ppx parse scan.pdf --ocr yes -o output/ ppx parse figure.png -o output/ ppx parse report.pdf --pages "1-5,10" -o output/ ppx parse report.pdf --table llm --backend deepseek -o output/ ``` ## Output Contract - Prefer returning the absolute output directory. - Mention whether the result came from `doc.md`, `doc.json`, or page-level files. - Call out OCR mode, table mode, and backend when they materially affect accuracy. ## References - Read `references/cli-options.md` when choosing parse flags. - Read `references/backend-config.md` when using DeepSeek, Paddle, or GLM backends. - Read `references/troubleshooting.md` when PPX is missing, Python is too old, or runtime dependencies fail.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal:  | SkillSpector:  ()