[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"readme:anydoc":3},"\u003Ch1>anydoc\u003C\u002Fh1>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fcrates.io\u002Fcrates\u002Fanydoc\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fanydoc.svg\" alt=\"Crates.io\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@firecrawl\u002Fanydoc\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@firecrawl\u002Fanydoc.svg\" alt=\"npm\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Ffirecrawl-anydoc\u002F\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Ffirecrawl-anydoc.svg\" alt=\"PyPI\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fanydoc\u002Fblob\u002FHEAD\u002FLICENSE\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg\" alt=\"License: MIT\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fskills.sh\u002Ffirecrawl\u002Fanydoc\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fskills.sh\u002Fb\u002Ffirecrawl\u002Fanydoc\" alt=\"skills.sh\" \u002F>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Fast Rust library that converts documents (Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF) into clean GitHub-Flavored Markdown. Includes bindings for \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fanydoc\u002Fblob\u002FHEAD\u002Fnode\u002FREADME.md\" rel=\"nofollow ugc noopener\">Node.js\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fanydoc\u002Fblob\u002FHEAD\u002Fpython\u002FREADME.md\" rel=\"nofollow ugc noopener\">Python\u003C\u002Fa>, and the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fanydoc\u002Fblob\u002FHEAD\u002Fwasm\u002FREADME.md\" rel=\"nofollow ugc noopener\">browser\u003C\u002Fa> (WebAssembly).\u003C\u002Fp>\n\u003Cp>Built by \u003Ca href=\"https:\u002F\u002Ffirecrawl.dev\" rel=\"nofollow ugc noopener\">Firecrawl\u003C\u002Fa> to turn any office document into LLM-ready Markdown in single-digit milliseconds, with one consistent output no matter which format goes in. It powers \u003Ca href=\"https:\u002F\u002Ffirecrawl.dev\u002Fparse\" rel=\"nofollow ugc noopener\">Firecrawl Parse\u003C\u002Fa>, so if you'd rather not run it yourself, the hosted API gives you the same conversion plus our OCR models for the scanned pages anydoc can't read on its own.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Ffirecrawl.github.io\u002Fanydoc\u002F\" rel=\"nofollow ugc noopener\">Try it in your browser\u003C\u002Fa>\u003C\u002Fstrong>: the demo page runs the library as WebAssembly, so files are converted locally and never leave your machine.\u003C\u002Fp>\n\u003Ch2>Quick start\u003C\u002Fh2>\n\u003Ch3>Agent skill\u003C\u002Fh3>\n\u003Cp>anydoc ships as an \u003Ca href=\"https:\u002F\u002Fagentskills.io\" rel=\"nofollow ugc noopener\">Agent Skill\u003C\u002Fa>, so your agent can read any document it runs into:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npx skills add firecrawl\u002Fanydoc\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fanydoc\u002Fblob\u002FHEAD\u002Fskills\u002Fconvert-documents-to-markdown\u002FSKILL.md\" rel=\"nofollow ugc noopener\">skill\u003C\u002Fa> teaches the agent to convert documents with the anydoc CLI. Works with \u003Ca href=\"https:\u002F\u002Fclaude.ai\u002Fcode\" rel=\"nofollow ugc noopener\">Claude Code\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fopenai.com\u002Fcodex\u002F\" rel=\"nofollow ugc noopener\">Codex\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fcursor.com\" rel=\"nofollow ugc noopener\">Cursor\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fopencode.ai\" rel=\"nofollow ugc noopener\">OpenCode\u003C\u002Fa>, and any other \u003Ca href=\"https:\u002F\u002Fagentskills.io\u002Fclients\" rel=\"nofollow ugc noopener\">compatible agent\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>CLI\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">npx @firecrawl\u002Fanydoc report.docx               # Markdown to stdout\nnpx @firecrawl\u002Fanydoc slides.pptx -o slides.md  # or to a file\nnpx @firecrawl\u002Fanydoc - --format csv &lt; data.csv # read stdin\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>npx\u003C\u002Fcode> downloads the prebuilt binary for your platform on first run. For a permanent \u003Ccode>anydoc\u003C\u002Fcode> command, install globally with \u003Ccode>npm install -g @firecrawl\u002Fanydoc\u003C\u002Fcode>. Run \u003Ccode>anydoc --help\u003C\u002Fcode> for all options.\u003C\u002Fp>\n\u003Ch3>Node.js\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install @firecrawl\u002Fanydoc\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode class=\"language-js\">import { toDocument, toMarkdown, toMarkdownBytes } from '@firecrawl\u002Fanydoc';\n\n\u002F\u002F From a file path:\nconst markdown = await toMarkdown('report.docx');\n\n\u002F\u002F From bytes, with the format detected from the content:\nconst fromBytes = await toMarkdownBytes(bytes);\n\n\u002F\u002F Or name it, which signature-less formats (CSV) need:\nconst fromCsv = await toMarkdownBytes(bytes, 'csv');\n\n\u002F\u002F Or stop at the document model, which also carries embedded assets:\nconst document = await toDocument(bytes);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>Full API reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fanydoc\u002Fblob\u002FHEAD\u002Fnode\u002FREADME.md\" rel=\"nofollow ugc noopener\">node\u002FREADME.md\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>Python\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">pip install firecrawl-anydoc\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode class=\"language-python\">import anydoc\n\n# From a file path:\nmarkdown = anydoc.to_markdown(\"report.docx\")\n\n# From bytes, with the format detected from the content:\nmarkdown = anydoc.to_markdown_bytes(data)\n\n# Or name it, which signature-less formats (CSV) need:\nmarkdown = anydoc.to_markdown_bytes(data, \"csv\")\n\n# Or stop at the document model, which also carries embedded assets:\ndocument = anydoc.to_document(data)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>Full API reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fanydoc\u002Fblob\u002FHEAD\u002Fpython\u002FREADME.md\" rel=\"nofollow ugc noopener\">python\u002FREADME.md\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>Browser (WebAssembly)\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install @firecrawl\u002Fanydoc-wasm\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode class=\"language-js\">import init, { toMarkdownBytes, toDocument } from '@firecrawl\u002Fanydoc-wasm';\n\nawait init();\n\n\u002F\u002F From bytes, with the format detected from the content:\nconst markdown = toMarkdownBytes(bytes);\n\n\u002F\u002F Or name it, which signature-less formats (CSV) need:\nconst fromCsv = toMarkdownBytes(bytes, 'csv');\n\n\u002F\u002F Or stop at the document model, which also carries embedded assets:\nconst document = toDocument(bytes);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>Full API reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fanydoc\u002Fblob\u002FHEAD\u002Fwasm\u002FREADME.md\" rel=\"nofollow ugc noopener\">wasm\u002FREADME.md\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>Rust\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">cargo add anydoc\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode class=\"language-rust\">\u002F\u002F From a file pa\n\u003C\u002Fcode>\u003C\u002Fpre>\n",1786232074675]