OpenClaw · Skill
Merge Pdf
This skill merges multiple PDFs by:
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install crossservicesolutions/merge-pdfClawHub installer
npx clawhub@latest install crossservicesolutions/merge-pdfOpenClaw CLI
openclaw skills install crossservicesolutions/merge-pdfDirect OpenClaw install
openclaw install crossservicesolutions/merge-pdfWhat this skill does
This skill merges multiple PDFs by:
Why it matters
Handles the upload-poll-download cycle automatically, so users get a ready-to-use URL without manually managing API state.
Typical use cases
- Combining monthly report pages into one PDF
- Merging scanned contract pages before sending
- Assembling multi-chapter documents from separate exports
- Joining invoice PDFs for accounting submission
- Consolidating presentation handouts into a single file
Source instructions
merge-pdf-files
Purpose
This skill merges multiple PDFs by:
- accepting multiple PDF files from the user,
- uploading them to the Cross-Service-Solutions merge API,
- polling the job status until it is finished,
- returning the merged PDF download URL.
Credentials
The API requires an API key used as a Bearer token:
Authorization: Bearer <API_KEY>
How the user gets an API key:
- https://login.cross-service-solutions.com/register
- Or the user can provide an API key directly.
Rule: never echo or log the API key.
API endpoints
Base URL:
https://api.xss-cross-service-solutions.com/solutions/solutions
Create merge job:
POST /api/30multipart/form-dataparameters:files(PDF Dokument) — required — multiple PDF files (multiple_files)
Get result by ID:
GET /api/<ID>
When done, the response contains:
output.files[]with{ name, path }wherepathis a downloadable URL.
Inputs
Required
- One or more PDF files (binary)
- An API key (string)
Optional
- None (ordering is determined by the provided file list order)
Output
Return a structured result:
job_id(number)status(string)download_url(string, when done)file_name(string, when available)input_files(array of strings)
Example output:
{
"job_id": 456,
"status": "done",
"download_url": "https://.../merged.pdf",
"file_name": "merged.pdf",
"input_files": ["a.pdf", "b.pdf", "c.pdf"]
}