用 AI 把 Markdown 文件夹一键转成静态网站——适合文档、博客、知识库

手头有一堆 Markdown 文件,想快速生成一个网站。这个工具扫描文件夹,AI 自动生成导航、索引页面,一键输出静态 HTML。

核心代码

#!/usr/bin/env python3
# md2site.py
import os, shutil
from pathlib import Path
from datetime import datetime
from openai import OpenAI
import markdown
from dotenv import load_dotenv
load_dotenv()

client = OpenAI(api_key=os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com/v1")

TEMPLATE = """


{title}

*{{margin:0;padding:0;box-sizing:border-box}}
body{{font-family:-apple-system,sans-serif;max-width:900px;margin:0 auto;padding:20px;line-height:1.7;color:#334155}}
nav a{{color:#3b82f6;text-decoration:none;margin-right:16px;font-size:14px}}
nav a:hover{{text-decoration:underline}}
h1,h2,h3{{margin:16px 0 8px;color:#1e293b}}
pre{{background:#1e293b;color:#e2e8f0;padding:16px;border-radius:8px;overflow-x:auto;font-size:13px}}
code{{background:#f1f5f9;padding:2px 6px;border-radius:4px;font-size:13px}}
pre code{{background:none;padding:0}}
.footer{{margin-top:40px;padding-top:16px;border-top:1px solid #e2e8f0;font-size:12px;color:#94a3b8}}

{nav}
{content}
Generated by md2site | {date}
"""

def build_site(src="docs", out="_site"):
    """将 Markdown 文件夹转为静态网站。"""
    src = Path(src)
    out = Path(out)
    out.mkdir(exist_ok=True)
    (out / "css").mkdir(exist_ok=True)

    md_files = sorted(src.rglob("*.md"))
    nav_html = " ".join(f'{f.stem}' for f in md_files)

    for md_file in md_files:
        content = md_file.read_text(encoding="utf-8")
        html_body = markdown.markdown(content, extensions=["fenced_code", "tables"])
        page = TEMPLATE.format(title=md_file.stem, nav=nav_html, content=html_body,
                               date=datetime.now().strftime("%Y-%m-%d"))

        out_file = out / md_file.with_suffix(".html").name
        out_file.write_text(page, encoding="utf-8")

    # 生成索引页
    generate_index(md_files, nav_html, out)
    print(f"✅ 网站已生成到 {out.resolve()} ({len(md_files)} 页)")

def generate_index(md_files, nav_html, out):
    """AI 生成索引页面。"""
    titles = "\n".join(f"- {f.stem}" for f in md_files)
    resp = client.chat.completions.create(
        model="deepseek-chat",
        messages=[{"role": "user", "content": f"根据以下文件列表生成一个简短的网站首页介绍(100字内):\n{titles}"}],
        temperature=0.5, max_tokens=200,
    )
    intro = resp.choices[0].message.content
    links = "".join(f'{f.stem}' for f in md_files)
    index = TEMPLATE.format(title="首页", nav=nav_html,
        content=f"📚 文档中心{intro}目录{links}",
        date=datetime.now().strftime("%Y-%m-%d"))
    (out / "index.html").write_text(index, encoding="utf-8")

if __name__ == "__main__":
    build_site(sys.argv[1] if len(sys.argv) > 1 else "docs")

使用方式

pip install markdown python-dotenv openai
python md2site.py ./my-docs
# ✅ 网站已生成到 _site/ (12 页)

效果

_site/
├── index.html          # AI 生成的首页
├── 快速开始.html
├── API文档.html
└── ...

每个 Markdown 文件对应一个带导航、代码高亮的页面。打开 _site/index.html 即可浏览。

总结

一个轻量的 Markdown 转网站工具,几十行代码,适合把文档、笔记、知识库快速变成可分享的网页。

本文由 Zyentor(智元界)原创发布