html_to_markdown
Convert HTML files to Markdown format by providing an input file path and output directory.
Instructions
Convert HTML to Markdown format
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| inputPath | Yes | Path to the input HTML file | |
| outputDir | Yes | Directory where Markdown file should be saved |
Implementation Reference
- src/tools/htmlTools.ts:206-242 (handler)The core handler function that converts HTML to Markdown. Reads an input HTML file, uses TurndownService to convert it to Markdown format, and writes the output .md file.
export async function htmlToMarkdown(inputPath: string, outputDir: string) { try { console.error(`Starting HTML to Markdown conversion...`); console.error(`Input file: ${inputPath}`); console.error(`Output directory: ${outputDir}`); // 確保輸出目錄存在 try { await fs.access(outputDir); console.error(`Output directory exists: ${outputDir}`); } catch { console.error(`Creating output directory: ${outputDir}`); await fs.mkdir(outputDir, { recursive: true }); console.error(`Created output directory: ${outputDir}`); } const uniqueId = generateUniqueId(); const htmlContent = await fs.readFile(inputPath, "utf-8"); const turndownService = new TurndownService(); const markdown = turndownService.turndown(htmlContent); const outputPath = path.join(outputDir, `markdown_${uniqueId}.md`); await fs.writeFile(outputPath, markdown); console.error(`Written Markdown to ${outputPath}`); return { success: true, data: `Successfully converted HTML to Markdown: ${outputPath}`, }; } catch (error) { console.error(`Error in htmlToMarkdown:`, error); return { success: false, error: error instanceof Error ? error.message : "Unknown error", }; } } - src/tools/htmlTools.ts:52-70 (schema)The Tool definition with name 'html_to_markdown', description, and inputSchema requiring inputPath and outputDir.
// HTML 轉 Markdown 工具 export const HTML_TO_MARKDOWN_TOOL: Tool = { name: "html_to_markdown", description: "Convert HTML to Markdown format", inputSchema: { type: "object", properties: { inputPath: { type: "string", description: "Path to the input HTML file", }, outputDir: { type: "string", description: "Directory where Markdown file should be saved", }, }, required: ["inputPath", "outputDir"], }, }; - src/tools/_index.ts:9-9 (registration)The tool is registered in the tools array as HTML_TO_MARKDOWN_TOOL (line 9), and re-exported via the wildcard export on line 15.
export const tools = [DOCUMENT_READER_TOOL, PDF_MERGE_TOOL, PDF_SPLIT_TOOL, DOCX_TO_PDF_TOOL, DOCX_TO_HTML_TOOL, HTML_CLEAN_TOOL, HTML_TO_TEXT_TOOL, HTML_TO_MARKDOWN_TOOL, HTML_EXTRACT_RESOURCES_TOOL, HTML_FORMAT_TOOL, TEXT_DIFF_TOOL, TEXT_SPLIT_TOOL, TEXT_FORMAT_TOOL, TEXT_ENCODING_CONVERT_TOOL, EXCEL_READ_TOOL, FORMAT_CONVERTER_TOOL]; - src/index.ts:186-201 (handler)The MCP server request handler that routes 'html_to_markdown' calls to the htmlToMarkdown function and returns the result.
if (name === "html_to_markdown") { const { inputPath, outputDir } = args as { inputPath: string; outputDir: string; }; const result = await htmlToMarkdown(inputPath, outputDir); if (!result.success) { return { content: [{ type: "text", text: `Error: ${result.error}` }], isError: true, }; } return { content: [{ type: "text", text: fileOperationResponse(result.data) }], isError: false, };