# 听风 Markdown 公开发布器

将任意项目中的 Markdown 发布为公开文章，稳定地址暂时保留在
`https://tingfeng.ink/library/`。发布器不修改来源项目、不提交 Git，也不触发个人主页整站构建；公开 manifest 会由主站文章索引、搜索、时间轴和标签探索在运行时合并。

## 日常使用

```powershell
publish-md "D:\Project\ET\Docs\report.md"
publish-md ".\Docs\report.md" --dry-run
publish-md ".\Docs\report.md" -Project ET -Slug release-notes
```

- 来源标签依次取命令参数、Frontmatter `project`、Git 根目录名称；它只作为普通标签和稳定文档 ID 的一部分，不生成项目专栏。
- 标题依次取命令参数、Frontmatter `title`、第一个一级标题、文件名。
- `publishedAt` 或 `date` 表示首次发布时间；重复发布保留首次发布时间，只刷新 `updatedAt`。
- 相对图片和附件必须存在于 Markdown 所在目录内；跨目录资源要用 `--asset-root` 明确授权。
- 重复发布相同的“项目 + slug”会更新稳定 URL，上一修订仍保留在服务器。
- 检测到私钥或明显 Token 时默认阻止发布；只有确认是安全示例时才使用 `--allow-sensitive`。

## 本机与服务器位置

- 发布配置：`%USERPROFILE%\.config\tingfeng-library\config.json`
- 全局命令：`%USERPROFILE%\.local\bin\publish-md.cmd`
- 服务器数据：`/www/wwwroot/tingfeng-library`
- Nginx 扩展配置：`/www/server/panel/vhost/nginx/extension/tingfeng.ink/library.conf`

SSH 发布配置只应由当前 Windows 用户、SYSTEM 和 Administrators 读取。不要把私钥或敏感配置复制进项目或聊天。

## 维护命令

```powershell
cd D:\Project\personal-homepage\tools\markdown-library
npm run check
npm run install-command
npm run setup-server
```

初始化会安装公开只读的 Nginx location 并重载 Nginx，同时移除旧的 Basic Auth 引用。需要暂时下线入口时，只禁用 Nginx 扩展配置并重新校验、reload；不要删除文章目录：

```bash
sudo mv /www/server/panel/vhost/nginx/extension/tingfeng.ink/library.conf \
  /www/server/panel/vhost/nginx/extension/tingfeng.ink/library.conf.disabled
sudo /usr/bin/nginx -t
sudo /etc/rc.d/init.d/nginx reload
```
