[{"data":1,"prerenderedAt":350},["ShallowReactive",2],{"page-/post/nuxt/file-based-blog-by-obsidian":3,"surrounding-page":341},{"id":4,"title":5,"author":6,"body":7,"date":328,"description":329,"extension":330,"group":6,"lastmod":331,"meta":332,"navigation":333,"path":334,"rawbody":335,"seo":336,"showTitle":6,"stem":337,"tags":338,"versions":6,"__hash__":340},"content/post/nuxt/file-based-blog-by-obsidian.md","基于本地文件搭建个人博客站：无缝配合Obsidian",null,{"type":8,"value":9,"toc":320},"minimark",[10,17,20,24,27,30,33,36,42,45,48,51,62,77,80,83,86,89,94,98,105,111,118,121,124,127,130,133,140,143,146,149,152,155,162,165,172,175,178,181,186,193,215,225,228,231,234,263,266,281,284,287,293,304,307,314,317],[11,12,13],"p",{},[14,15,16],"strong",{},"搞博客站一直有些痛点：文件不停的搬家、需要多处同步修改、无法复制到其他平台、界面同质化严重。",[11,18,19],{},"在别人的框架里，很难实现所有的个性化需求，所以我想试试能不能通过自建来达到一个近似完美的状态。",[21,22,23],"h2",{"id":23},"先有文章再有博客",[11,25,26],{},"写文章可以说是一个表达、展现、锻炼自己的优秀方式。",[11,28,29],{},"因为我觉得大部分人并不是不爱交流，或者天生内向，只是没有碰到和他有共同话题、共同爱好、共同价值观的人。",[11,31,32],{},"再加上工作画地为牢，家庭一地鸡毛。话多了是不专业，是矫情，也容易“祸从口出”。",[11,34,35],{},"所以用文章记录是一个既不打扰别人，又满足自己的一种方式，写好了还能从中获利。如果有写作的冲动，何乐而不为呢?",[37,38,39],"blockquote",{},[11,40,41],{},"PS: 从文章到博客的使用场景有点类似学英语。其对诸如程序员等人群来说有很大帮助，但仅\n用于看和写上，我实在想不出普通打工仔的听和说的场景在哪里，但现在更多的App是让用户去\n听、说、记，也许会有所帮助，但我总觉得相较普通人来说不是最好的方式。",[11,43,44],{},"有了文章就要发出去给别人看，因为发出去不仅仅是表达自己的观点或发泄，也是和别人的观点产生碰撞从而修正自己的某些错误。待在本地笔记本里只能没事拿出来emo一下。",[11,46,47],{},"大部分人发文章都追求的是简便，比如直接发在微信公众号等自媒体平台。自建的话用类似WordPress、Hexo、Halo、Hugo、Typecho等现成的框架。",[11,49,50],{},"不管在哪里写，我通常都不会直接在发文的平台下直接写。一般会先在本地写个草稿或大纲，在一天或者几天内把它写完。因为写的可能比较零碎，后续也得自己整合。",[11,52,53,54,57,58,61],{},"写完后如果要发到多个平台，我希望他们在各家的App上打开时，",[14,55,56],{},"尽量在样式保持一致","，这非常合理，但也有一些门槛：",[14,59,60],{},"在本地记录的格式要兼容各家平台","。（没样式相当于自嗨，把平台当成自己的日记本）",[11,63,64,65,69,70,72,73,76],{},"所以从我的角度来讲，",[66,67,68],"code",{},"markdown","是不二之选。但有的平台他就是不支持",[66,71,68],{},"，支持",[66,74,75],{},"markown","的也可能不让你自己修改样式。所以文章保持全平台一致是解决不了的，只能保持部分平台一致（转为富文本）。",[11,78,79],{},"另外文章的内容是受平台方监管的，比如你在A平台的文章里不能出现B平台的联系方式、要控制自己不能发一些不该发的言论等等。",[11,81,82],{},"你的文章推荐机制也是由各平台自己决定，比如公众号的文章你在搜索平台上搜不到的，只能微信内部搜。一些社区或平台要看你文章打开率、点赞率、评论数等指标来决定是不是要给你推流等等。",[11,84,85],{},"没办法，谁让用户在他们手里呢。",[11,87,88],{},"当你感觉到膈应了，又看到别人精美的博客时，很容易产生自己建站的冲动。",[37,90,91],{},[11,92,93],{},"前期其实可以0成本选择一些现成的平台去发文，如果满足不了自己，再去研究自建。",[21,95,97],{"id":96},"博客框架的框架","博客框架的「框架」",[11,99,100,101,104],{},"自建博客有很多",[14,102,103],{},"框架","可选：WordPress、Hexo、Halo、Hugo、Typecho、Astro、Next、开源仓库等等。",[11,106,107,108,110],{},"但他们都有自己的",[14,109,103],{},"。以下痛点也来自于我不接受这些“框架”。",[11,112,113,114,117],{},"框架本身有自己组织文章文件的方式，一般是让你放在某个（",[66,115,116],{},"/content","）目录下自行编译或是提供你一套编辑器和后台管理系统，然后通过一个或多个配置文件进行站点内容的自定义，再通过开源插件或付费插件实现更换主题的功能。",[11,119,120],{},"但是前面提到了，我本身有固定的App（Obsidian）去写文章，要想把文章生成站点，还要再复制到框架项目的指定文件夹下。如果已经发布的文章更新了、删除了，同步过去是个问题。每次写完了还要再塞过去也是个问题。并且框架对于文章内容和头部元信息的处理方式还可能和自己平时的习惯相冲突。",[11,122,123],{},"再来说主题的问题。",[11,125,126],{},"好框架大家都是追着用的，所以有大批的人在用相同的框架。",[11,128,129],{},"那好看的主题也有相当一部分人都会觉得好看，所以你会发现很多主题虽然好看，但是用的人太多了，打开每个都一样。另外用的人里有一大部分不具备修改或自定义的能力，缺少了很多个性化。",[11,131,132],{},"更不要说你可能会换框架...  这个用腻了，再来个博客搬家，于是上面的操作又来了一遍。",[11,134,135,136,139],{},"看到这你也发现了，",[14,137,138],{},"所有的问题都来自于自己喜欢折腾","，人家嫌麻烦的直接发朋友圈都没觉得有啥问题。",[11,141,142],{},"不过也没关系，喜欢折腾的人总会吸引到其他喜欢折腾的人，咱们继续往下折腾！",[21,144,145],{"id":145},"自建博客",[11,147,148],{},"在说自建前，补充一点：",[11,150,151],{},"上面的痛点，其实能提供云服务的笔记App（类Notion）已经解决了。",[11,153,154],{},"他们有一致的风格：你换啥皮肤啊，大家都一样。",[11,156,157,158,161],{},"能直接生成网站或分享链接：在平台上写，平台帮你生成，无需自己操心，",[14,159,160],{},"顶多付个会员费","。",[11,163,164],{},"支持导出多种格式：你想再发到什么平台，自己再导出然后转换格式。 支持到了多平台发布以及本地化备份的需求。",[11,166,167,168,171],{},"那你猜我为啥用",[66,169,170],{},"Obsidian","？",[11,173,174],{},"就是不想用别人的云，不想把数据都放在别人服务器上！",[11,176,177],{},"最近两年阿里云等云服务商的故障热搜大家也有所耳闻。",[11,179,180],{},"一旦云服务商挂了、网络不好，你的笔记看也看不见，写也没法写，刚写完的也可能没保存上。",[11,182,183],{},[14,184,185],{},"我自建的挂了，我不会骂自己。但是我花钱买你的App却用不了，甭管谁的问题都得骂。",[11,187,188,189,192],{},"再说我的笔记都在本地，自建的只是个展示平台，数据安稳的很。",[66,190,191],{},"Github","这类平台可以作为同步和备份使用。",[11,194,195,196,198,199,202,203,206,207,210,211,214],{},"也正是因为我的笔记是本地的",[66,197,68],{},"文件，所以框架必须得",[14,200,201],{},"支持我拿本地的数据进行编译","，再部署到服务器上。能",[14,204,205],{},"直接","做到这一点的好像真的不多，我目前发现了",[66,208,209],{},"nuxt/content"," 可以做到这一点（有用过其他的希望能在评论区补充一下😘），所以我开启了一个基于",[66,212,213],{},"Nuxt","从零搭建博客的计划。",[11,216,217,218,220,221,224],{},"首先本地文件还是用以前的方式写，不需要搬家，只需要把本地的文件整理好，然后开放给框架一个读取的目录即可，因为可以直接读取后本地编译。备份方式还是用自己习惯的方式，没有侵入性。元信息还是用",[66,219,170],{},"的",[66,222,223],{},"Linter","插件维护。",[11,226,227],{},"其次页面样式靠自己的“阅历”，\b多看优秀的博客设计或是界面动效，组合到自己的博客上，「撞站」大概率不会。",[11,229,230],{},"往其他平台如公众号发布的时候，我希望是直接在自己的站点上集成这个功能，写完文章，博客站本地编译好自动部署，我直接点击按钮能把html内容复制出来最好。这样能保证文章的样式是一致的。",[11,232,233],{},"现在的流程是把markdown内容复制到另一个工具网站里，然后再复制生成好的html内容，粘贴到公众号编辑器内。像是掘金的话，直接把markdown源码复制过去，他是支持md编辑器的。其他平台也要么是支持md，要么支持富文本。",[11,235,236,237,239,240,242,243,246,247,250,251,254,255,258,259,262],{},"这个功能还在思考中，因为虽然",[66,238,209],{},"负责渲染",[66,241,68],{},"，但是没法直接拿到",[14,244,245],{},"具有内联样式的html内容","，实际内容是元素带有className，再通过css渲染样式。而像md转公众号的工具站点核心是把编辑器内渲染的",[66,248,249],{},"html","和固定的",[66,252,253],{},"css","通过",[66,256,257],{},"juice","(插件)渲染为一段内联样式的html内容，然后再把剪贴板的类型设置为",[66,260,261],{},"text/html","，粘贴到公众号编辑器中时就会带着样式了。",[11,264,265],{},"在解决掉这个问题后，我的本地写作流程是这样的：",[11,267,268,269,272,273,276,277,280],{},"打开obsidian",[14,270,271],{},"开始写东西","，写完后，去博客项目目录下运行一行命令",[66,274,275],{},"npm run build","，博客会通过",[66,278,279],{},"gitea action","自动部署上去，如果要发布到其他平台，打开博客站域名找到文章，点击复制，再去对应平台粘贴。",[11,282,283],{},"感觉挺带劲儿的，几乎只剩下了「写」这一件事。",[21,285,286],{"id":286},"结语",[11,288,289,290,292],{},"这个基于",[66,291,213],{},"从零开发的博客，我会全程记录文章然后分享出来。",[11,294,295,296,299,300,303],{},"目前进度可能有",[66,297,298],{},"30%","？评论、搜索、分类、类朋友圈等功能都是自己开发或集成，速度可能不会特别快（少量涉及后端",[66,301,302],{},"HonoJS","）。",[11,305,306],{},"后续代码也会开源，有兴趣的可以自己去搭建。",[11,308,309,310,313],{},"如果你有相同方向的需求，不管有没有开发能力，都可以在评论区/私信留一下言，",[14,311,312],{},"满20人的话我拉个小群","，方便随时更新进度，或收集一些需求，后续提前开放源码或帮助大家也建起站来。",[11,315,316],{},"以上就是关于我的「理想博客站」的全部内容啦~",[11,318,319],{},"👋🏻👋🏻",{"title":321,"searchDepth":322,"depth":322,"links":323},"",2,[324,325,326,327],{"id":23,"depth":322,"text":23},{"id":96,"depth":322,"text":97},{"id":145,"depth":322,"text":145},{"id":286,"depth":322,"text":286},"2024-11-01T00:00:00.000Z","使用 Obsidian 的Git仓库作为文章数据源，配合Nuxt搭建个人博客","md","2025-08-19T00:00:00.000Z",{},true,"/post/nuxt/file-based-blog-by-obsidian","---\ntitle: 基于本地文件搭建个人博客站：无缝配合Obsidian\ndate: 2024-11-01\nlastmod: 2025-08-19\ntags: [\"博客\", \"Obsidian\"]\ndescription: 使用 Obsidian 的Git仓库作为文章数据源，配合Nuxt搭建个人博客\n---\n**搞博客站一直有些痛点：文件不停的搬家、需要多处同步修改、无法复制到其他平台、界面同质化严重。**\n\n在别人的框架里，很难实现所有的个性化需求，所以我想试试能不能通过自建来达到一个近似完美的状态。\n\n## 先有文章再有博客\n\n 写文章可以说是一个表达、展现、锻炼自己的优秀方式。\n\n因为我觉得大部分人并不是不爱交流，或者天生内向，只是没有碰到和他有共同话题、共同爱好、共同价值观的人。\n\n再加上工作画地为牢，家庭一地鸡毛。话多了是不专业，是矫情，也容易“祸从口出”。\n\n所以用文章记录是一个既不打扰别人，又满足自己的一种方式，写好了还能从中获利。如果有写作的冲动，何乐而不为呢?\n\n> PS: 从文章到博客的使用场景有点类似学英语。其对诸如程序员等人群来说有很大帮助，但仅\n> 用于看和写上，我实在想不出普通打工仔的听和说的场景在哪里，但现在更多的App是让用户去\n> 听、说、记，也许会有所帮助，但我总觉得相较普通人来说不是最好的方式。\n\n有了文章就要发出去给别人看，因为发出去不仅仅是表达自己的观点或发泄，也是和别人的观点产生碰撞从而修正自己的某些错误。待在本地笔记本里只能没事拿出来emo一下。\n\n大部分人发文章都追求的是简便，比如直接发在微信公众号等自媒体平台。自建的话用类似WordPress、Hexo、Halo、Hugo、Typecho等现成的框架。\n\n不管在哪里写，我通常都不会直接在发文的平台下直接写。一般会先在本地写个草稿或大纲，在一天或者几天内把它写完。因为写的可能比较零碎，后续也得自己整合。\n\n写完后如果要发到多个平台，我希望他们在各家的App上打开时，**尽量在样式保持一致**，这非常合理，但也有一些门槛：**在本地记录的格式要兼容各家平台**。（没样式相当于自嗨，把平台当成自己的日记本）\n\n所以从我的角度来讲，`markdown`是不二之选。但有的平台他就是不支持`markdown`，支持`markown`的也可能不让你自己修改样式。所以文章保持全平台一致是解决不了的，只能保持部分平台一致（转为富文本）。\n\n另外文章的内容是受平台方监管的，比如你在A平台的文章里不能出现B平台的联系方式、要控制自己不能发一些不该发的言论等等。\n\n你的文章推荐机制也是由各平台自己决定，比如公众号的文章你在搜索平台上搜不到的，只能微信内部搜。一些社区或平台要看你文章打开率、点赞率、评论数等指标来决定是不是要给你推流等等。\n\n没办法，谁让用户在他们手里呢。\n\n当你感觉到膈应了，又看到别人精美的博客时，很容易产生自己建站的冲动。\n\n> 前期其实可以0成本选择一些现成的平台去发文，如果满足不了自己，再去研究自建。\n\n## 博客框架的「框架」\n\n自建博客有很多**框架**可选：WordPress、Hexo、Halo、Hugo、Typecho、Astro、Next、开源仓库等等。\n\n但他们都有自己的**框架**。以下痛点也来自于我不接受这些“框架”。\n\n框架本身有自己组织文章文件的方式，一般是让你放在某个（`/content`）目录下自行编译或是提供你一套编辑器和后台管理系统，然后通过一个或多个配置文件进行站点内容的自定义，再通过开源插件或付费插件实现更换主题的功能。\n\n但是前面提到了，我本身有固定的App（Obsidian）去写文章，要想把文章生成站点，还要再复制到框架项目的指定文件夹下。如果已经发布的文章更新了、删除了，同步过去是个问题。每次写完了还要再塞过去也是个问题。并且框架对于文章内容和头部元信息的处理方式还可能和自己平时的习惯相冲突。\n\n再来说主题的问题。\n\n好框架大家都是追着用的，所以有大批的人在用相同的框架。\n\n那好看的主题也有相当一部分人都会觉得好看，所以你会发现很多主题虽然好看，但是用的人太多了，打开每个都一样。另外用的人里有一大部分不具备修改或自定义的能力，缺少了很多个性化。\n\n更不要说你可能会换框架...  这个用腻了，再来个博客搬家，于是上面的操作又来了一遍。\n\n看到这你也发现了，**所有的问题都来自于自己喜欢折腾**，人家嫌麻烦的直接发朋友圈都没觉得有啥问题。\n\n不过也没关系，喜欢折腾的人总会吸引到其他喜欢折腾的人，咱们继续往下折腾！\n\n\n## 自建博客\n\n在说自建前，补充一点：\n\n上面的痛点，其实能提供云服务的笔记App（类Notion）已经解决了。\n\n他们有一致的风格：你换啥皮肤啊，大家都一样。\n\n能直接生成网站或分享链接：在平台上写，平台帮你生成，无需自己操心，**顶多付个会员费**。\n\n支持导出多种格式：你想再发到什么平台，自己再导出然后转换格式。 支持到了多平台发布以及本地化备份的需求。\n\n那你猜我为啥用`Obsidian`？\n\n就是不想用别人的云，不想把数据都放在别人服务器上！\n\n最近两年阿里云等云服务商的故障热搜大家也有所耳闻。\n\n一旦云服务商挂了、网络不好，你的笔记看也看不见，写也没法写，刚写完的也可能没保存上。\n\n**我自建的挂了，我不会骂自己。但是我花钱买你的App却用不了，甭管谁的问题都得骂。**\n\n再说我的笔记都在本地，自建的只是个展示平台，数据安稳的很。`Github`这类平台可以作为同步和备份使用。\n\n也正是因为我的笔记是本地的`markdown`文件，所以框架必须得**支持我拿本地的数据进行编译**，再部署到服务器上。能**直接**做到这一点的好像真的不多，我目前发现了`nuxt/content` 可以做到这一点（有用过其他的希望能在评论区补充一下😘），所以我开启了一个基于`Nuxt`从零搭建博客的计划。\n\n首先本地文件还是用以前的方式写，不需要搬家，只需要把本地的文件整理好，然后开放给框架一个读取的目录即可，因为可以直接读取后本地编译。备份方式还是用自己习惯的方式，没有侵入性。元信息还是用`Obsidian`的`Linter`插件维护。\n\n其次页面样式靠自己的“阅历”，\b多看优秀的博客设计或是界面动效，组合到自己的博客上，「撞站」大概率不会。\n\n往其他平台如公众号发布的时候，我希望是直接在自己的站点上集成这个功能，写完文章，博客站本地编译好自动部署，我直接点击按钮能把html内容复制出来最好。这样能保证文章的样式是一致的。\n\n现在的流程是把markdown内容复制到另一个工具网站里，然后再复制生成好的html内容，粘贴到公众号编辑器内。像是掘金的话，直接把markdown源码复制过去，他是支持md编辑器的。其他平台也要么是支持md，要么支持富文本。\n\n这个功能还在思考中，因为虽然`nuxt/content`负责渲染`markdown`，但是没法直接拿到**具有内联样式的html内容**，实际内容是元素带有className，再通过css渲染样式。而像md转公众号的工具站点核心是把编辑器内渲染的`html`和固定的`css`通过`juice`(插件)渲染为一段内联样式的html内容，然后再把剪贴板的类型设置为`text/html`，粘贴到公众号编辑器中时就会带着样式了。\n\n在解决掉这个问题后，我的本地写作流程是这样的：\n\n打开obsidian**开始写东西**，写完后，去博客项目目录下运行一行命令`npm run build`，博客会通过`gitea action`自动部署上去，如果要发布到其他平台，打开博客站域名找到文章，点击复制，再去对应平台粘贴。\n\n感觉挺带劲儿的，几乎只剩下了「写」这一件事。\n\n## 结语\n\n这个基于`Nuxt`从零开发的博客，我会全程记录文章然后分享出来。\n\n目前进度可能有`30%`？评论、搜索、分类、类朋友圈等功能都是自己开发或集成，速度可能不会特别快（少量涉及后端`HonoJS`）。\n\n后续代码也会开源，有兴趣的可以自己去搭建。 \n\n如果你有相同方向的需求，不管有没有开发能力，都可以在评论区/私信留一下言，**满20人的话我拉个小群**，方便随时更新进度，或收集一些需求，后续提前开放源码或帮助大家也建起站来。\n\n以上就是关于我的「理想博客站」的全部内容啦~\n\n👋🏻👋🏻\n\n\n\n\n\n\n\n\n\n\n\n",{"title":5,"description":329},"post/nuxt/file-based-blog-by-obsidian",[339,170],"博客","LfzyvXE-7pndEXKclCA493fjKZ4gqm07UyOapn6MAfA",[342,346],{"title":343,"path":344,"stem":345},"OpenClaw 安装入门（Windows）","/post/zzao/openclaw/openclaw-install-windows","post/zzao/openclaw/openclaw-install-windows",{"title":347,"path":348,"stem":349},"假设你是AI，你的Skill应该是什么样的","/post/zzao/ai-skill-structure","post/zzao/ai-skill-structure",1779005086693]