生活类 Blog 写作工作流
这篇文档是这个仓库里“生活记录类 blog”的长期规范,同时也记录当前整个 blog/ 板块在发布新文章时必须遵守的分支规则。
目标很明确:
- 让以后“给一组照片链接和一点补充信息,就能稳定产出一篇可发布的生活 blog”这件事可以重复执行
- 让生活类 blog 和旅行类页面在“图片可点击放大”这件事上保持统一,但在版式上区分开,不混成同一种相册页
如果后续继续写聚餐、小聚、日常散步、看展、去某家店、阶段性生活片段这类内容,建议以这篇文档为准。
如果后续写的是思考随笔、技术感想或 AI 工具体验,这篇文档仍然要用来检查文件结构、frontmatter、博客总览、归档页和构建流程,但正文风格不强行套用生活记录类的写法。
当前 blog 板块结构
当前 blog 板块由 Docusaurus classic blog 插件和两个自定义主题页面共同组成:
- 文章统一放在
blog/目录下 - 作者信息来自
blog/authors.yml - blog 插件配置在
docusaurus.config.js的presets.classic.blog中,当前启用了showReadingTime: true和blogSidebarCount: 'ALL' /blog总览页由src/theme/BlogListPage/index.js和src/theme/BlogListPage/styles.module.css控制/blog/archive归档页由src/theme/BlogArchivePage/index.js和src/theme/BlogArchivePage/styles.module.css控制- 图片灯箱能力来自
src/components/TravelGallery
写新 blog 时,必须先判断文章类型:
| 类型 | 默认文件 | 默认标签 | 图片要求 | 说明 |
|---|---|---|---|---|
| 生活记录图文 | .mdx | [life] | 必须写 image,正文用 TravelGallery layout="article" | 聚餐、小聚、日常片段、看展、散步等 |
| 纯文字随笔 | .md | [essay] | 不需要 image,不需要 TravelGallery | 没有正文图片的思考、复盘、阶段感想 |
| 技术 / AI 工具体验 | .md 或 .mdx | [tech] | 有图才写 image,需要灯箱才用 TravelGallery layout="article" | AI 工具、Agent、模型体验、工程实践短记 |
| 赛车 / 汽车兴趣内容 | .md 或 .mdx | [motorsport] | 有图才写 image,需要灯箱才用 TravelGallery layout="article" | F1、模拟赛车、性能车、车迷文化 |
| 科研 / 学术思考 | .md 或 .mdx | [research] | 有图才写 image,需要灯箱才用 TravelGallery layout="article" | 科研范式、学术训练、研究判断力 |
因此,.mdx 不是整个 blog 板块的唯一正确格式;它是“需要 JSX 组件或图片灯箱”的文章格式。纯文字文章继续使用 .md 是正确的。
当前页面读取逻辑
发布新文章时,需要理解这些页面分别读取什么字段:
/blog总览页读取title、date、description、tags、readingTime和封面图/blog总览页的摘要优先使用 frontmatter 里的description,不要依赖正文自动截取/blog总览页的封面图优先使用 frontmatter 里的image- 如果没有
image,/blog总览页才会查src/theme/BlogListPage/index.js里的POST_VISUALS POST_VISUALS是历史文章的兼容回退,不是新文章的默认发布流程/blog/archive归档页按文章日期自动分组,读取title、date、readingTime和最多两个tags/blog/archive不需要单独配置每篇文章,也不读取description或image- 标签页和 blog 侧边栏由 Docusaurus 根据
tags和 blog 元数据自动生成
也就是说,一篇新文章要想在当前 blog 板块里完整显示,最关键的是:文件放对、日期正确、title 正确、authors 正确、tags 正确、description 独立可读;如果文章有图,还必须写 image。
Blog 标签体系
blog 标签采用“少量稳定大类 + 必要时新增”的策略。标签写在文章 frontmatter 的 tags 字段里,统一使用小写英文;显示名和 permalink 由 blog/tags.yml 维护。
当前固定标签如下:
| 标签 | 显示名 | 适用内容 |
|---|---|---|
life | Life | 日常、朋友、饭局、看展、散步、生活片段 |
tech | Tech | AI、Agent、工具体验、工程实践、技术趋势 |
motorsport | Motorsport | F1、模拟赛车、性能车、车迷文化 |
research | Research | 科研范式、学术训练、研究判断力 |
essay | Essay | 个人价值观、自我提醒、文学或人生反思 |
默认只给每篇文章 1 个主标签。文章确实横跨两个稳定主题时,可以使用 2 个标签,例如 AI 生图生成 F1 车手海报可以写 [tech, motorsport],模拟赛车加朋友聚会可以写 [life, motorsport]。
不要再使用旧标签 thoughts 和 life-log。thoughts 太泛,容易把技术、兴趣和个人反思混在一起;life-log 已收敛为更短的 life。
允许新增合适的标签,但必须满足下面的条件:
- 新标签代表一个会长期复用的内容方向,而不是单篇文章的临时关键词。
- 同类内容已经有多篇,或者明确预计后续会持续写。
- 不能用具体品牌、模型、人名、赛事名做标签,例如不要新增
gpt-image-2、bmw、verstappen。 - 新标签使用小写英文短词或短横线形式,例如
design、reading、product-notes。 - 新增标签时必须同步更新
blog/tags.yml,写清label和permalink。
先理解当前约定
当前仓库里,生活记录类图文 blog 的默认技术实现是:
- 文章放在
blog/目录下 - 文件格式默认使用
.mdx,不是普通.md - 图片默认复用
src/components/TravelGallery的灯箱能力 - 但图片排版不使用旅行页那种瀑布/拼图布局,而是使用文章模式
layout="article" - 文章模式下,图片按原始宽高比显示,不裁切、不强行限高,只在正文宽度内自适应
- 图片点击后仍然可以放大查看
这意味着:
- 生活类 blog 默认是“图文文章”
- 不是“旅行相册”
- 不是“纯文字散文”
- 也不是“只插几张普通 Markdown 图片”
当前可直接参考的成稿样例是:
blog/2026-04-18-friends-meet-firepot-bbq.mdx
注意:部分历史文章可能还依赖 /blog 总览页里的 POST_VISUALS 映射来显示封面。以后新增文章不要把这种回退当成默认做法;只要文章有图,就直接在 frontmatter 写 image。
生活类 blog 的默认定位
生活类 blog 的核心不是攻略、评测或者流水账,而是把一个值得留下来 的片段写清楚。
默认写法是:
- 以场景和氛围为主,不以打分或推荐为主
- 以“我和朋友们/我当时的感受”为主,不以完整复盘事件经过为主
- 以真实细节为主,不强行拔高,不硬写成抒情散文
- 以可发布为目标,不写太私人、太识别化的信息
一句话概括:
生活类 blog 默认写成“温暖纪实 + 一点感受 + 少量有用细节”。
默认写作风格
如果没有额外说明,统一按下面这些默认值执行:
- 语气:温暖纪实
- 视角:第一人称
- 隐私级别:克制泛写,不点朋友姓名,不给出可识别身份信息
- 文章长度:通常 800 到 1600 字
- 文章结构:2 到 4 个小节,不写得太散
- 文章目标:记录一个晚上、一顿饭、一次见面、一次日常体验
- 文风边界:可以有情绪,但不要故作深沉;可以有细节,但不要写成菜单堆砌
默认不做的事:
- 不把文章写成店铺测评
- 不写“推荐指数”“人均”“环境几星”这类内容,除非你明确要求
- 不虚构对话、人物反应和未发生的情节
- 不为了文采牺牲真实感
什么时候适合写生活类 blog
下面这些场景都适合按这套流程写:
- 和朋友小聚、聚餐、烧烤、火锅、夜宵
- 去了某家很有记忆点的小店
- 某个普通但很舒服的晚上
- 一次短暂散步、看展、逛街、喝酒、聊天
- 某个时间点很想记一下的生活片段
如果内容明显更偏“旅行线路、城市风景、照片为主”,那还是优先归到 docs/Travel,不要混到生活类 blog 里。
以后给 AI 的素材格式
后续如果你想继续沿用这套流程,建议直接按下面这份模板给素材。
最少需要这些内容:
- 事件:
- 日期:
- 地点 / 店名:
- 照片链接:
- 明确的菜品 / 物品 / 场景:
- 明确的酒水 / 饮料:
- 我想强调的细节:
推荐补充这些内容:
- 想要的语气:温暖纪实 / 轻松有趣 / 更文艺一点
- 隐私要求:只写朋友们 / 可以写更多个人感受
- 是否加入知识内容:不要 / 少量 / 单独一小节
- 是否需要提交 git:是 / 否
最推荐的完整输入模板如下:
- 事件:和朋友们烧烤小聚
- 日期:2026-04-18
- 地点 / 店名:川西火焰山西昌火盆烧烤(新都格林城市花园店)
- 照片链接:
- https://...
- https://...
- 明确菜品:
- 跑山小香猪
- 麻辣嫩牛肉
- 香烤五花肉
- 明确酒水:
- 汾酒
- 朝日啤酒
- 想强调的细节:
- 调料盘里有黄豆粉
- 第一次蘸黄豆粉吃烧烤,十分惊艳
- 想要的语气:温暖纪实
- 隐私要求:克制泛写
- 是否加入知识内容:单独一小节
给 AI 看图时的默认规则
如果任务包含“先看照片,再写文章”,默认按下面执行:
- 不直接读取原图,先生成压缩预览图,再让 AI 阅读
- 直接读取原图很容易触发对话上下文大小限制,经验风险线约在
20MB左右 - 默认第一档预览图使用长边
1280px - 如果
1280px仍看不清小字、菜单、包装或关键细节,才升到第二档长边1920px - 如果一轮要看很多图,先分批压缩、分批阅读,不要一次把整组原图塞进对话
- 原图保留给发布、人工核对和必要时的细节复查,不作为默认读图输入