编辑指南
本站内容全部托管在 cnb.cool,采用「改文件 → 提交 → 自动上线」的流程。无论你是想修一个错别字,还是翻译一整章规则,流程都一样。
两种编辑方式
Section titled “两种编辑方式”方式一:在线编辑(无需安装任何工具)
Section titled “方式一:在线编辑(无需安装任何工具)”- 注册一个 cnb.cool 账号 —— 它是腾讯云中国站旗下的代码托管与 CI/CD 平台。
- 打开本站任意页面,滚动到页面底部,点击 编辑此页,会跳转到 CNB 上对应的 Markdown 文件。
- 点击右上角编辑按钮修改内容,填写提交说明后保存。
- CNB 会自动创建一个合并请求(Pull Request),仓库维护者确认后即可合并上线。
适合:改错别字、修正术语、补充一两段内容。
方式二:本地编辑(推荐用于大段翻译)
Section titled “方式二:本地编辑(推荐用于大段翻译)”需要 Node.js 18 以上,然后启用 pnpm:
corepack enable pnpm克隆仓库并安装依赖(内容仓库以子模块形式引入,记得一并拉取):
git clone --recurse-submodules https://cnb.cool/xtarz/Fate-TRPG.gitcd Fate-TRPGpnpm installpnpm dev之后打开 http://localhost:4321 即可实时预览,保存文件后页面会自动刷新。
端口提示:
pnpm dev占用 4321;前端测试npm run test:e2e会另起一个 4325 端口的预览服务,两者互不干扰。
内容放在哪里
Section titled “内容放在哪里”所有页面都是 src/content/docs/ 下的 .md / .mdx 文件:
| 目录 | 用途 |
|---|---|
CoreRules/ | 《Fate 浓缩版》规则书译文 |
guides/ | 使用指南(本页所在位置) |
reference/ | 参考资料 |
index.mdx | 首页 |
文件名决定网址。 Starlight 会把文件名转成小写作为路径:
CoreRules/Getting-Started.md → /corerules/getting-started/侧边栏的分组在 astro.config.mjs 里配置:目录名保持英文,分组标题写中文;同一分组内的条目默认按文件名字母序排列,可用 frontmatter 的 sidebar.order 调整。某一页不想出现在侧栏,就加 sidebar: { hidden: true }。
侧栏分组显示中文(规则书/使用指南/参考资料),但目录名仍是英文,两者在 astro.config.mjs 的 sidebar 里对应:分组写 label: '规则书',再用 items: [{ autogenerate: { directory: 'CoreRules' } }] 指向真实目录。所以改分组显示名不会影响网址。
页面格式约定
Section titled “页面格式约定”-
frontmatter 的
title必填,它会成为页面标题、侧边栏条目和<h1>:---title: 开始游戏description: 一句话说明这页讲什么。---## 定义你的设定 -
正文不要再写一级标题。 页面标题已由
title生成,正文里再写# 开始游戏会让页面出现两个<h1>。正文请从##开始。 -
站内链接一律用小写路径,写成
/CoreRules/Introduction/会 404:参见[简介](/corerules/introduction/)。 -
表格用 Markdown 表格,不要贴
<table><tbody>这类 HTML 标签。 -
骰子结果用
<dice>标签,会渲染成真正的命运骰面(使用 Fate Core 字体):他掷出 <dice>[0][+][+][+]</dice>,加上普通(+1)的工艺,得出极佳(+4)。方括号内只能是
+、-、0,顺序即骰面顺序。渲染结果自带无障碍标签(如「骰点 +3:±0、+1、+1、+1」)。 -
专有名词用
「**术语**」加书名号,会自动渲染成标签样式:这间屋子现在「**着火**」{情境}了。适用于特征名、特技名这类游戏内专有名词。普通术语(如命运点)只用加粗即可,不要加「」。
类别写在右书名号后面,决定标签配色:
标注 类别 用于 {角色}角色特征 写在角色卡上的长期特征 {情境}情境特征 场景内的临时特征 {后果}后果 承受打击后留下的伤害 {助益}助益 极短暂的一次性优势 {特技}特技 角色专属招式 不写类别就用默认灰色标签。类别名写错时构建会打印警告,并回退到默认样式。
-
清理
<a id="_idTextAnchor0XX"></a>这类 Pandoc 转换残留的锚点,Starlight 会自动为标题生成锚点。
如果拿到一批没有 frontmatter 的 .md 文件,可以用脚本批量补上(标题取文件名):
node scripts/ensure-frontmatter.mjs src/content/docs/CoreRules/需要把一整篇长稿按一级标题拆成多个文件时:
node scripts/md-split.mjs fate-srd-content/some-long-doc.md src/content/docs/CoreRules/译文统一以仓库根目录的 术语表.md 为准,翻译前请先对照。几条最容易踩的规则:
aspect一律译特征,不译「方面」。situation aspect译情境特征,不能译「场景特征」——「场景」已固定对应scene。- 文档 frontmatter 的
title也要译成中文。 - 示例角色人名(Ethan、Ruth、Cassandra 等)保留原文,但其名下的特征短语(如
On Fire)译成中文。 - 专有名词首次出现时可括注英文,如「命运骰(Fate Dice)」,之后直接用中文。
英文原稿保存在 fate-srd-content 子模块与 CoreRules/Fate-Condensed-SRD-CC-BY.md,翻译时以它们为对照基准。
合并到 main 分支后,CNB 流水线(.cnb.yml)会自动执行 pnpm install && pnpm run build,并把 dist/ 部署到 EdgeOne Pages,几分钟后线上即可看到更新。
提交前建议本地自检两件事:
pnpm build # 构建必须成功npm run test:e2e # 前端验证测试(32 项 = 16 个用例 × chromium / mobile)测试会覆盖首页跳转、侧边栏导航、移动端菜单、主题切换和站内搜索。如果改动涉及链接或页面标题,这一步能提前发现 404 和重复标题的问题。