SuperAPI AI 工具集

obsidian-publish-customize

前端与建站

查看项目

更新于 10-16 02:34

技能介绍

用途:定制 Obsidian Publish 站点,超出内置站点选项的部分只能靠两个根目录文件:publish.css(自定义样式)与 publish.js(自定义脚本)。两者默认在文件浏览器中隐藏,需从 Publish changes 对话框发布。publish.js 仅在自定义域名下运行,默认 publish.obsidian.md/<site-id> 地址下无效;publish.css 到处可用。

主要能力:用 Publish CSS 变量做主题;用 publish.js 脚本操作渲染后的 DOM。脚本有两种方式:一是未公开的 publish.registerMarkdownPostProcessor((el, ctx) => {...}),按渲染区块触发,ctx.frontmatter 为已解析的 frontmatter 对象;二是对 document.body 使用 MutationObserver,配合幂等标记处理导航后重渲染的页面。window.siteInfo 提供 uid、host、customurl 等;已发布文件索引可从 https://${siteInfo.host}/cache/${siteInfo.uid} 同源获取。

使用方式:发布根文件需有效 Publish 订阅及 CLI。桌面端可用 obsidian publish:add path=publish.css;无桌面端用 obsidian-headless(ob),先 ob login、ob publish-setup --site <slug>,再 ob publish(默认只含 publish: true 笔记,加 --all 包含根静态资源,--dry-run 预览)。推送后需硬刷新,因 CDN 缓存。建议先在浏览器控制台用自包含 IIFE 片段测试 publish.js。

限制:除基础主题外大多未文档化,依赖私有全局与当前 DOM,可能随时变化。注入链接不要用 internal-link 类,避免 SPA 解析器劫持;链接须用自定义域名,路径空格编码为 + 而非 %20;按钮样式难覆盖,可用 span role=button。Style Settings 在 Publish 上无效。curl 可能返回 403,应改用浏览器同源 fetch。官方支持范围与 hack 范围需区分,如评论、每笔记密码、Dataview 等均不受支持。