Skip to main content
ClaudeWave
Skill100 estrellas del repoactualizado 8d ago

pdf-tools-compdf

>

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/ComPDFKit/compdf-skills /tmp/pdf-tools-compdf && cp -r /tmp/pdf-tools-compdf/skills/pdf-tools-compdf ~/.claude/skills/pdf-tools-compdf
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# PDF Toolkit

Process PDF files through ComPDF Cloud REST API. Supports 50+ document processing operations.

Official documentation: <https://api.compdf.com/api-reference/overview>

## When to Run

- User requests to convert file format (e.g., "convert this PDF to Word", "convert Excel to PDF")
- User requests to edit PDF pages (e.g., "merge these two PDFs", "delete page 3", "rotate PDF")
- User requests to add or remove watermarks from PDF
- User requests to compress PDF files
- User requests OCR recognition of scanned documents or text in images
- User requests AI extraction or parsing of document content
- User requests to extract tables from images
- User requests batch processing of multiple document files
- User requests to compare differences between two PDF documents
- User mentions ComPDF, compdf, or related keywords

## Workflow

### Step 1 — Obtain API Key

Check whether `config/public_key.txt` exists and contains a non-empty value.

- **If the file exists and is non-empty**: use the stored key (trim whitespace).
- **If the file is missing or empty**: ask the user for their ComPDF API Public Key. Inform them it can be obtained at <https://api-dashboard.compdf.com/api/keys>. After the user provides the key, ask whether they would like to save it locally for future sessions.
  - If the user agrees, write the key to `config/public_key.txt`.
  - If the user declines, use the key for the current session only without saving.

> The key file is **not included in the published skill package**. It is created at runtime only when the user explicitly opts in. The user may delete `config/public_key.txt` at any time to revoke local storage.

### Step 2 — Confirm External Upload Intent

**Before uploading any file**, explicitly inform the user:

> ⚠️ **External Upload Confirmation Required**
>
> Your file will be uploaded to ComPDF's servers (api-server.compdf.com or api-server.compdf.cn) for processing. Please confirm that:
> 1. You consent to uploading this file to external servers.
> 2. The file does not contain highly sensitive or confidential data, or you accept the associated risk.
> 3. You have reviewed ComPDF's Privacy Policy at <https://www.compdf.com/privacy-policy>.

**Only proceed with the upload after receiving explicit user confirmation.**

### Step 3 — Determine Base URL

Ask or infer the user's network environment:

| Environment | Base URL |
|---|---|
| International | `https://api-server.compdf.com/server/v2` |
| Mainland China | `https://api-server.compdf.cn/server/v2` |

### Step 4 — Select Tool

Look up the `executeTypeUrl` for the user's task in `references/tool-list.md`.

Quick reference for common operations:

| Operation | executeTypeUrl |
|---|---|
| PDF → Word | `pdf/docx` |
| PDF → Excel | `pdf/xlsx` |
| PDF → Image | `pdf/img` |
| PDF → Markdown | `pdf/markdown` |
| Word → PDF | `docx/pdf` |
| Merge PDF | `pdf/merge` |
| Split PDF | `pdf/split` |
| Add Watermark | `pdf/addWatermark` |
| PDF Compression | `pdf/compress` |
| OCR | `documentAI/ocr` |
| AI Document Extraction | `idp/documentExtract` |
| AI Document Parsing | `idp/documentParsing` |

For the full list of 50+ tools, see `references/tool-list.md`.

### Step 5 — Build Parameters (optional)

If the selected tool supports custom parameters, look up its JSON schema in `references/parameters.md`. Parameters are passed as a **JSON string** in the `parameter` form-data field. If omitted, server defaults apply.

### Step 6 — Send Request

After the user has explicitly confirmed the external upload:

1. Send a `POST` request to `{baseUrl}/process/{executeTypeUrl}`.
2. Include the user-provided API key in the `x-api-key` header for the current session only.
3. Send the selected file as multipart form-data.
4. Include the `parameter` field only when the selected tool supports custom parameters.
5. Use the synchronous `/process/` endpoint so the complete result is returned in a single response.

Do not send the request until the user has confirmed that the file may be transmitted to ComPDF Cloud.

### Step 7 — Handle Response

**1. Check `code` field** — `"200"` means success; anything else is an error.

**2. Check `taskStatus`** (should be `TaskFinish` for synchronous calls):

| Status | Meaning | Action |
|---|---|---|
| `TaskFinish` | Processing complete | Proceed to download |
| `TaskProcessing` | Still processing internally | Notify user; suggest retrying shortly |
| `TaskOverdue` | Timed out | Retry or split into smaller tasks |

**3. Extract download link** from `fileInfoDTOList[].downloadUrl`.

**4. Warn the user**: download links expire at **24:00 the next day**.

**5. On failure**: read `failureCode` and `failureReason`, then look up troubleshooting advice in `references/error-codes.md`.

**6. On quota exhaustion** (`code` = `"06001"`): inform the user:

> For more credits, please visit <https://api.compdf.com/api/pricing-old>

### Auxiliary Endpoints

| Purpose | Method & Path |
|---|---|
| List supported tools | `GET {baseUrl}/tool/support` |
| Check remaining credits | `GET {baseUrl}/asset/info` |
| List tasks | `GET {baseUrl}/task/list?page=1&size=10` |
| Close a task | `POST {baseUrl}/task/closeTask?taskId={taskId}` |

## Output Format

**On success:**

```
Processing complete!

File: {fileName} → {downFileName}
Status: {taskStatus}
Time taken: {convertTime}ms
Original size: {fileSize} bytes
Result size: {convertSize} bytes
Download link: {downloadUrl}

⚠️ The download link will expire at 24:00 tomorrow, please save it promptly.
```

**On failure:**

```
Processing failed.

Error code: {failureCode}
Reason: {failureReason}
Suggestion: {troubleshooting suggestion from references/error-codes.md}
```

## Critical Rules

1. **HTTP 200 ≠ success** — always check `code` and `taskStatus` in the JSON body.
2. **Max 5 files per task** — split into multiple tasks if more files are needed.
3. **Free tier limit** — 200 files within 30 days.
4. **File type auto-detection** — the API detects uploaded file types