html-gen · CLI 使用说明

创建: 2026-07-11 11:57 · 编辑: 2026-07-11 11:57
字数: 1,002 · 阅读约 5 分钟

三层模板架构的 CLI 生成器:将 Markdown/JSON 注入模板,输出自包含单文件 HTML。
零外部依赖,生成即用。

一、概述

html-gen 是 HTML 模板系统的 Layer 3 — CLI 生成器。它读取 Layer 2 模板,注入数据,输出单HTML 文件。

三层架构

Layer 1: style-guide.css       组件基座(CSS 变量/按钮/表格/弹窗/分页)
Layer 2: layout-*.html         模板骨架(A 型表格 / B 型文档 / C 型知识库)
Layer 3: html-gen.py            CLI 生成器(doc / table / knowledge)

安装

pip install -e /path/to/html-templates

或直接运行:

python /path/to/html-gen.py <子命令> [参数]

二、子命令总览

子命令 模板 输入 输出场景
doc layout-doc.html .md Markdown 分析报告、技术文档、长文阅读
table layout-table.html .json 数据 文件索引、收藏管理、项目列表
knowledge layout-knowledge.html .json 条目 + 类目 知识库、面试准备、项目 Wiki

三、doc — Markdown 转文档

用法

html-gen doc -i report.md -o report.html
html-gen doc -i analysis.md --title "竞品分析报告" -o output.html

参数

参数 说明 必填
-i, --input 输入 Markdown 文件路径
-o, --output 输出 HTML 路径(默认同目录同名.html)
--title 覆盖文档标题(默认从 # 标题 提取)
--subtitle 副标题(显示在侧边栏和页头)

自动元信息

生成时自动注入以下元信息到文档顶部:

项目 来源 格式示例
路径 文件绝对路径 ~/Documents/report.md
创建时间 文件 st_ctime 2026-07-07 14:30
编辑时间 文件 st_mtime 2026-07-07 16:45
字数 len(text.split()) 1,234
阅读时长 字数 ÷ 200 6 分钟

支持的 Markdown 语法

语法 写法 说明
标题 # h1 / ## h2 / ### h3 仅 3 级,h2/h3 自动加入 TOC
加粗 文字 全局有效,表格内也支持
斜体 文字 ** 优先匹配
行内代码 ` code `
 内无效
链接 文字 自动 target="_blank"
图片 不解析(安全限制) 用纯 HTML
围栏代码块 ` ` ` 支持变长 fence 嵌套,关闭行必须纯反引号无文字
表格 `\ A \ B \ ` 第二行 `\ :---\ :---\ ` 标记对齐
无序列表 - 列表项 连续自动合并
有序列表 1. 列表项 连续自动合并
分隔线 --- 连续 3+ 短横
引用 > 文字 单行模式
Callout > Note: 文字 支持 Note/Tip/Warning/Danger + 中文

更多功能

功能 说明
自动 TOC 从 h2/h3 生成侧边栏目录,平滑滚动
滚动高亮 当前阅读章节自动高亮
代码复制 悬停出现复制按钮,execCommand 兜底
代码行号 多行代码块左侧 CSS 行号,单行跳过
锚点链接 h2/h3 悬浮 ¶,点击复制 #id
Callout 提示框 Note/Tip/Warning/Danger 彩色边框
外链归档 自动提取链接,去重排序追加到底部
阅读进度条 顶部固定 2px 进度条
图片灯箱 点击放大,Escape/外部点击关闭
零外部依赖 自包含单文件 HTML

四、table — JSON 转数据表格

用法

html-gen table -d data.json -o index.html
html-gen table -d data.json --title "项目列表"

参数

参数 说明 必填
-d, --data JSON 数据文件路径
--title 页面标题(默认「数据表格」)
-o, --output 输出 HTML 路径(默认 index.html

数据格式

[
  {
    "项目": "Hermes Agent",
    "Star": 50200,
    "语言": "Python",
    "最后提交": "2026-07-06"
  }
]

列定义规则

规则 说明
自动推导 从第一条记录的 key 自动生成列名
顺序 按 JSON 字段顺序排列
列宽 自动适应内容
支持 HTML 单元格内容可包含 等标签

功能特性

功能 说明
实时搜索 按任意字段全文匹配,输入即过滤
多字段排序 点击表头切换升/降序
客户端分页 每页 30 条,自动计算页数
深色主题 与 style-guide.css 一致
无数据提示 搜索无结果时显示「无匹配数据」

五、knowledge — JSON 转知识库

用法

# 最简单的启动(自动从数据推导类目)
html-gen knowledge -d data.json -o kb.html

# 带自定义分组
html-gen knowledge -d data.json -g groups.json \
  --title "技能知识库" \
  --welcome "从上方类目选择" \
  -o kb.html

参数

参数 说明 必填
-d, --data 条目 JSON 数据
-g, --groups 类目分组 JSON(可选,自动推导)
--title 知识库标题
--subtitle 副标题
--welcome 欢迎面板提示文本
-o, --output 输出 HTML 路径

数据格式

[
  {
    "title": "Hermes Agent",
    "group": "Agent 框架",
    "section": "核心工具",
    "badge": "能讲",
    "desc": "<p>功能说明...</p>",
    "url": "detail.html"
  }
]

字段说明

字段 说明 必填
title 条目名称(侧栏显示)
group 所属类目(对应横向 Tab)
section 子分类(侧栏分组)
badge 标记文本(如熟练度)
desc 内联 HTML 内容(无 url 时显示)
url 外部 HTML 路径(优先于 desc,iframe 加载)

groups.json(可选)

[
  { "key": "Agent 框架", "label": "Agent 框架", "icon": "🤖" },
  { "key": "HTML 工具",  "label": "HTML 工具",  "icon": "🌐" }
]

功能特性

功能 说明
顶部标签栏 横向切换大类目,左侧章节跟随
左侧章节列表 含熟练度/标记 badge
双内容模式 url → iframe 加载;有 desc → 内联渲染
欢迎面板 空状态提示,显示类目图例
移动端自适应 侧边栏可收起

六、路径与模板

文件结构

html-templates/
├── style-guide.css             Layer 1 样式基座
├── layout-doc.html             Layer 2 B 型文档模板
├── layout-table.html           Layer 2 A 型表格模板
├── layout-knowledge.html       Layer 2 C 型知识库模板
└── html-gen.py                 Layer 3 CLI 生成器

html-demos/
├── index.html                  模板展示首页
├── demos-index.html            A 型文档索引
├── template-*-guide.html       各方案使用说明
├── *_demo.html                 各类型案例
└── chaitin/                    商业分析案例子目录

预览

# 从 skills/ 目录启动,确保 CSS 相对路径正确
hs ~/CodeSpace/script-miner/skills --index html-demos/index.html -o

七、常见问题

Q: 生成的 HTML 代码块内 `**bold**` 被渲染了?

确保 inline_format 不在 <pre><code> 内执行(v1.1+ 已修复)。

Q: 复制按钮点了没反应?

navigator.clipboardhttp:// 非安全上下文中不可用。v1.1+ 用 execCommand 兜底。

Q: 代码行号显示不正常?

移除 .code-with-lines .line { display: block }。行间间距由 <pre>line-height 统一控制(v1.1+ 已修复)。

Q: C 型知识库内容显示「请配置 desc 内容」?

JSON 中字段名必须是 desc(不是 content)。v1.0+ 已统一。

Q: B 型文档中 `> **Note:**` 没有渲染为 callout?

支持半角冒号和全角冒号(Note: / 注意)。如不生效,检查关键词拼写。

Q: 文档中的外链底部没有归档?

只有 https?:// 开头的链接会被归档。相对路径和 # 锚点不归档。


迭代记录

版本 日期 变更
v1.0 2026-07-07 初版:html-gen 完整使用说明