Obsidian 后台管理 v1:后台.md + site-data 单源 + 一键发布

今天做了什么

  • $grill-me 十一问定稿:范围=内容 + 四类人工站点数据;数据形态=逐条 markdown + 构建时生成 TS;交互=插件组合零自研;发布=构建校验 + commit/push;草稿=drafts 箱 + 发布这篇。
  • 迁移数据:todo/tools/stars/pindou 四条域从 TS 迁到 site-data/(8 条待办、4 个工具、55 条收藏、8 居民 + 7 关系),一次性迁移脚本做了语义一致性校验。
  • 新增 site/scripts/generate-data.mjs:frontmatter → site/src/data/*.ts,接入 pnpm build(构建前自动生成);todo 拆成 types/data/wrapper 三件套避免循环。
  • 新增 site/scripts/publish.mjs(生成 → 构建 → commit/push)、publish-this.mjs(drafts → publish)、new-content.mjs(CLI 备用)。
  • Obsidian 侧:后台.md 设为启动页(homepage 插件),四分区;QuickAdd 六个 Template choice(笔记/项目/日志 × 草稿/直接发布);Meta Bind 按钮 + 项目状态下拉;Shell commands 两个命令(发布这篇/一键发布);Dataview 状态总览表;三个模板加了「发布这篇」按钮;drafts/ 草稿箱建好。
  • 插件已直接装进 .obsidian/plugins/(quickadd / templater-obsidian / obsidian-meta-bind-plugin / obsidian-shellcommands / dataview),配置 JSON 已写好。

过程与坑

  • Bases 视图是 GUI 产物,.base 文件格式没法可靠地手工预制,改用 Dataview 做总览表(插件栈多装一个,但零配置、query 直接进 md)。
  • QuickAdd 的日期变量是 {{DATE:YYYY-MM-DD}}(大写),不是核心模板的 {{date}};模板已统一改成 QuickAdd 语法。
  • Shell commands 的 manifest id 是 obsidian-shellcommands,不是文件夹名 shell-commands,插件目录必须先对齐 id 才会加载。
  • 机器无系统 Node/pnpm,Obsidian 按钮里写死了 Codex 内置运行时路径(记录在 site/scripts/README.md)。
  • 生成器产出的是整份 TS;todo 的逻辑(statusMeta/工期/今日考古)保留在手工 wrapper,只有数据是生成的。

下一步

  • 重启 Obsidian,验证后台按钮 → 新建 → 发布这篇 → 一键发布全链路。
  • 二期可选:QuickAdd 用户脚本做「发布这篇」一键化、stars/tools 的 Meta Bind 表单、site-data 字段校验提示。