Skill · 内容目录约定

何时用:新建一篇文章 / 一个系列 / 一个独立页面,或者搞不清图片该放哪里的时候。

解决什么:把 sbraveyoung/blog/source/ 下的目录契约一次说清,配几个具体例子。

三个顶级目录,各有各的语义

source/
├── post/                 文章(递归扫描,子目录自动变 group)
├── pages/                顶层独立页(pages/about.md → /about)
└── resource/image/       图片 / 附件,最终被服务为 /image/...

仅此三个。source/ 下别加其他东西——不是说技术上不行,是 gobog 不认。

post/ 怎么组织

  • 直接放在 post/ 下面的 .md,是单篇文章。URL = /post/<slug-of-basename>。
  • post/<某某系列>/<chapter>.md,子目录自动被识别为 group:
    • group 自身有一个着陆页,URL = /post/<某某系列>/,列出所有子文章。
    • 子文章 URL = /post/<某某系列>/<chapter-slug>。
  • 再深一层的目录也可以(post/A/B/C.md),URL 跟着叠。

排序细节单独写在 Skill · publish-and-sync 里。简单说:默认按 create_time 倒序,文件名带数字前缀(00-、01-)的 group 自动按数字升序。

pages/ 怎么用

pages/<name>.md 自动渲染到 /<name>。最常见的是 pages/about.md → /about,但完全可以扩展:

pages/
├── about.md          → /about
├── contact.md        → /contact
├── now.md            → /now
└── projects.md       → /projects

加新页面 = 加 markdown 文件,不需要改 gobog 代码、不需要改主题模板。pages 自动出现在站点的导航条里。

pages/ 下的子目录是被忽略的——可以放草稿、暂存版本而不会被发布。

resource/image/ 怎么用

所有图片附件都丢这里。引用方式两种都支持:

<!-- 标准 markdown -->
![diagram](./resource/image/diagram.png)
![diagram](/image/diagram.png)

<!-- Obsidian 语法 -->
diagram.png
  • 链接用 /image/<basename> 是最干净的形式(部署后稳定)。
  • ./resource/image/... 在 Obsidian 里能直接预览。
  • name.png 不需要写路径,gobog 会从基名反查到文件位置。

向后兼容:老布局 source/image/... 仍然能解析(fallback),但新文章请用 resource/image/。

命名规则

  • 文件名用中文 OK,slug 化时会回退到稳定的 hex hash,URL 始终可寻址。
  • 别用半角的特殊字符(/、\、?、&、#),文件系统和 URL 都会闹脾气。
  • 想做"系列",请在文件名前加 00-、01- 这种数字前缀;或者在 front-matter 里写 order: <n>。详见 Skill · ai-attribution 之前的 series 那一段。

不发布的东西放哪

  • 草稿:front-matter 里写 draft: true,文件留在原地,不进发布列表。
  • 暂时下线:hidden: true,语义跟 draft 一样但暗示"以后会回来"。
  • 私密:private: true,列表里看得到,正文需要 HTTP Basic auth;静态导出会直接过滤掉(GitHub Pages 没法做 auth)。
  • 完全不该公开的内容:别放进 source/,留在 vault 别的目录。