651Shadow/web-to-markdown-api

GitHub: 651Shadow/web-to-markdown-api

TypeScript serverless API,将公开网页或原始 HTML 转换为整洁 Markdown,面向 LLM 摄取和 RAG 管线场景。

Stars: 0 | Forks: 0

# Web 到 Markdown API 将公开网页或原始 HTML 文档转换为更整洁的 Markdown,适用于 LLM 摄取、RAG pipeline 和归档工作流。 本仓库是一个 **TypeScript/Vercel serverless 参考实现**,重点关注大多数人会忽略的部分:输入验证和更安全的 fetch 行为。 ## 为什么这个项目很有用 - 将杂乱的公开页面转换为更密集的 Markdown,以适应 prompt 和 context window - 接受 `url` 或原始 HTML 输入 - 拒绝明显不安全的 fetch 目标,而不是盲目代理任何内容 - 提供易于检查、测试和扩展的小型代码库 ## 当前功能 - 通过 `url` 进行 fetch 模式 - 通过 `html` 或 `Content-Type: text/html` 直接摄取 HTML - 在 Markdown 转换前进行深度的 HTML 清理 - 提供 `base_url` 时解析相对链接 - 使用 RapidAPI proxy secret 或 admin key 进行请求身份验证 - 轻量级内存内速率限制 ## 安全态势 该 handler 目前会拦截: - localhost 和私有网络目标 - 落在私有地址上的重定向链 - URL 模式下非 HTML 的 fetch 响应 - 超大页面和 HTML payload - 未经身份验证的请求(除非 `ALLOW_UNAUTHENTICATED_DEV=true`) - 通过轻量级内存内速率限制器拦截突发请求者 这使得本仓库可以作为代码合理地发布,但**共享/公开的部署仍应设置真实的 secret 和基于部署的配额**。 ## API 结构 ### GET ``` curl -G 'https://your-api.vercel.app/' \ --data-urlencode 'url=https://example.com/article' \ -H 'x-rapidapi-proxy-secret: YOUR_SECRET' ``` ### POST JSON ``` curl -X POST 'https://your-api.vercel.app/' \ -H 'Content-Type: application/json' \ -H 'x-rapidapi-proxy-secret: YOUR_SECRET' \ -d '{"url":"https://example.com/article"}' ``` ### POST 原始 HTML ``` curl -X POST 'https://your-api.vercel.app/' \ -H 'Content-Type: text/html' \ -H 'x-rapidapi-proxy-secret: YOUR_SECRET' \ --data-binary @page.html ``` ## 本地开发 ``` npm install npm run test npm run typecheck npm run build ``` ## 环境变量 ``` RAPIDAPI_SECRET=replace-me ADMIN_SECRET=replace-me ALLOW_UNAUTHENTICATED_DEV=false RATE_LIMIT_MAX=30 RATE_LIMIT_WINDOW_MS=60000 ``` 使用 `.env.example` 作为本地起点。在共享环境中,请将 `ALLOW_UNAUTHENTICATED_DEV` 置为 `false`。 ## 验证 本仓库已通过以下方式验证: - `npm test` - `npm run typecheck` - `npm run build` ## 当前限制 - 8 秒 fetch 超时 - 免费层级模式下最大内容大小为 2MB - 仅限内存内限流 - fetch 模式仅接受解析为公共地址的 HTTP/HTTPS URL ## 未来改进建议 - 如果流量公开,则将内存内限流替换为基于部署的配额 - 围绕 Vercel handler 添加集成测试 - 仅在配置好生产环境身份验证和配额后,再添加小型的托管 Demo ## 许可证 MIT
标签:LLM数据预处理, Markdown, Serverless, Syscall, TypeScript, Web开发, 安全插件, 格式转换, 自动化攻击