{
  "schemaVersion": "1.0",
  "item": {
    "slug": "file-to-markdown",
    "name": "File to Markdown Converter",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/alaminrifat/file-to-markdown",
    "canonicalUrl": "https://clawhub.ai/alaminrifat/file-to-markdown",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/file-to-markdown",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=file-to-markdown",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "readme.txt",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/file-to-markdown"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/file-to-markdown",
    "agentPageUrl": "https://openagent3.xyz/skills/file-to-markdown/agent",
    "manifestUrl": "https://openagent3.xyz/skills/file-to-markdown/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/file-to-markdown/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "Convert files into clean, structured, AI-ready Markdown using the markdown.new API powered by Cloudflare Workers AI toMarkdown().\n\nSupports 20+ formats including documents, spreadsheets, images, and structured data.\n\nNo authentication required (500 requests/day per IP)."
      },
      {
        "title": "When to Use This Skill",
        "body": "Use this skill whenever you need to:\n\nExtract text from files for LLM processing\nConvert PDFs or Office files into Markdown\nNormalize data into structured text\nProcess uploaded user files\nScrape webpage content into Markdown\nConvert images into AI-generated descriptions + content\n\nCommon AI workflows:\n\nRAG ingestion pipelines\nKnowledge base creation\nDocument summarization\nDataset extraction\nSpreadsheet analysis\nOCR-like extraction from images"
      },
      {
        "title": "Documents",
        "body": ".pdf\n.docx\n.odt"
      },
      {
        "title": "Spreadsheets",
        "body": ".xlsx\n.xls\n.xlsm\n.xlsb\n.et\n.ods\n.numbers"
      },
      {
        "title": "Images",
        "body": ".jpg\n.jpeg\n.png\n.webp\n.svg"
      },
      {
        "title": "Text & Structured Data",
        "body": ".txt\n.md\n.csv\n.json\n.xml\n.html\n.htm\n\nNotes:\n\nImage conversion uses AI object detection + summarization.\nHTML URL conversion uses a web page pipeline.\nUploaded HTML uses Workers AI conversion."
      },
      {
        "title": "API Base URL",
        "body": "https://markdown.new"
      },
      {
        "title": "1️⃣ Convert Remote File (Simple GET)",
        "body": "Returns plain Markdown text.\n\nGET /:file-url\n\nExample:\n\ncurl -s \"https://markdown.new/https://example.com/report.pdf\""
      },
      {
        "title": "2️⃣ Convert Remote File (JSON Response)",
        "body": "Returns metadata + Markdown.\n\nGET /:file-url?format=json\n\nExample:\n\ncurl -s \"https://markdown.new/https://example.com/report.pdf?format=json\""
      },
      {
        "title": "3️⃣ Convert Remote File via POST",
        "body": "Use when you want structured JSON response.\n\nPOST /\r\nContent-Type: application/json\n\nBody:\n\n{\r\n  \"url\": \"https://example.com/report.pdf\"\r\n}\n\nExample:\n\ncurl -s https://markdown.new/ \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"url\": \"https://example.com/report.pdf\"}'"
      },
      {
        "title": "4️⃣ Upload Local File",
        "body": "Use when file is not publicly accessible.\n\nPOST /convert\r\nmultipart/form-data\n\nExample:\n\ncurl -s https://markdown.new/convert \\\r\n  -F \"file=@document.pdf\""
      },
      {
        "title": "URL Conversion Response",
        "body": "{\r\n  \"success\": true,\r\n  \"url\": \"https://example.com/report.pdf\",\r\n  \"title\": \"Quarterly Report\",\r\n  \"content\": \"# Quarterly Report\\n\\n...\",\r\n  \"method\": \"Workers AI (file)\",\r\n  \"duration_ms\": 1200,\r\n  \"tokens\": 850\r\n}"
      },
      {
        "title": "Upload Conversion Response",
        "body": "{\r\n  \"success\": true,\r\n  \"data\": {\r\n    \"title\": \"Q4 Report\",\r\n    \"content\": \"# Q4 Report\\n\\n...\",\r\n    \"filename\": \"report.xlsx\",\r\n    \"file_type\": \".xlsx\",\r\n    \"tokens\": 1250,\r\n    \"processing_time_ms\": 320\r\n  }\r\n}"
      },
      {
        "title": "Prefer GET for Simple Workflows",
        "body": "Use:\n\nGET /:url\n\nWhen:\n\nYou only need Markdown text\nSpeed is important\nNo metadata required"
      },
      {
        "title": "Prefer POST for Structured Pipelines",
        "body": "Use POST when:\n\nMetadata is needed\nToken counts are required\nMonitoring or logging is implemented\nBuilding automation workflows"
      },
      {
        "title": "File Upload Strategy",
        "body": "Use /convert only if:\n\nFile is local\nFile is private\nFile requires authentication to access\n\nOtherwise always prefer URL conversion."
      },
      {
        "title": "Error Handling Strategy",
        "body": "Agents should:\n\nCheck \"success\": true\nRetry once if network failure\nValidate content length > 0\nFallback to alternate extraction if needed"
      },
      {
        "title": "Rate Limits",
        "body": "500 requests/day per IP without API key\nNo signup required\n\nAgents should:\n\nCache results when possible\nAvoid duplicate conversions"
      },
      {
        "title": "JavaScript (Node.js)",
        "body": "const res = await fetch(\"https://markdown.new/\", {\r\n  method: \"POST\",\r\n  headers: { \"Content-Type\": \"application/json\" },\r\n  body: JSON.stringify({\r\n    url: \"https://example.com/file.pdf\"\r\n  })\r\n});\r\n\r\nconst data = await res.json();\r\nconsole.log(data.content);"
      },
      {
        "title": "Python",
        "body": "import requests\r\n\r\nres = requests.post(\r\n    \"https://markdown.new/\",\r\n    json={\"url\": \"https://example.com/file.pdf\"}\r\n)\r\n\r\ndata = res.json()\r\nprint(data[\"content\"])"
      },
      {
        "title": "Agent Decision Tree",
        "body": "If user provides:\n\nInput TypeActionPublic file URLUse GET or POSTLocal fileUse POST /convertImageConvert then summarizeSpreadsheetConvert then analyzeWebpageConvert URL HTML"
      },
      {
        "title": "Output Expectations",
        "body": "The Markdown should be:\n\nClean\nStructured\nAI-friendly\nMinimal noise\nReady for LLM ingestion"
      },
      {
        "title": "Limitations",
        "body": "Complex PDF layouts may lose formatting\nLarge spreadsheets may be truncated\nImages rely on AI interpretation accuracy\nToken limits may apply"
      },
      {
        "title": "Summary",
        "body": "This skill provides a universal file-to-Markdown conversion layer for AI systems with:\n\nNo authentication\nSimple HTTP interface\nMulti-format support\nStructured output\nFast processing\n\nIdeal for document ingestion, RAG pipelines, and automation agents."
      }
    ],
    "body": "File to Markdown — Skill\nOverview\n\nConvert files into clean, structured, AI-ready Markdown using the markdown.new API powered by Cloudflare Workers AI toMarkdown().\n\nSupports 20+ formats including documents, spreadsheets, images, and structured data.\n\nNo authentication required (500 requests/day per IP).\n\nWhen to Use This Skill\n\nUse this skill whenever you need to:\n\nExtract text from files for LLM processing\nConvert PDFs or Office files into Markdown\nNormalize data into structured text\nProcess uploaded user files\nScrape webpage content into Markdown\nConvert images into AI-generated descriptions + content\n\nCommon AI workflows:\n\nRAG ingestion pipelines\nKnowledge base creation\nDocument summarization\nDataset extraction\nSpreadsheet analysis\nOCR-like extraction from images\nSupported Formats\nDocuments\n.pdf\n.docx\n.odt\nSpreadsheets\n.xlsx\n.xls\n.xlsm\n.xlsb\n.et\n.ods\n.numbers\nImages\n.jpg\n.jpeg\n.png\n.webp\n.svg\nText & Structured Data\n.txt\n.md\n.csv\n.json\n.xml\n.html\n.htm\n\nNotes:\n\nImage conversion uses AI object detection + summarization.\nHTML URL conversion uses a web page pipeline.\nUploaded HTML uses Workers AI conversion.\nAPI Base URL\nhttps://markdown.new\n\nEndpoints\n1️⃣ Convert Remote File (Simple GET)\n\nReturns plain Markdown text.\n\nGET /:file-url\n\n\nExample:\n\ncurl -s \"https://markdown.new/https://example.com/report.pdf\"\n\n2️⃣ Convert Remote File (JSON Response)\n\nReturns metadata + Markdown.\n\nGET /:file-url?format=json\n\n\nExample:\n\ncurl -s \"https://markdown.new/https://example.com/report.pdf?format=json\"\n\n3️⃣ Convert Remote File via POST\n\nUse when you want structured JSON response.\n\nPOST /\r\nContent-Type: application/json\n\n\nBody:\n\n{\r\n  \"url\": \"https://example.com/report.pdf\"\r\n}\n\n\nExample:\n\ncurl -s https://markdown.new/ \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"url\": \"https://example.com/report.pdf\"}'\n\n4️⃣ Upload Local File\n\nUse when file is not publicly accessible.\n\nPOST /convert\r\nmultipart/form-data\n\n\nExample:\n\ncurl -s https://markdown.new/convert \\\r\n  -F \"file=@document.pdf\"\n\nResponse Formats\nURL Conversion Response\n{\r\n  \"success\": true,\r\n  \"url\": \"https://example.com/report.pdf\",\r\n  \"title\": \"Quarterly Report\",\r\n  \"content\": \"# Quarterly Report\\n\\n...\",\r\n  \"method\": \"Workers AI (file)\",\r\n  \"duration_ms\": 1200,\r\n  \"tokens\": 850\r\n}\n\nUpload Conversion Response\n{\r\n  \"success\": true,\r\n  \"data\": {\r\n    \"title\": \"Q4 Report\",\r\n    \"content\": \"# Q4 Report\\n\\n...\",\r\n    \"filename\": \"report.xlsx\",\r\n    \"file_type\": \".xlsx\",\r\n    \"tokens\": 1250,\r\n    \"processing_time_ms\": 320\r\n  }\r\n}\n\nBest Practices for AI Agents\nPrefer GET for Simple Workflows\n\nUse:\n\nGET /:url\n\n\nWhen:\n\nYou only need Markdown text\nSpeed is important\nNo metadata required\nPrefer POST for Structured Pipelines\n\nUse POST when:\n\nMetadata is needed\nToken counts are required\nMonitoring or logging is implemented\nBuilding automation workflows\nFile Upload Strategy\n\nUse /convert only if:\n\nFile is local\nFile is private\nFile requires authentication to access\n\nOtherwise always prefer URL conversion.\n\nError Handling Strategy\n\nAgents should:\n\nCheck \"success\": true\nRetry once if network failure\nValidate content length > 0\nFallback to alternate extraction if needed\nRate Limits\n500 requests/day per IP without API key\nNo signup required\n\nAgents should:\n\nCache results when possible\nAvoid duplicate conversions\nIntegration Examples\nJavaScript (Node.js)\nconst res = await fetch(\"https://markdown.new/\", {\r\n  method: \"POST\",\r\n  headers: { \"Content-Type\": \"application/json\" },\r\n  body: JSON.stringify({\r\n    url: \"https://example.com/file.pdf\"\r\n  })\r\n});\r\n\r\nconst data = await res.json();\r\nconsole.log(data.content);\n\nPython\nimport requests\r\n\r\nres = requests.post(\r\n    \"https://markdown.new/\",\r\n    json={\"url\": \"https://example.com/file.pdf\"}\r\n)\r\n\r\ndata = res.json()\r\nprint(data[\"content\"])\n\nAgent Decision Tree\n\nIf user provides:\n\nInput Type\tAction\nPublic file URL\tUse GET or POST\nLocal file\tUse POST /convert\nImage\tConvert then summarize\nSpreadsheet\tConvert then analyze\nWebpage\tConvert URL HTML\nOutput Expectations\n\nThe Markdown should be:\n\nClean\nStructured\nAI-friendly\nMinimal noise\nReady for LLM ingestion\nLimitations\nComplex PDF layouts may lose formatting\nLarge spreadsheets may be truncated\nImages rely on AI interpretation accuracy\nToken limits may apply\nSummary\n\nThis skill provides a universal file-to-Markdown conversion layer for AI systems with:\n\nNo authentication\nSimple HTTP interface\nMulti-format support\nStructured output\nFast processing\n\nIdeal for document ingestion, RAG pipelines, and automation agents."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/alaminrifat/file-to-markdown",
    "publisherUrl": "https://clawhub.ai/alaminrifat/file-to-markdown",
    "owner": "alaminrifat",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/file-to-markdown",
    "downloadUrl": "https://openagent3.xyz/downloads/file-to-markdown",
    "agentUrl": "https://openagent3.xyz/skills/file-to-markdown/agent",
    "manifestUrl": "https://openagent3.xyz/skills/file-to-markdown/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/file-to-markdown/agent.md"
  }
}