用 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(智元界)原创发布