Skip to content

Sidebar (docs.json)

Feishu Pages 导出的时候,按照飞书知识库的原始目录结构生成了一个 docs.json 文件,这样我们需要在各种 Static Page Generator 里面使用的时候,可以简单的通过 docs.json 来构建自定义的目录树。

每一种 Static Page Generator 自动构建目录树的方式都不同,比如我已知的:

  • mdBook, GitBook - 基于 SUMMARY.md 来生成。
  • VitePress - 默认基于 .md 文件的层次结构来整理,支持自定义 Sidebar
  • Docusaurus - 默认基于 .md 文件结构整理,支持自定义 Sidebar

基本上大部分的工具都支持按目录结构来生成 Sidebar,然而实际情况是它们之间有一定的微小差异。

因此 Feishu Pages 给出了 docs.json 让我们使用的时候,可以手动生成,减少坑。

文件结构

docs.json 是一个 JSON 文件,以层级的方式存储了整个文档的完整树形结构。

Field

Type

Description

depth

interger

目录深度,从 0 开始,每一层 +1

title

string

文档标题

children

array

子集文档,内部每个成员与这个表格描述的 Doc 结构一样

has_child

bool

是否包含子集文档,true | false

meta

object

见下面的 PageMeta 描述,通过文档内的 PageMeta 生成出来的
例如: { "slug": "gettting-started", "hide": false }
注意,你在原始文档写了多少,这里全部都会给出来,所以你想做更多的自定义,可以通过在飞书文档内的 PageMeta 里面加更多自定义内容。
详见:Page Mata

position

排列顺序

小的在前面(其实 array 的结构已经是原始的顺序了)你可以忽略这个字段。

filename

string

Markdown 的文件名

node_token

string

飞书 API 的原始字段

parent_node_token

string

飞书 API 的原始字段

obj_token

string

飞书 API 的原始字段

obj_create_time

string

Unix Timestamp 的文档创建时间,飞书 API 原始字段

obj_edit_time

string

Unix Timestamp 的文档修改时间,飞书 API 原始字段

例如

json
[
  {
    // 目录深度 
    "depth": 0,
    // 页面标题
    "title": "简体中文",
    // _token 结尾的为
    "node_token": "PRqjwjB4EiQbiEk5fxVc99BZnzg",
    "parent_node_token": "",
    "obj_create_time": "1697445178",
    "obj_edit_time": "1698232747",
    "obj_token": "LmzFdNtLQok47MxMUagc2o9SnXc",
    "children": [
      {
        "depth": 1,
        "title": "快速开始",
        "node_token": "XpKYwA6oqiGMfFkLVwCcwykunzV",
        "parent_node_token": "PRqjwjB4EiQbiEk5fxVc99BZnzg",
        "obj_create_time": "1693452885",
        "obj_edit_time": "1698229707",
        "obj_token": "Fkoed2dB5ofvJbxSmZbcWMBhnQd",
        "children": [],
        "has_child": false,
        "meta": {
          "slug": "gettting-started"
        },
        "slug": "zh-CN/gettting-started",
        "position": 0,
        "filename": "zh-CN/gettting-started.md"
      },
      {
        "depth": 1,
        "title": "支持的内容格式",
        "node_token": "Ks7jwPEtJiyUXckawcRcJ68jnvg",
        "parent_node_token": "PRqjwjB4EiQbiEk5fxVc99BZnzg",
        "obj_create_time": "1695107050",
        "obj_edit_time": "1698225722",
        "obj_token": "Z1dpdj9Y5o0IEex5fecc529qnwc",
        "children": [ 
          // ...
        ],
        "has_child": true,
        "meta": {
          "slug": "supported-formats"
        },
        "slug": "zh-CN/supported-formats",
        "position": 1,
        "filename": "zh-CN/supported-formats.md"
      }
    ]
  }
]