{"id":"876bdd0f-0f87-4697-a765-13244a21b89e","entityType":"agent","slug":"clawhub-paodingai-pdflux-pdf2markdown","name":"PDFlux SaaS Markdown","canonicalUrl":"https://www.xpersona.co/agent/clawhub-paodingai-pdflux-pdf2markdown","canonicalPath":"/agent/clawhub-paodingai-pdflux-pdf2markdown","generatedAt":"2026-10-10T11:50:21.323Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:23:18.346Z","emptyReason":null},"description":"Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s171rf8ak6hx9rzs693rsdpec5872404:pdflux-pdf2markdown","sourceUrl":"https://clawhub.ai/paodingai/pdflux-pdf2markdown","homepage":"https://clawhub.ai/paodingai/skills/pdflux-pdf2markdown","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/paodingai/pdflux-pdf2markdown","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/paodingai/skills/pdflux-pdf2markdown","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"PDFlux SaaS Markdown technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:23:18.346Z","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-10T09:23:18.346Z","emptyReason":null},"stars":null,"forks":null,"downloads":1527,"packageName":null,"latestVersion":"1.3.3","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:23:18.339Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T09:23:18.346Z","lastCrawledAt":"2026-10-10T09:23:18.339Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T09:23:18.339Z","lastVerifiedAt":null,"highlights":[{"version":"1.3.3","createdAt":"2026-07-24T09:35:56.239Z","changelog":"Release v1.3.3","fileCount":5,"zipByteSize":6630},{"version":"1.3.2","createdAt":"2026-06-05T09:23:55.125Z","changelog":"Release v1.3.2","fileCount":5,"zipByteSize":6439},{"version":"1.3.1","createdAt":"2026-06-04T10:32:24.824Z","changelog":"Release v1.3.1","fileCount":5,"zipByteSize":6549},{"version":"1.0.3","createdAt":"2026-05-20T02:27:54.040Z","changelog":"- No code or documentation changes detected in this version. - Functionality, usage, and behavior remain the same as the previous release.","fileCount":5,"zipByteSize":6450},{"version":"1.0.2","createdAt":"2026-05-15T04:09:38.675Z","changelog":"- Switched to using the latest synchronous OpenAPI endpoint (`POST /openapi/{serviceCode}/file/markdown`) for document parsing. - Updated required and optional environment variables (now use `PAODINGAI_API_KEY` and `PAODINGAI_API_BASE_URL`). - Deprecated usage of legacy/deprecated routes; now only supports the latest OpenAPI flow. - Improved script response logic: outputs Markdown directly if present, or the full JSON payload otherwise. - Updated documentation and guidance to align with the new API structure and variables.","fileCount":4,"zipByteSize":5255},{"version":"1.0.1","createdAt":"2026-03-30T09:11:02.469Z","changelog":"- Changelog summary: Added metadata and translated documentation to English for broader accessibility. - Added a metadata section specifying author, version, emoji, required environment variables, and dependencies. - Translated all documentation and usage instructions from Chinese to English. - Updated description and behavioral guidelines to reflect the new language and metadata requirements. - No changes to code or core functionality.","fileCount":4,"zipByteSize":5493},{"version":"1.0.0","createdAt":"2026-03-30T07:05:31.135Z","changelog":"init","fileCount":4,"zipByteSize":5489}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171rf8ak6hx9rzs693rsdpec5872404:pdflux-pdf2markdown","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s171rf8ak6hx9rzs693rsdpec5872404:pdflux-pdf2markdown` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/paodingai/pdflux-pdf2markdown before using production credentials."],"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-paodingai-pdflux-pdf2markdown/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/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-10T11:50:21.322Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-paodingai-pdflux-pdf2markdown/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":"medium","updatedAt":"2026-10-10T09:23:18.346Z","emptyReason":null},"readme":"Skill: PDFlux SaaS Markdown\n\nOwner: paodingai\n\nSummary: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other...\n\nTags: latest:1.3.3\n\nVersion history:\n\nv1.3.3 | 2026-07-24T09:35:56.239Z | user\n\nRelease v1.3.3\n\nv1.3.2 | 2026-06-05T09:23:55.125Z | user\n\nRelease v1.3.2\n\nv1.3.1 | 2026-06-04T10:32:24.824Z | user\n\nRelease v1.3.1\n\nv1.0.3 | 2026-05-20T02:27:54.040Z | auto\n\n- No code or documentation changes detected in this version.\n- Functionality, usage, and behavior remain the same as the previous release.\n\nv1.0.2 | 2026-05-15T04:09:38.675Z | user\n\n- Switched to using the latest synchronous OpenAPI endpoint (`POST /openapi/{serviceCode}/file/markdown`) for document parsing.\n- Updated required and optional environment variables (now use `PAODINGAI_API_KEY` and `PAODINGAI_API_BASE_URL`).\n- Deprecated usage of legacy/deprecated routes; now only supports the latest OpenAPI flow.\n- Improved script response logic: outputs Markdown directly if present, or the full JSON payload otherwise.\n- Updated documentation and guidance to align with the new API structure and variables.\n\nv1.0.1 | 2026-03-30T09:11:02.469Z | user\n\n- Changelog summary: Added metadata and translated documentation to English for broader accessibility.\n- Added a metadata section specifying author, version, emoji, required environment variables, and dependencies.\n- Translated all documentation and usage instructions from Chinese to English.\n- Updated description and behavioral guidelines to reflect the new language and metadata requirements.\n- No changes to code or core functionality.\n\nv1.0.0 | 2026-03-30T07:05:31.135Z | user\n\ninit\n\nArchive index:\n\nArchive v1.3.3: 5 files, 6630 bytes\n\nFiles: agents/openai.yaml (655b), scripts/upload_to_markdown.js (6274b), skill-card.md (2307b), SKILL.md (4755b), _meta.json (138b)\n\nFile v1.3.3:SKILL.md\n\n---\nname: PDFlux-PDF2Markdown\ndescription: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\nmetadata:\n  {\n    'author': 'PAODINGAI',\n    'version': '1.0.1',\n    'openclaw':\n      {\n        'emoji': '📝',\n        'requires':\n          {\n            'env': ['PAODINGAI_API_KEY', 'PAODINGAI_API_BASE_URL'],\n            'bins': ['node'],\n          },\n      },\n  }\n---\n\n# PDFlux-PDF2Markdown\n\nRun a JavaScript workflow that submits a single local file to the `pdflux` synchronous API through PDRouter (`POST /openapi/{serviceCode}/file/markdown`) and prints the response result in one step. This skill only targets the latest OpenAPI flow and does not support deprecated legacy routes.\n\n## Installation\n\n```bash\nnpx skills add PaodingAI/skills\n```\n\n## Usage\n\n```bash\nnode skills/pdflux-pdf2markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]\n```\n\n## Execution Constraints\n\n- You must invoke `scripts/upload_to_markdown.js` directly. Do not reimplement the API flow yourself.\n- The behavior contract below explains what the script does, what it outputs, and when to use it. It is not a manual checklist for the model to imitate step by step.\n- Even if the task is only to extract tables, read fields, inspect body text, or prepare input for later scripts, you must run this script first and continue from the generated Markdown.\n- Only inspect or modify the script implementation when the script itself is unavailable, failing, or needs a fix. Do not bypass it during normal use.\n\n## When to Use\n\n- Use this skill when the user wants to parse a document, retrieve specific document content, or extract tables from a document.\n- Use this skill when the user says things like \"convert to Markdown\", \"output Markdown\", \"export Markdown\", or \"extract Markdown\", and return the Markdown content directly.\n- When later work depends on the document content, such as summarization, field extraction, document-processing scripts, table comparison, or rule-based validation, use this skill first to parse the document.\n- When the document content is only needed as input for subsequent steps, do not default to showing the full raw Markdown to the user. Prefer saving it to a temporary or working file first, then read, filter, and extract only what is needed.\n- When the user explicitly asks for the original Markdown output or clearly wants a direct document-to-Markdown conversion, show the full Markdown directly.\n\n## Environment Variables\n\n- `PAODINGAI_API_KEY`: Required. The Bearer API key for PDRouter OpenAPI. If it is missing, the script fails immediately. In a skill workflow, the AI should ask the user to provide a valid key, or inject it into the environment before retrying.\n- `PAODINGAI_API_BASE_URL`: Optional. Defaults to `https://platform.paodingai.com/platform/`.\n- `PD_ROUTER_SERVICE_CODE`: Optional. Defaults to `pdflux`.\n- `PDFLUX_INCLUDE_IMAGES`: Optional. Boolean. Markdown output does not include image data by default.\n\n## Default Behavior and Optional Settings\n\n- Parsed results do not include chart or image extraction by default.\n- If charts, images, or similar content are required, enable them explicitly through API parameters. These results are usually returned as base64 and will increase token usage.\n- Markdown output does not include image data by default. If you need embedded image data, set `PDFLUX_INCLUDE_IMAGES=true`.\n\n## Script Behavior\n\n1. Read the token from `PAODINGAI_API_KEY`. If it is missing, fail immediately and prompt the AI to ask the user for a key or inject the environment variable first.\n2. Send one request with the local file to `POST /openapi/{serviceCode}/file/markdown` using `Authorization: Bearer <token>`.\n3. Parse the final API response and output:\n   - Markdown text if the response contains a markdown field.\n   - Otherwise, output the JSON response payload.\n4. If `output-markdown-path` is provided, the script also writes the same output text to that file while still printing it to stdout.\n5. The script writes progress and errors to stderr and returns a non-zero exit code on failure.\n6. When the goal is to retrieve specific content, fields, or tables, read the parsed result and return only the necessary information instead of echoing full raw output to the user.\n7. When the user explicitly asks to \"convert to Markdown\", \"output Markdown\", or expresses an equivalent intent, return the Markdown content directly when present in the API response.\n\nFile v1.3.3:_meta.json\n\n{\n  \"ownerId\": \"kn7fs43qz2hr5wsbcc9sn32qss82cr1y\",\n  \"slug\": \"pdflux-pdf2markdown\",\n  \"version\": \"1.3.3\",\n  \"publishedAt\": 1784885756239\n}\n\nFile v1.3.3:skill-card.md\n\n## Description:\n\nConvert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[paodingai](https://clawhub.ai/user/paodingai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and document-processing agents use this skill to convert PDFs, Word documents, presentations, and images into Markdown for extraction, comparison, retrieval, summarization, validation, and question answering.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Local documents are uploaded to an external PDFlux endpoint for conversion.\n\nMitigation: Use the skill only with documents you are authorized to send to PaodingAI/PDFlux.\n\nRisk: A configurable API base URL can redirect uploads and credentials to a custom endpoint.\n\nMitigation: Keep PAODINGAI_API_BASE_URL on the official HTTPS service unless intentionally using a trusted custom endpoint.\n\nRisk: The workflow requires a bearer API key for the external service.\n\nMitigation: Use a limited API key and avoid exposing it in prompts, logs, or shared configuration.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/paodingai/skills/pdflux-pdf2markdown)\n- [PaodingAI platform API base](https://platform.paodingai.com/platform/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, files]\n\n**Output Format:** [Markdown text or JSON response payload, optionally saved to a Markdown file]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires Node and a PAODINGAI_API_KEY; uploads one local document to the configured PDFlux endpoint; image data is excluded unless explicitly enabled.]\n\n## Skill Version(s):\n\n1.3.3 (source: server release metadata)\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\nFile v1.3.3:agents/openai.yaml\n\ninterface:\n  display_name: \"PDFlux SaaS Markdown\"\n  short_description: \"Parse docs and tables from PDF, DOCX, and images\"\n  default_prompt: \"Always execute the bundled scripts/upload_to_markdown.js script, which calls the latest synchronous /openapi/{serviceCode}/file/markdown API for one local PDF, DOCX, PPT, image, or similar file. Use PAODINGAI_API_KEY for Bearer authorization and PAODINGAI_API_BASE_URL as the base URL when provided. If the user explicitly asks to convert to markdown or output markdown, return markdown content directly when present in the API response; otherwise extract only the document content or tables needed for the task.\"\n\nArchive v1.3.2: 5 files, 6439 bytes\n\nFiles: agents/openai.yaml (655b), scripts/upload_to_markdown.js (6112b), skill-card.md (2135b), SKILL.md (4637b), _meta.json (138b)\n\nFile v1.3.2:SKILL.md\n\n---\nname: PDFlux-PDF2Markdown\ndescription: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\nmetadata: {\"author\":\"PAODINGAI\",\"version\":\"1.0.1\",\"openclaw\":{\"emoji\":\"📝\",\"requires\":{\"env\":[\"PAODINGAI_API_KEY\",\"PAODINGAI_API_BASE_URL\"],\"bins\":[\"node\"]}}}\n---\n\n# PDFlux-PDF2Markdown\n\nRun a JavaScript workflow that submits a single local file to the `pdflux` synchronous API through PDRouter (`POST /openapi/{serviceCode}/file/markdown`) and prints the response result in one step. This skill only targets the latest OpenAPI flow and does not support deprecated legacy routes.\n\n## Installation\n\n```bash\nnpx skills add PaodingAI/skills\n```\n\n## Usage\n\n```bash\nnode skills/pdflux-pdf2markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]\n```\n\n## Execution Constraints\n\n- You must invoke `scripts/upload_to_markdown.js` directly. Do not reimplement the API flow yourself.\n- The behavior contract below explains what the script does, what it outputs, and when to use it. It is not a manual checklist for the model to imitate step by step.\n- Even if the task is only to extract tables, read fields, inspect body text, or prepare input for later scripts, you must run this script first and continue from the generated Markdown.\n- Only inspect or modify the script implementation when the script itself is unavailable, failing, or needs a fix. Do not bypass it during normal use.\n\n## When to Use\n\n- Use this skill when the user wants to parse a document, retrieve specific document content, or extract tables from a document.\n- Use this skill when the user says things like \"convert to Markdown\", \"output Markdown\", \"export Markdown\", or \"extract Markdown\", and return the Markdown content directly.\n- When later work depends on the document content, such as summarization, field extraction, document-processing scripts, table comparison, or rule-based validation, use this skill first to parse the document.\n- When the document content is only needed as input for subsequent steps, do not default to showing the full raw Markdown to the user. Prefer saving it to a temporary or working file first, then read, filter, and extract only what is needed.\n- When the user explicitly asks for the original Markdown output or clearly wants a direct document-to-Markdown conversion, show the full Markdown directly.\n\n## Environment Variables\n\n- `PAODINGAI_API_KEY`: Required. The Bearer API key for PDRouter OpenAPI. If it is missing, the script fails immediately. In a skill workflow, the AI should ask the user to provide a valid key, or inject it into the environment before retrying.\n- `PAODINGAI_API_BASE_URL`: Optional. Defaults to `https://platform.paodingai.com/`.\n- `PD_ROUTER_SERVICE_CODE`: Optional. Defaults to `pdflux`.\n- `PDFLUX_INCLUDE_IMAGES`: Optional. Boolean. Markdown output does not include image data by default.\n\n## Default Behavior and Optional Settings\n\n- Parsed results do not include chart or image extraction by default.\n- If charts, images, or similar content are required, enable them explicitly through API parameters. These results are usually returned as base64 and will increase token usage.\n- Markdown output does not include image data by default. If you need embedded image data, set `PDFLUX_INCLUDE_IMAGES=true`.\n\n## Script Behavior\n\n1. Read the token from `PAODINGAI_API_KEY`. If it is missing, fail immediately and prompt the AI to ask the user for a key or inject the environment variable first.\n2. Send one request with the local file to `POST /openapi/{serviceCode}/file/markdown` using `Authorization: Bearer <token>`.\n3. Parse the final API response and output:\n   - Markdown text if the response contains a markdown field.\n   - Otherwise, output the JSON response payload.\n4. If `output-markdown-path` is provided, the script also writes the same output text to that file while still printing it to stdout.\n5. The script writes progress and errors to stderr and returns a non-zero exit code on failure.\n6. When the goal is to retrieve specific content, fields, or tables, read the parsed result and return only the necessary information instead of echoing full raw output to the user.\n7. When the user explicitly asks to \"convert to Markdown\", \"output Markdown\", or expresses an equivalent intent, return the Markdown content directly when present in the API response.\n\nFile v1.3.2:_meta.json\n\n{\n  \"ownerId\": \"kn7fs43qz2hr5wsbcc9sn32qss82cr1y\",\n  \"slug\": \"pdflux-pdf2markdown\",\n  \"version\": \"1.3.2\",\n  \"publishedAt\": 1780651435125\n}\n\nFile v1.3.2:skill-card.md\n\n## Description: <br>\nConvert unstructured documents into LLM-ready structured data, including Markdown from PDF, Word, PPT, and image files. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[paodingai](https://clawhub.ai/user/paodingai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to convert user-selected local documents into Markdown before summarization, table extraction, field extraction, comparison, validation, knowledge retrieval, or question answering. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill uploads a user-selected document to the PaodingAI/PDFlux SaaS API for conversion. <br>\nMitigation: Use it only for documents the user is permitted to send to that service, and confirm account terms, data-handling requirements, and user consent before processing confidential, regulated, or customer material. <br>\nRisk: Optional image output can return embedded image data and increase exposure and token usage. <br>\nMitigation: Keep image/base64 output disabled unless the task requires it, and review the exact input file and output path before running the conversion. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/paodingai/pdflux-pdf2markdown) <br>\n- [PaodingAI platform](https://platform.paodingai.com/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Markdown, Text, Files] <br>\n**Output Format:** [Markdown text, or JSON text when the API response does not contain Markdown] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Can print converted content to stdout and optionally write the same output to a file.] <br>\n\n## Skill Version(s): <br>\n1.3.2 (source: server release evidence; artifact frontmatter reports 1.0.1) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nFile v1.3.2:agents/openai.yaml\n\ninterface:\n  display_name: \"PDFlux SaaS Markdown\"\n  short_description: \"Parse docs and tables from PDF, DOCX, and images\"\n  default_prompt: \"Always execute the bundled scripts/upload_to_markdown.js script, which calls the latest synchronous /openapi/{serviceCode}/file/markdown API for one local PDF, DOCX, PPT, image, or similar file. Use PAODINGAI_API_KEY for Bearer authorization and PAODINGAI_API_BASE_URL as the base URL when provided. If the user explicitly asks to convert to markdown or output markdown, return markdown content directly when present in the API response; otherwise extract only the document content or tables needed for the task.\"\n\nArchive v1.3.1: 5 files, 6549 bytes\n\nFiles: agents/openai.yaml (655b), scripts/upload_to_markdown.js (6112b), skill-card.md (2376b), SKILL.md (4638b), _meta.json (138b)\n\nFile v1.3.1:SKILL.md\n\n---\nname: PDFlux-PDF2Markdown\ndescription: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\nmetadata: {\"author\":\"PAODINGAI\",\"version\":\"1.0.1\",\"openclaw\":{\"emoji\":\"📝\",\"requires\":{\"env\":[\"PAODINGAI_API_KEY\",\"PAODINGAI_API_BASE_URL\"],\"bins\":[\"node\"]}}}\n---\n\n# PDFlux-PDF2Markdown\n\nRun a JavaScript workflow that submits a single local file to the `pdflux` synchronous API through PDRouter (`POST /openapi/{serviceCode}/file/markdown`) and prints the response result in one step. This skill only targets the latest OpenAPI flow and does not support deprecated legacy routes.\n\n## Installation\n\n```bash\nnpx skills add PaodingAI/skills\n```\n\n## Usage\n\n```bash\nnode skills/pdflux-saas-markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]\n```\n\n## Execution Constraints\n\n- You must invoke `scripts/upload_to_markdown.js` directly. Do not reimplement the API flow yourself.\n- The behavior contract below explains what the script does, what it outputs, and when to use it. It is not a manual checklist for the model to imitate step by step.\n- Even if the task is only to extract tables, read fields, inspect body text, or prepare input for later scripts, you must run this script first and continue from the generated Markdown.\n- Only inspect or modify the script implementation when the script itself is unavailable, failing, or needs a fix. Do not bypass it during normal use.\n\n## When to Use\n\n- Use this skill when the user wants to parse a document, retrieve specific document content, or extract tables from a document.\n- Use this skill when the user says things like \"convert to Markdown\", \"output Markdown\", \"export Markdown\", or \"extract Markdown\", and return the Markdown content directly.\n- When later work depends on the document content, such as summarization, field extraction, document-processing scripts, table comparison, or rule-based validation, use this skill first to parse the document.\n- When the document content is only needed as input for subsequent steps, do not default to showing the full raw Markdown to the user. Prefer saving it to a temporary or working file first, then read, filter, and extract only what is needed.\n- When the user explicitly asks for the original Markdown output or clearly wants a direct document-to-Markdown conversion, show the full Markdown directly.\n\n## Environment Variables\n\n- `PAODINGAI_API_KEY`: Required. The Bearer API key for PDRouter OpenAPI. If it is missing, the script fails immediately. In a skill workflow, the AI should ask the user to provide a valid key, or inject it into the environment before retrying.\n- `PAODINGAI_API_BASE_URL`: Optional. Defaults to `https://platform.paodingai.com/`.\n- `PD_ROUTER_SERVICE_CODE`: Optional. Defaults to `pdflux`.\n- `PDFLUX_INCLUDE_IMAGES`: Optional. Boolean. Markdown output does not include image data by default.\n\n## Default Behavior and Optional Settings\n\n- Parsed results do not include chart or image extraction by default.\n- If charts, images, or similar content are required, enable them explicitly through API parameters. These results are usually returned as base64 and will increase token usage.\n- Markdown output does not include image data by default. If you need embedded image data, set `PDFLUX_INCLUDE_IMAGES=true`.\n\n## Script Behavior\n\n1. Read the token from `PAODINGAI_API_KEY`. If it is missing, fail immediately and prompt the AI to ask the user for a key or inject the environment variable first.\n2. Send one request with the local file to `POST /openapi/{serviceCode}/file/markdown` using `Authorization: Bearer <token>`.\n3. Parse the final API response and output:\n   - Markdown text if the response contains a markdown field.\n   - Otherwise, output the JSON response payload.\n4. If `output-markdown-path` is provided, the script also writes the same output text to that file while still printing it to stdout.\n5. The script writes progress and errors to stderr and returns a non-zero exit code on failure.\n6. When the goal is to retrieve specific content, fields, or tables, read the parsed result and return only the necessary information instead of echoing full raw output to the user.\n7. When the user explicitly asks to \"convert to Markdown\", \"output Markdown\", or expresses an equivalent intent, return the Markdown content directly when present in the API response.\n\nFile v1.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn7fs43qz2hr5wsbcc9sn32qss82cr1y\",\n  \"slug\": \"pdflux-pdf2markdown\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1780569144824\n}\n\nFile v1.3.1:skill-card.md\n\n## Description: <br>\nConvert unstructured documents into LLM-ready structured data, including Markdown output from PDF, Word, PPT, and image files with support for paragraphs, formulas, tables, charts, headings, and reading-order organization. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[paodingai](https://clawhub.ai/user/paodingai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and knowledge-workflow users use this skill to convert local documents into Markdown before field extraction, table retrieval, comparison, validation, knowledge retrieval, summarization, or Q&A workflows. The skill sends the selected file to the PAODINGAI/PDFlux cloud API and returns Markdown when available, or the API response payload otherwise. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill uploads selected documents to the PAODINGAI/PDFlux cloud API for conversion. <br>\nMitigation: Use only with documents approved for that external service; avoid confidential documents unless organizational policy permits the upload. <br>\nRisk: The workflow requires PAODINGAI_API_KEY credentials for Bearer authorization. <br>\nMitigation: Keep the API key scoped, protected, and supplied through the environment rather than embedded in files or prompts. <br>\n\n\n## Reference(s): <br>\n- [PDFlux-PDF2Markdown on ClawHub](https://clawhub.ai/paodingai/pdflux-pdf2markdown) <br>\n- [PAODINGAI API Platform](https://platform.paodingai.com/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown or JSON response payload, with optional file output when an output path is provided] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires node and PAODINGAI_API_KEY; PAODINGAI_API_BASE_URL, PD_ROUTER_SERVICE_CODE, and PDFLUX_INCLUDE_IMAGES can alter API routing or returned content.] <br>\n\n## Skill Version(s): <br>\n1.3.1 (source: server-resolved release metadata) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nFile v1.3.1:agents/openai.yaml\n\ninterface:\n  display_name: \"PDFlux SaaS Markdown\"\n  short_description: \"Parse docs and tables from PDF, DOCX, and images\"\n  default_prompt: \"Always execute the bundled scripts/upload_to_markdown.js script, which calls the latest synchronous /openapi/{serviceCode}/file/markdown API for one local PDF, DOCX, PPT, image, or similar file. Use PAODINGAI_API_KEY for Bearer authorization and PAODINGAI_API_BASE_URL as the base URL when provided. If the user explicitly asks to convert to markdown or output markdown, return markdown content directly when present in the API response; otherwise extract only the document content or tables needed for the task.\"\n\nArchive v1.0.3: 5 files, 6450 bytes\n\nFiles: agents/openai.yaml (655b), scripts/upload_to_markdown.js (6112b), skill-card.md (2195b), SKILL.md (4638b), _meta.json (138b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: PDFlux-PDF2Markdown\ndescription: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\nmetadata: {\"author\":\"PAODINGAI\",\"version\":\"1.0.1\",\"openclaw\":{\"emoji\":\"📝\",\"requires\":{\"env\":[\"PAODINGAI_API_KEY\",\"PAODINGAI_API_BASE_URL\"],\"bins\":[\"node\"]}}}\n---\n\n# PDFlux-PDF2Markdown\n\nRun a JavaScript workflow that submits a single local file to the `pdflux` synchronous API through PDRouter (`POST /openapi/{serviceCode}/file/markdown`) and prints the response result in one step. This skill only targets the latest OpenAPI flow and does not support deprecated legacy routes.\n\n## Installation\n\n```bash\nnpx skills add PaodingAI/skills\n```\n\n## Usage\n\n```bash\nnode skills/pdflux-saas-markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]\n```\n\n## Execution Constraints\n\n- You must invoke `scripts/upload_to_markdown.js` directly. Do not reimplement the API flow yourself.\n- The behavior contract below explains what the script does, what it outputs, and when to use it. It is not a manual checklist for the model to imitate step by step.\n- Even if the task is only to extract tables, read fields, inspect body text, or prepare input for later scripts, you must run this script first and continue from the generated Markdown.\n- Only inspect or modify the script implementation when the script itself is unavailable, failing, or needs a fix. Do not bypass it during normal use.\n\n## When to Use\n\n- Use this skill when the user wants to parse a document, retrieve specific document content, or extract tables from a document.\n- Use this skill when the user says things like \"convert to Markdown\", \"output Markdown\", \"export Markdown\", or \"extract Markdown\", and return the Markdown content directly.\n- When later work depends on the document content, such as summarization, field extraction, document-processing scripts, table comparison, or rule-based validation, use this skill first to parse the document.\n- When the document content is only needed as input for subsequent steps, do not default to showing the full raw Markdown to the user. Prefer saving it to a temporary or working file first, then read, filter, and extract only what is needed.\n- When the user explicitly asks for the original Markdown output or clearly wants a direct document-to-Markdown conversion, show the full Markdown directly.\n\n## Environment Variables\n\n- `PAODINGAI_API_KEY`: Required. The Bearer API key for PDRouter OpenAPI. If it is missing, the script fails immediately. In a skill workflow, the AI should ask the user to provide a valid key, or inject it into the environment before retrying.\n- `PAODINGAI_API_BASE_URL`: Optional. Defaults to `https://platform.paodingai.com/`.\n- `PD_ROUTER_SERVICE_CODE`: Optional. Defaults to `pdflux`.\n- `PDFLUX_INCLUDE_IMAGES`: Optional. Boolean. Markdown output does not include image data by default.\n\n## Default Behavior and Optional Settings\n\n- Parsed results do not include chart or image extraction by default.\n- If charts, images, or similar content are required, enable them explicitly through API parameters. These results are usually returned as base64 and will increase token usage.\n- Markdown output does not include image data by default. If you need embedded image data, set `PDFLUX_INCLUDE_IMAGES=true`.\n\n## Script Behavior\n\n1. Read the token from `PAODINGAI_API_KEY`. If it is missing, fail immediately and prompt the AI to ask the user for a key or inject the environment variable first.\n2. Send one request with the local file to `POST /openapi/{serviceCode}/file/markdown` using `Authorization: Bearer <token>`.\n3. Parse the final API response and output:\n   - Markdown text if the response contains a markdown field.\n   - Otherwise, output the JSON response payload.\n4. If `output-markdown-path` is provided, the script also writes the same output text to that file while still printing it to stdout.\n5. The script writes progress and errors to stderr and returns a non-zero exit code on failure.\n6. When the goal is to retrieve specific content, fields, or tables, read the parsed result and return only the necessary information instead of echoing full raw output to the user.\n7. When the user explicitly asks to \"convert to Markdown\", \"output Markdown\", or expresses an equivalent intent, return the Markdown content directly when present in the API response.\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7fs43qz2hr5wsbcc9sn32qss82cr1y\",\n  \"slug\": \"pdflux-pdf2markdown\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1779244074040\n}\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nConvert unstructured documents into LLM-ready structured data from PDF, Word, PPT, and image files, extracting document elements and returning Markdown organized in reading order. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[paodingai](https://clawhub.ai/user/paodingai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to convert local documents into Markdown before summarization, field extraction, table extraction, comparison, validation, retrieval, or Q&A workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill uploads user-selected documents to PAODINGAI/PDRouter or the configured PAODINGAI_API_BASE_URL for conversion. <br>\nMitigation: Use only documents approved for that external processing path, and avoid confidential, regulated, or customer files unless the upload is authorized. <br>\nRisk: The skill requires a PAODINGAI_API_KEY for Bearer authentication. <br>\nMitigation: Keep the API key in a trusted environment variable and avoid exposing it in prompts, logs, checked-in files, or shared command history. <br>\n\n\n## Reference(s): <br>\n- [PDFlux-PDF2Markdown on ClawHub](https://clawhub.ai/paodingai/pdflux-pdf2markdown) <br>\n- [PAODINGAI Platform](https://platform.paodingai.com/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, JSON, files, shell commands, guidance] <br>\n**Output Format:** [Markdown text when available, otherwise JSON response text; optionally written to a local Markdown output file.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires Node.js and a PAODINGAI_API_KEY. Uploads the selected local document to the configured PAODINGAI API base URL for conversion.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nFile v1.0.3:agents/openai.yaml\n\ninterface:\n  display_name: \"PDFlux SaaS Markdown\"\n  short_description: \"Parse docs and tables from PDF, DOCX, and images\"\n  default_prompt: \"Always execute the bundled scripts/upload_to_markdown.js script, which calls the latest synchronous /openapi/{serviceCode}/file/markdown API for one local PDF, DOCX, PPT, image, or similar file. Use PAODINGAI_API_KEY for Bearer authorization and PAODINGAI_API_BASE_URL as the base URL when provided. If the user explicitly asks to convert to markdown or output markdown, return markdown content directly when present in the API response; otherwise extract only the document content or tables needed for the task.\"\n\nArchive v1.0.2: 4 files, 5255 bytes\n\nFiles: agents/openai.yaml (655b), scripts/upload_to_markdown.js (6112b), SKILL.md (4638b), _meta.json (138b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: PDFlux-PDF2Markdown\ndescription: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\nmetadata: {\"author\":\"PAODINGAI\",\"version\":\"1.0.1\",\"openclaw\":{\"emoji\":\"📝\",\"requires\":{\"env\":[\"PAODINGAI_API_KEY\",\"PAODINGAI_API_BASE_URL\"],\"bins\":[\"node\"]}}}\n---\n\n# PDFlux-PDF2Markdown\n\nRun a JavaScript workflow that submits a single local file to the `pdflux` synchronous API through PDRouter (`POST /openapi/{serviceCode}/file/markdown`) and prints the response result in one step. This skill only targets the latest OpenAPI flow and does not support deprecated legacy routes.\n\n## Installation\n\n```bash\nnpx skills add PaodingAI/skills\n```\n\n## Usage\n\n```bash\nnode skills/pdflux-saas-markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]\n```\n\n## Execution Constraints\n\n- You must invoke `scripts/upload_to_markdown.js` directly. Do not reimplement the API flow yourself.\n- The behavior contract below explains what the script does, what it outputs, and when to use it. It is not a manual checklist for the model to imitate step by step.\n- Even if the task is only to extract tables, read fields, inspect body text, or prepare input for later scripts, you must run this script first and continue from the generated Markdown.\n- Only inspect or modify the script implementation when the script itself is unavailable, failing, or needs a fix. Do not bypass it during normal use.\n\n## When to Use\n\n- Use this skill when the user wants to parse a document, retrieve specific document content, or extract tables from a document.\n- Use this skill when the user says things like \"convert to Markdown\", \"output Markdown\", \"export Markdown\", or \"extract Markdown\", and return the Markdown content directly.\n- When later work depends on the document content, such as summarization, field extraction, document-processing scripts, table comparison, or rule-based validation, use this skill first to parse the document.\n- When the document content is only needed as input for subsequent steps, do not default to showing the full raw Markdown to the user. Prefer saving it to a temporary or working file first, then read, filter, and extract only what is needed.\n- When the user explicitly asks for the original Markdown output or clearly wants a direct document-to-Markdown conversion, show the full Markdown directly.\n\n## Environment Variables\n\n- `PAODINGAI_API_KEY`: Required. The Bearer API key for PDRouter OpenAPI. If it is missing, the script fails immediately. In a skill workflow, the AI should ask the user to provide a valid key, or inject it into the environment before retrying.\n- `PAODINGAI_API_BASE_URL`: Optional. Defaults to `https://platform.paodingai.com/`.\n- `PD_ROUTER_SERVICE_CODE`: Optional. Defaults to `pdflux`.\n- `PDFLUX_INCLUDE_IMAGES`: Optional. Boolean. Markdown output does not include image data by default.\n\n## Default Behavior and Optional Settings\n\n- Parsed results do not include chart or image extraction by default.\n- If charts, images, or similar content are required, enable them explicitly through API parameters. These results are usually returned as base64 and will increase token usage.\n- Markdown output does not include image data by default. If you need embedded image data, set `PDFLUX_INCLUDE_IMAGES=true`.\n\n## Script Behavior\n\n1. Read the token from `PAODINGAI_API_KEY`. If it is missing, fail immediately and prompt the AI to ask the user for a key or inject the environment variable first.\n2. Send one request with the local file to `POST /openapi/{serviceCode}/file/markdown` using `Authorization: Bearer <token>`.\n3. Parse the final API response and output:\n   - Markdown text if the response contains a markdown field.\n   - Otherwise, output the JSON response payload.\n4. If `output-markdown-path` is provided, the script also writes the same output text to that file while still printing it to stdout.\n5. The script writes progress and errors to stderr and returns a non-zero exit code on failure.\n6. When the goal is to retrieve specific content, fields, or tables, read the parsed result and return only the necessary information instead of echoing full raw output to the user.\n7. When the user explicitly asks to \"convert to Markdown\", \"output Markdown\", or expresses an equivalent intent, return the Markdown content directly when present in the API response.\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7fs43qz2hr5wsbcc9sn32qss82cr1y\",\n  \"slug\": \"pdflux-pdf2markdown\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1778818178675\n}\n\nFile v1.0.2:agents/openai.yaml\n\ninterface:\n  display_name: \"PDFlux SaaS Markdown\"\n  short_description: \"Parse docs and tables from PDF, DOCX, and images\"\n  default_prompt: \"Always execute the bundled scripts/upload_to_markdown.js script, which calls the latest synchronous /openapi/{serviceCode}/file/markdown API for one local PDF, DOCX, PPT, image, or similar file. Use PAODINGAI_API_KEY for Bearer authorization and PAODINGAI_API_BASE_URL as the base URL when provided. If the user explicitly asks to convert to markdown or output markdown, return markdown content directly when present in the API response; otherwise extract only the document content or tables needed for the task.\"\n\nArchive v1.0.1: 4 files, 5493 bytes\n\nFiles: agents/openai.yaml (449b), scripts/upload_to_markdown.js (8087b), SKILL.md (4704b), _meta.json (138b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: PDFlux-PDF2Markdown\ndescription: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\nmetadata: {\"author\":\"PAODINGAI\",\"version\":\"1.0.1\",\"openclaw\":{\"emoji\":\"📝\",\"requires\":{\"env\":[\"PAODINGAI_API_KEY\",\"PAODINGAI_API_BASE_URL\"],\"bins\":[\"node\"]}}}\n---\n\n# PDFlux-PDF2Markdown\n\nRun a JavaScript workflow that uploads a single local file to the `pdflux` service through PDRouter, polls the parsing status, and then downloads the resulting Markdown. This is suitable for document parsing, table extraction, content verification, and handing document content off to follow-up scripts.\n\n## Installation\n\n```bash\nnpx skills add PaodingAI/skills\n```\n\n## Usage\n\n```bash\nnode skills/pdflux-saas-markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]\n```\n\n## Execution Constraints\n\n- You must invoke `scripts/upload_to_markdown.js` directly. Do not reimplement the upload, polling, and Markdown download flow yourself.\n- The behavior contract below explains what the script does, what it outputs, and when to use it. It is not a manual checklist for the model to imitate step by step.\n- Even if the task is only to extract tables, read fields, inspect body text, or prepare input for later scripts, you must run this script first and continue from the generated Markdown.\n- Only inspect or modify the script implementation when the script itself is unavailable, failing, or needs a fix. Do not bypass it during normal use.\n\n## When to Use\n\n- Use this skill when the user wants to parse a document, retrieve specific document content, or extract tables from a document.\n- Use this skill when the user says things like \"convert to Markdown\", \"output Markdown\", \"export Markdown\", or \"extract Markdown\", and return the Markdown content directly.\n- When later work depends on the document content, such as summarization, field extraction, document-processing scripts, table comparison, or rule-based validation, use this skill first to parse the document.\n- When the document content is only needed as input for subsequent steps, do not default to showing the full raw Markdown to the user. Prefer saving it to a temporary or working file first, then read, filter, and extract only what is needed.\n- When the user explicitly asks for the original Markdown output or clearly wants a direct document-to-Markdown conversion, show the full Markdown directly.\n\n## Environment Variables\n\n- `PD_ROUTER_API_KEY`: Required. The Bearer API key for PDRouter. If it is missing, the script fails immediately. In a skill workflow, the AI should ask the user to provide a valid key, or inject it into the environment before retrying. The API key can be obtained from the PDRouter platform: [https://platform.paodingai.com/](https://platform.paodingai.com/)\n- `PDFLUX_INCLUDE_IMAGES`: Optional. Boolean. Markdown output does not include image data by default.\n\n## Default Behavior and Optional Settings\n\n- Parsed results do not include chart or image extraction by default.\n- If charts, images, or similar content are required, enable them explicitly through API parameters. These results are usually returned as base64 and will increase token usage.\n- Markdown output does not include image data by default. If you need embedded image data, set `PDFLUX_INCLUDE_IMAGES=true`.\n\n## Script Behavior\n\n1. Read the token from `PD_ROUTER_API_KEY`. If it is missing, fail immediately and prompt the AI to ask the user for a key or inject the environment variable first.\n2. Upload the file with `POST /openapi/{serviceCode}/upload` using `Authorization: Bearer <token>`.\n3. Poll `GET /openapi/{serviceCode}/document/{uuid}` until `parsed === 2`.\n4. Fail immediately if the parsing status becomes negative.\n5. Download the Markdown from `GET /openapi/{serviceCode}/document/{uuid}/markdown`.\n6. If `output-markdown-path` is provided, the script also writes the Markdown to that file while still printing it to stdout.\n7. The script writes progress and errors to stderr and returns a non-zero exit code on failure.\n8. When the goal is to retrieve specific content, fields, or tables, read the parsed result and return only the necessary information instead of echoing the full raw Markdown to the user.\n9. When the user explicitly asks to \"convert to Markdown\", \"output Markdown\", or expresses an equivalent intent, return the Markdown content directly rather than only a summary or extracted fields.\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7fs43qz2hr5wsbcc9sn32qss82cr1y\",\n  \"slug\": \"pdflux-pdf2markdown\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1774861862469\n}\n\nFile v1.0.1:agents/openai.yaml\n\ninterface:\n  display_name: \"PDFlux SaaS Markdown\"\n  short_description: \"Parse docs and tables from PDF, DOCX, and images\"\n  default_prompt: \"Always execute the bundled scripts/upload_to_markdown.js script to parse one local PDF, DOCX, PPT, image, or similar file. If the user explicitly asks to convert to markdown or output markdown, return the markdown content directly; otherwise extract only the document content or tables needed for the task.\"\n\nArchive v1.0.0: 4 files, 5489 bytes\n\nFiles: agents/openai.yaml (449b), scripts/upload_to_markdown.js (8087b), SKILL.md (4065b), _meta.json (138b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: PDFlux-PDF2Markdown\ndescription: 将非结构化文档转化为“大模型 Ready”的结构化数据。支持 PDF、Word、PPT 及图片，一键提取段落、公式、表格、图表等元素，生成最高 8 级目录索引，并按阅读逻辑组织输出 Markdown。应用场景：字段抽取、对比校验、知识检索与智能问答。\n---\n\n# PDFlux-PDF2Markdown\n\n执行一个 JavaScript 工作流，先通过 PDRouter 上传单个本地文件到 `pdflux` 服务，再轮询解析状态并下载 markdown。适合文档解析、表格提取、内容核对，以及把文档内容交给后续脚本继续处理。\n\n## 安装方式\n\n```bash\nnpx skills add PaodingAI/skills\n```\n\n## 运行方式\n\n```bash\nnode skills/pdflux-sass-markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]\n```\n\n## 执行约束\n\n- 必须直接调用 `scripts/upload_to_markdown.js`，不要自行重写通过 PDRouter 上传、轮询、下载 markdown 的流程。\n- 行为约定仅用于说明脚本做什么、输出什么、何时适合使用，不是给模型手工照着执行的步骤。\n- 即使任务只是提取表格、获取字段、读取正文或为后续脚本准备输入，也必须先运行该脚本，再基于脚本产出的 markdown 继续处理。\n- 只有在脚本本身不可用、报错、或需要修复脚本时，才允许检查或修改脚本实现；在正常使用场景下不要绕过脚本。\n\n## 适用场景\n\n- 当用户要解析文档、获取文档具体内容或抽取文档表格时，使用这个 skill。\n- 当用户输入类似“转 markdown”“输出 markdown”“导出 markdown”“提取 markdown”时，使用这个 skill，并直接输出 markdown 内容。\n- 当后续任务依赖文档内容继续处理，例如生成摘要、抽取字段、编写脚本处理文档、对比表格或做规则校验时，优先先用这个 skill 解析文档。\n- 当只是需要文档内容供后续操作使用时，不默认向用户输出原始 markdown 全文；优先将 markdown 保存到临时文件或工作文件，再读取、筛选、提取需要的内容。\n- 当用户明确要求“输出 markdown 原文”或表达的是“转 markdown”类直接转换需求时，直接展示完整 markdown。\n\n## 环境变量\n\n- `PD_ROUTER_API_KEY`: 必填。PDRouter 的 Bearer API Key。若未设置，脚本会直接报错；在 skill 场景下，AI 应提示用户提供可用的 key，或先将其注入环境变量后再重试。可通过 PDRouter 平台获取 API Key：[https://platform.paodingai.com/](https://platform.paodingai.com/)\n- `PDFLUX_INCLUDE_IMAGES`: 可选。布尔值。markdown 默认不包含图片数据。\n\n## 默认行为与可选参数\n\n- 文件解析结果默认不包含图表、图片类解析。\n- 如果业务需要图表、图片等内容，可通过接口参数显式开启；相关结果通常以 base64 形式返回，会增加额外 tokens 消耗。\n- markdown 结果默认不包含图片数据；如果需要包含图片，请设置 `PDFLUX_INCLUDE_IMAGES=true`。\n\n## 脚本行为说明\n\n1. 从 `PD_ROUTER_API_KEY` 读取令牌；若缺失则立即失败，并提示 AI 向用户索要 key 或先注入环境变量。\n2. 使用 `Authorization: Bearer <token>` 调用 `POST /openapi/{serviceCode}/upload` 上传文件。\n3. 持续轮询 `GET /openapi/{serviceCode}/document/{uuid}`，直到 `parsed === 2`。\n4. 当解析状态为负值时立即失败。\n5. 从 `GET /openapi/{serviceCode}/document/{uuid}/markdown` 下载 markdown。\n6. 若传入 `output-markdown-path`，脚本会额外将 markdown 写入该文件；同时仍会把 markdown 输出到 stdout。\n7. 脚本将进度与错误写入 stderr，错误时返回非零退出码。\n8. 当任务目标是获取具体内容、字段或表格时，读取解析结果并只输出必要信息，不向用户直接回显原始 markdown 全文。\n9. 当用户明确表达“转 markdown”“输出 markdown”或等价意图时，直接返回 markdown 内容，而不是只返回提取后的摘要或字段。\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7fs43qz2hr5wsbcc9sn32qss82cr1y\",\n  \"slug\": \"pdflux-pdf2markdown\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1774854331135\n}\n\nFile v1.0.0:agents/openai.yaml\n\ninterface:\n  display_name: \"PDFlux SaaS Markdown\"\n  short_description: \"Parse docs and tables from PDF, DOCX, and images\"\n  default_prompt: \"Always execute the bundled scripts/upload_to_markdown.js script to parse one local PDF, DOCX, PPT, image, or similar file. If the user explicitly asks to convert to markdown or output markdown, return the markdown content directly; otherwise extract only the document content or tables needed for the task.\"","readmeExcerpt":"Skill: PDFlux SaaS Markdown Owner: paodingai Summary: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other... Tags: latest:1.3.3 Version history: v1.3.3 | 2026-07-24T09:35:56.239Z | user Release v1.3.3 v1.3.2 | 2026-06-05T09:23:55.125Z | user Release v1.3.2 v1.3.1 | 2026-06-04T10:32:24.824Z | user Release v1.3.1 v1","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"npx skills add PaodingAI/skills"},{"language":"bash","snippet":"node skills/pdflux-pdf2markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]"},{"language":"bash","snippet":"npx skills add PaodingAI/skills"},{"language":"bash","snippet":"node skills/pdflux-pdf2markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]"},{"language":"bash","snippet":"npx skills add PaodingAI/skills"},{"language":"bash","snippet":"node skills/pdflux-saas-markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: PDFlux-PDF2Markdown\ndescription: Convert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\nmetadata:\n  {\n    'author': 'PAODINGAI',\n    'version': '1.0.1',\n    'openclaw':\n      {\n        'emoji': '📝',\n        'requires':\n          {\n            'env': ['PAODINGAI_API_KEY', 'PAODINGAI_API_BASE_URL'],\n            'bins': ['node'],\n          },\n      },\n  }\n---\n\n# PDFlux-PDF2Markdown\n\nRun a JavaScript workflow that submits a single local file to the `pdflux` synchronous API through PDRouter (`POST /openapi/{serviceCode}/file/markdown`) and prints the response result in one step. This skill only targets the latest OpenAPI flow and does not support deprecated legacy routes.\n\n## Installation\n\n```bash\nnpx skills add PaodingAI/skills\n```\n\n## Usage\n\n```bash\nnode skills/pdflux-pdf2markdown/scripts/upload_to_markdown.js <local-file-path> [output-markdown-path]\n```\n\n## Execution Constraints\n\n- You must invoke `scripts/upload_to_markdown.js` directly. Do not reimplement the API flow yourself.\n- The behavior contract below explains what the script does, what it outputs, and when to use it. It is not a manual checklist for the model to imitate step by step.\n- Even if the task is only to extract tables, read fields, inspect body text, or prepare input for later scripts, you must run this script first and continue from the generated Markdown.\n- Only inspect or modify the script implementation when the script itself is unavailable, failing, or needs a fix. Do not bypass it during normal use.\n\n## When to Use\n\n- Use this skill when the user wants to parse a document, retrieve specific document content, or extract tables from a document.\n- Use this skill when the user says things like \"convert to Markdown\", \"output Markdown\", \"export Markdown\", or \"extract Markdown\", and return the Markdown content directly.\n- When later work depends on the document content, such as summarization, field extraction, document-processing scripts, table comparison, or rule-based validation, use this skill first to parse the document.\n- When the document content is only needed as input for subsequent steps, do not default to showing the full raw Markdown to the user. Prefer saving it to a temporary or working file first, then read, filter, and extract only what is needed.\n- When the user explicitly asks for the original Markdown output or clearly wants a direct document-to-Markdown conversion, show the full Markdown directly.\n\n## Environment Variables\n\n- `PAODINGAI_API_KEY`: Required. The Bearer API key for PDRouter OpenAPI. If it is missing, the script fails immediately. In a skill workflow, the AI should ask the user to provide a valid key, or inject it into the environment "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7fs43qz2hr5wsbcc9sn32qss82cr1y\",\n  \"slug\": \"pdflux-pdf2markdown\",\n  \"version\": \"1.3.3\",\n  \"publishedAt\": 1784885756239\n}"},{"path":"skill-card.md","content":"## Description:\n\nConvert unstructured documents into LLM-ready structured data. Supports PDF, Word, PPT, and images; extracts paragraphs, formulas, tables, charts, and other elements in one step; generates up to 8 levels of headings; and outputs Markdown organized in reading order. Useful for field extraction, comparison and validation, knowledge retrieval, and intelligent Q&A.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[paodingai](https://clawhub.ai/user/paodingai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and document-processing agents use this skill to convert PDFs, Word documents, presentations, and images into Markdown for extraction, comparison, retrieval, summarization, validation, and question answering.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Local documents are uploaded to an external PDFlux endpoint for conversion.\n\nMitigation: Use the skill only with documents you are authorized to send to PaodingAI/PDFlux.\n\nRisk: A configurable API base URL can redirect uploads and credentials to a custom endpoint.\n\nMitigation: Keep PAODINGAI_API_BASE_URL on the official HTTPS service unless intentionally using a trusted custom endpoint.\n\nRisk: The workflow requires a bearer API key for the external service.\n\nMitigation: Use a limited API key and avoid exposing it in prompts, logs, or shared configuration.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/paodingai/skills/pdflux-pdf2markdown)\n- [PaodingAI platform API base](https://platform.paodingai.com/platform/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, files]\n\n**Output Format:** [Markdown text or JSON response payload, optionally saved to a Markdown file]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires Node and a PAODINGAI_API_KEY; uploads one local document to the configured PDFlux endpoint; image data is excluded unless explicitly enabled.]\n\n## Skill Version(s):\n\n1.3.3 (source: server release metadata)\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."},{"path":"agents/openai.yaml","content":"interface:\n  display_name: \"PDFlux SaaS Markdown\"\n  short_description: \"Parse docs and tables from PDF, DOCX, and images\"\n  default_prompt: \"Always execute the bundled scripts/upload_to_markdown.js script, which calls the latest synchronous /openapi/{serviceCode}/file/markdown API for one local PDF, DOCX, PPT, image, or similar file. Use PAODINGAI_API_KEY for Bearer authorization and PAODINGAI_API_BASE_URL as the base URL when provided. If the user explicitly asks to convert to markdown or output markdown, return markdown content directly when present in the API response; otherwise extract only the document content or tables needed for the task.\""}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1359,"uniquenessScore":44,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T09:23:18.346Z","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-10T09:23:18.346Z","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-10T11:50:21.323Z","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"}]}}}