编写与编辑文档
在与 Git 同步的仓库、IDE 或任何文本编辑器中编写、创建、编辑和格式化 GitBook 文档页面。适用于任何涉及创建或编辑 GitBook markdown 页面、编写或更新
何时使用此技能
在通过以下方式处理 GitBook 文档时使用此技能:
与 Git 同步的仓库(GitHub、GitLab)
本地 Markdown 编辑器
IDE 集成
任何你以文件而非 GitBook 界面编辑 GitBook 内容的环境
快速参考
GitBook 内容结构
GitBook 通过页面、空间和集合来组织内容:
页面 是组成文档的单独 Markdown 文件
空间 是组织成一个文档站点的页面集合
集合 是空间组
文件结构:
/
.gitbook/
assets/ # GitBook 管理的图片和文件
includes/ # 可复用内容块
vars.yaml # 空间级变量
.gitbook.yaml # 配置
README.md # 主页
SUMMARY.md # 目录
getting-started/
installation.md
quickstart.md
api-reference/
authentication.md
endpoints.mdFrontmatter 字段(快速形式):
变量与表达式:
空间变量:
/.gitbook/vars.yaml页面变量:Frontmatter
vars:表达式语法:
<code class="expression">space.vars.variableName</code>
最常见的自定义块:
{% tabs %}...{% endtabs %}—— 用于提供替代选项{% hint style="..." %}...{% endhint %}—— 提示框(信息/警告/危险/成功){% stepper %}...{% endstepper %}—— 顺序步骤<details>...<summary>...</details>—— 可展开内容
链接:
外部:
[text](https://example.com)相对链接(同一空间):
[text](page.md),[text](../folder/page.md)跨空间(不同空间):
[text](https://app.gitbook.com/s/<spaceId>/<path>)—— 相对路径绝不会跨越空间边界,而这才是唯一正确的 URL 形式(不是/spaces/<id>/pages/<id>)。获取<spaceId>来自GET /orgs/{orgId}/spaces以及<path>来自页面的path字段,位于GET /spaces/{spaceId}/content/pages。在目标空间尚不存在时搭建新站点?使用XSPACE_<KEY>哨兵值;configure-site创建后会解析它们。完整示例:references/markdown.md.移动/重命名的页面仍可正常工作——GitBook 会自动从旧路径创建重定向。
关键提醒:
处理现有内容时先阅读 SUMMARY.md
本地编辑后在 GitBook 中测试
保持 SUMMARY.md 与你的文件结构同步
OpenAPI 规范必须通过 UI、API、MCP 或 CLI 上传,不能嵌入在 Markdown 中
何时使用哪种块
顺序排列的指令
{% stepper %}
清晰的步骤推进
替代选项(语言、平台)
{% tabs %}
用户可在不让页面杂乱的情况下进行选择
可选或详细信息
<details>
让页面易于快速浏览
重要警告或提示
{% hint %}
有颜色的提示框(信息/警告/危险/成功)
并排比较
{% columns %}
并列布局(最多 2 列)
时间线或更新日志
{% updates %}
带标签筛选的日期条目
可视化导航卡片
<table data-view="cards">
可点击的卡片网格
可下载文件
{% file %}
带说明的文件
行动号召链接
<a class="button">
主按钮或次按钮
跨页面可复用内容
{% include %}
单一事实来源
动态内容
<code class="expression">
渲染变量值
变量作用域:
在多个页面中使用
/.gitbook/vars.yaml
space.vars.variableName
仅限单个页面
Frontmatter vars:
page.vars.variableName
处理现有内容
先阅读 SUMMARY.md —— 完整目录和文件层级
如果没有 SUMMARY.md —— 直接浏览目录结构
检查 .gitbook.yaml —— 根路径、自定义 README/SUMMARY 位置、重定向
检查 .gitbook/assets/ —— 已上传的图片和文件
检查 .gitbook/vars.yaml —— 空间级变量
常见陷阱
跨空间链接:
不要使用相对路径链接到不同空间中的页面——它们不会解析。
不要使用
/spaces/<spaceId>/pages/<pageId>—— 那不是有效的 GitBook 链接形式。使用
https://app.gitbook.com/s/<spaceId>/<path>而应使用,其中<path>是目标页面的path字段(来自GET /spaces/{spaceId}/content/pages),而不是其页面 ID。使用
XSPACE_<KEY>当空间 ID 尚未知晓时使用哨兵值(新空间,尚未创建)。
文件组织:
不要在 SUMMARY.md 中两次引用同一个 Markdown 文件
保持 SUMMARY.md 中的文件路径与实际文件位置一致
配置:
使用 Git Sync 时,只通过你的仓库管理 README.md
移动或重命名文件后测试重定向
自定义块:
始终正确关闭块(
{% endtab %},{% endhint %},等等)开始标签和结束标签必须完全匹配
Frontmatter:
始终加引号
description:包含……的值:,#、或其他对 YAML 有特殊意义的字符——未加引号的特殊字符会导致 Git Sync 静默失败,且不会报错Frontmatter 必须位于文件最顶部
使用 Git Sync
当 GitBook 与 Git 同步时,变更会双向流动——Git 中的更改会更新 GitBook,而 GitBook 界面中的更改会提交回 Git。合并冲突在 Git 中解决。
最佳实践: 通过 Git 中的 SUMMARY.md 进行结构性更改;对重大更新使用基于分支的工作流;审查 GitBook 自动生成的提交。
预览已推送的分支
下方的双链接规则适用于通过变更请求推送的内容。当你通过 Git 则对应的是提交状态:打开拉取/合并请求——或推送到已有该请求的分支——会让 GitBook 导入该分支并发布一条状态,链接到渲染后站点的预览。 每当你推送文档更改时,都要主动把那个链接给用户,不要等对方询问。 应从提交状态中读取,而不是自行构造 URL:revision id 在导入时生成,不能从分支或 PR 推导出来,而且每次推送都会生成新的 id,所以先前的链接会失效。参见 references/git-sync-previews.md 了解 GitHub 和 GitLab 的命令,以及导入仍在运行时该怎么做。
选择 Git Sync 还是变更请求内容推送
当空间已配置 Git Sync 且你拥有(或可以获取)同步仓库的本地检出副本时, 优先直接编辑文件并提交/推送 —— Git Sync 会将更改传播到 GitBook。即使在 MCP 会话中有可用且已连接的变更请求内容推送工具(例如 updateChangeRequestContent)可用且已连接:该工具只差一次调用并不是绕过 Git 这个事实来源的理由。发现该工具的代理 可以 可直接推送到 CR,但在这样做之前仍应检查 Git Sync 是否已设置且可访问。
则应改用变更请求内容推送路径(MCP 的 updateChangeRequestContent 或类似工具,或 REST POST .../change-requests/<cr>/content 端点——参见 cr-create 技能)当:
空间尚未配置 Git Sync(例如一个仍在设置中的全新空间),
当前环境中没有可用的本地 Git 检出副本(无法访问同步仓库的文件系统),或者
变更很小且有针对性(一个拼写错误、一段文字、一个字段)——此时打开 CR 是合适的,而完整的克隆/提交/推送流程不值得。
对于更大的变更——新页面树、多页面重写、迁移——优先使用 Git Sync,即使这意味着先暂停确认仓库已在本地克隆。不要因为变更请求工具是第一个可用的就默认使用它。
只要涉及变更请求,就必须提供两个链接
如果此次编辑的任何部分经过了变更请求(create_change_request / updateChangeRequestContent,或其 REST 等价接口), 在以下两项都被反馈回来之前,编辑都不算完成,每次都必须如此——这是硬性规则,不是可略读的提醒:
CR 差异/编辑器链接 —
urls.app位于变更请求对象上,由……返回create_change_request,updateChangeRequestContent,或getChangeRequestById.站点预览链接 —— 来自……的站点 URL Site 对象(
urls.published当站点是公开的时,或urls.preview)并附加/~/changes/<number>/附加。这绝不会包含在变更请求响应中——它需要单独查找——也正因如此它最容易被忘记。每次都要解析它,不要只在想起来时才做。 没有~/changes/片段时,该链接就不是变更请求的预览 —— 它渲染的是站点当前内容,所以看起来合理,实际上却是错的。
无论是哪个技能推送了内容(本技能或 configure-site)以及无论使用何种传输方式(MCP 或 REST),都适用。参见 cr-create 该技能中的“显示预览链接”以查看完整说明和 REST 解析步骤。 MCP 等效方式 (GitBook MCP 没有单一现成的“给我预览链接”调用):
解析该空间所属的组织——
invoke_operation("getSpaceById", {path:{spaceId}})→.organization(如果你已经有组织 ID,则跳过)。找出该空间属于哪个站点——
list_sites/get_site_structure,或者检查每个站点的 site-spaces 中是否有匹配.space.id.invoke_operation("getSiteById", {path:{organizationId, siteId}})→.urls.published(站点上线后),否则.urls.preview。附加/~/changes/<number>/,并去掉 API 返回的末尾斜杠。
如果该空间未附加到任何已发布站点,请明确说明,并只提供差异链接——不要不加解释地悄悄省略预览链接这一行。
这在实践中已经发生过静默失败:某次编辑被推送并合并时只报告了差异链接,而预览链接直到有人直接询问才出现。请将上面的双链接清单按字面执行。
参考文件
当任务需要更深入的细节时按需加载这些内容:
references/blocks.md—— 所有 GitBook 块类型的完整语法和示例:tabs、steppers、hints、expandable、columns、updates、cards、embeds、files、buttons、icons、可复用内容以及 OpenAPI 块。 在编写非平凡页面或上述快速参考不够用时加载。references/frontmatter.md—— 所有 frontmatter 字段及其说明、YAML 引号规则、封面图、适应性内容(if:),以及变量/表达式的深入说明。 在配置页面布局、封面、条件可见性或变量时加载。references/markdown.md—— 标准 Markdown、带标题的代码块、数学/TeX、Mermaid 图表类型与示例,以及 SVG 处理细节。 在处理图表、数学或 SVG 资源时加载。references/configuration.md—.gitbook.yaml选项,以及.gitbook/目录结构(assets、includes、vars、tags)以及 SUMMARY.md 语法规则的完整内容。 在设置空间、添加重定向或编写/编辑 SUMMARY.md 时加载。references/git-sync-previews.md—— 获取通过 Git Sync 推送的分支的预览链接:读取 GitHub 和 GitLab 上的 GitBook 提交状态、区分站点预览与编辑器差异,以及处理仍在运行的导入。 每当你将文档更改推送到一个已打开拉取/合并请求的分支时加载。
最后更新于
这有帮助吗?