SuperAPI AI 工具集

lark-workflow-doc-template-engine

办公与效率

查看项目

更新于 10-16 08:52

技能介绍

用途

文档模板引擎工作流用于打通飞书「数据层」(Base/Sheets)和「文档层」(Docs),实现数据驱动的文档自动化生成。典型场景包括客户报告、项目通知、合同草稿等需要批量生成的文档。

适用场景包括:用 XX 模板创建文档、基于模板批量生成报告、把多维表格的数据填入文档模板、数据驱动生成文档、批量生成合同/通知/报告、模板引擎、把表的每一行都生成一份文档、mail merge、用 Sheet 的数据填充文档、Doc template engine。

前置条件

支持 user 身份。执行前需确保已授权:

lark-cli auth login --domain doc,base,drive

开始前必须先用 Read 工具读取 lark-shared/SKILL.md,其中包含认证、权限处理和安全规则。

主要能力

工作流整体流程为:用户指定模板 → docs +fetch(读取模板内容)→ 识别变量占位符 {{xxx}} → 用户指定数据源 → base +record-list / sheets → 字段 ↔ 变量映射 → 单条生成 / 批量生成 / 预览模式 → docs +create(生成文档)/ 预览输出。

Step 1:读取模板文档

参考 lark-doc/SKILL.md。

# 读取模板文档内容
lark-cli docs +fetch --doc "<模板doc_token>" --format markdown

从模板内容中识别变量占位符。支持的占位符格式:

  • {{变量名}} — 标准格式(推荐)
  • {变量名} — 简化格式
  • 【变量名】 — 中文格式

示例模板:

# {{项目名称}} 项目周报

## 基本信息
- 项目经理:{{负责人}}
- 报告周期:{{开始日期}} ~ {{结束日期}}
- 项目状态:{{状态}}

## 本周进展
{{本周完成内容}}

## 下周计划
{{下周计划内容}}

Step 2:获取数据源

方式 A — 多维表格(Base),参考 lark-base/SKILL.md:

# 获取表字段结构
lark-cli base +field-list --base-token "<base_token>" --table-id "<table_id>" --format json

# 获取记录数据
lark-cli base +record-list --base-token "<base_token>" --table-id "<table_id>" \
  --page-size 100 --format json

# 按关键词搜索特定记录(v1.0.8+,适合快速定位模板对应的数据)
lark-cli base +record-search --base-token "<base_token>" --table-id "<table_id>" \
  --query "<关键词>" --format json

方式 B — 电子表格(Sheets),参考 lark-sheets/SKILL.md:

# 读取电子表格数据(第一行为表头)
lark-cli sheets spreadsheets values get --params '{"spreadsheetToken":"<token>","range":"Sheet1!A1:Z100"}' --format json

方式 C — 用户直接提供数据(单条):用户口述或以 JSON 形式提供变量值,直接进入 Step 4。

Step 3:变量映射

展示模板变量与数据源字段的映射关系,供用户确认。自动映射规则:

  • 精确匹配:变量名 == 字段名
  • 模糊匹配:变量名包含字段名或字段名包含变量名
  • 未匹配:标注 ⚠️,等用户指定

Step 4:生成文档

安全规则:批量生成前必须让用户确认映射和生成数量。

单条生成:

# 替换变量后创建文档
lark-cli docs +create --title "<替换后的标题>" --markdown "<替换后的内容>"

批量生成:逐条创建(串行,每条间隔 1 秒)。对数据源中的每一行:用该行数据替换模板中的所有变量,然后创建文档。

lark-cli docs +create --title "<按行替换的标题>" --markdown "<按行替换的内容>"

批量安全:单次批量最多 20 条(避免创建过多文档);超过 20 条提示用户分批执行;提供预览模式(仅展示替换结果,不创建文档)。

演示文稿生成(v1.0.9+,可选):当用户需要生成 PPT 而非文档时:

# 一步创建演示文稿(v1.0.9+)
lark-cli slides +create --slides "<Markdown 内容>"

提示:slides +create 返回 presentation URL,可直接在报告中链接。

图片写入电子表格(v1.0.9+,可选):当模板需要在 Sheets 中插入图片时:

# 向电子表格写入图片(v1.0.7+)
lark-cli sheets +write-image --spreadsheet "<token>" --range "<A1>" --image "<image_path>"

创建文档快捷方式归档(v1.0.10+,可选):当批量生成的文档需要集中归档到同一目录时:

# 为生成的文档创建快捷方式到指定目录(v1.0.10+)
lark-cli drive +create-shortcut --file-token "<doc_token>" --parent-token "<archive_folder_token>"

提示:+create-shortcut 可以在不移动原始文档的情况下,在归档目录中创建引用链接,方便集中管理批量生成的文档。

预览模式会展示替换后的文档内容,并提示确认生成(共 N 条,输入"确认"执行)。

Step 5:输出执行报告

报告包含模板信息(模板文档、数据源、变量数量)和生成结果表格(文档标题、状态、链接),并汇总共生成 N 篇文档。

容错机制

  • 模板中无占位符:提示"未检测到变量占位符",引导用户在模板中添加
  • 变量未匹配到字段:标注 ⚠️,等用户手动指定或使用固定值
  • 数据源某行缺失字段:将缺失字段替换为"—",不阻塞
  • 批量超过 20 条:提示分批执行
  • 文档创建失败:记录失败项,继续创建其余文档
  • 模板文档无权限:提示用户检查文档分享设置

权限表

  • 读取模板:docs +fetch,scope 为 docx:document:readonly,必选
  • Base 数据:base +field-list / +record-list / +record-search,scope 为 bitable:bitable:readonly,可选(Base 数据源时)
  • Sheets 数据:sheets values get / +write-image,scope 为 sheets:spreadsheet:readonly,可选(Sheets 数据源时)
  • 生成文档:docs +create,scope 为 docx:document:write,必选
  • 生成演示文稿:slides +create,scope 为 slides:presentation:write,可选(PPT 模式时)

参考

  • lark-shared — 认证、权限(必读)
  • lark-doc — +fetch、+create 详细用法
  • lark-base — +field-list、+record-list、+record-search 详细用法
  • lark-sheets — 电子表格读取、+write-image 详细用法
  • lark-slides — +create 演示文稿创建

限制

单次批量最多 20 条,超过需分批执行;批量生成前必须让用户确认映射和生成数量;模板文档需具备相应权限。