Skip to main content
Glama

Feishu MCP Server

get.ts350 kB
import z from 'zod'; import { zodToJsonSchema } from 'zod-to-json-schema'; import { convertDescriptionToString, McpToolDescription } from '../../types'; const description: McpToolDescription = { shortDescription: '飞书-云文档-文档-块-获取块类型Schema-获取指定块类型的创建参数结构', bestFor: '了解任何块类型的详细参数结构和字段说明,为后续创建块做准备', notRecommendedFor: '创建图片、视频、文件块(获取schema后请使用docx_image_or_video_or_file_create工具)', promptExample: '获取文本块的创建参数结构', usageExample: 'docx_block_schema_get({block_type: "文本"})', returns: '指定块类型的完整JSON Schema,包含所有可用字段和选项说明' }; export const docxV1BlockTypeSchemaGet = { project: 'docx', name: 'docx_block_schema_get', sdkName: 'docx.v1.blockType.schema.get', path: '/internal/block-schema', // 内部路径,非API调用 httpMethod: 'GET', description: convertDescriptionToString(description), accessTokens: [], schema: { block_type: z .enum([ '文本', '一级标题', '二级标题', '三级标题', '四级标题', '五级标题', '六级标题', '七级标题', '八级标题', '九级标题', '无序列表', '有序列表', '代码', '引用', '公式', '待办事项', '高亮', '群聊卡片', '分割线', '分栏', '内嵌网页', '文本绘图', '名词解释', '时间轴', '目录导航', '电子表格', '表格', '日期提醒', '倒计时', '图片', '附件', '文件', '视频' ]) .describe('块类型'), }, customHandler: async (params: any) => { switch (params.block_type) { case '文本': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(2), text: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('文本 Block'), }), ), ), }, ], }; case '一级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(3), heading1: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('一级标题 Block'), }), ), ), }, ], }; case '二级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(4), heading2: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('二级标题 Block'), }), ), ), }, ], }; case '三级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(5), heading3: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('三级标题 Block'), }), ), ), }, ], }; case '四级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(6), heading4: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('四级标题 Block'), }), ), ), }, ], }; case '五级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(7), heading5: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('五级标题 Block'), }), ), ), }, ], }; case '六级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(8), heading6: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('六级标题 Block'), }), ), ), }, ], }; case '七级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(9), heading7: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('七级标题 Block'), }), ), ), }, ], }; case '八级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(10), heading8: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('八级标题 Block'), }), ), ), }, ], }; case '九级标题': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(11), heading9: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('九级标题 Block'), }), ), ), }, ], }; case '无序列表': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(12), bullet: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('无序列表 Block'), }), ), ), }, ], }; case '有序列表': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(13), ordered: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('有序列表 Block'), }), ), ), }, ], }; case '代码': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(14), code: z .object({ style: z .object({ language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), }) .describe('文字') .optional(), }), ) .describe('文本元素'), }) .describe('代码块 Block'), }), ), ), }, ], }; case '引用': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(15), quote: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), language: z .number() .describe( '代码块语言 Options:1(PlainText),2(ABAP),3(Ada),4(Apache),5(Apex),6(AssemblyLanguage Assembly Language),7(Bash),8(CSharp),9(CPlusPlus C++),10(C),11(COBOL),12(CSS),13(CoffeeScript),14(D),15(Dart),16(Delphi),17(Django),18(Dockerfile),19(Erlang),20(Fortran),21(FoxPro),22(Go),23(Groovy),24(HTML),25(HTMLBars),26(HTTP),27(Haskell),28(JSON),29(Java),30(JavaScript),31(Julia),32(Kotlin),33(LateX),34(Lisp),35(Logo),36(Lua),37(MATLAB),38(Makefile),39(Markdown),40(Nginx),41(ObjectiveC Objective-C),42(OpenEdgeABL),43(PHP),44(Perl),45(PostScript),46(PowerShell Power Shell),47(Prolog),48(ProtoBuf),49(Python),50(R),51(RPG),52(Ruby),53(Rust),54(SAS),55(SCSS),56(SQL),57(Scala),58(Scheme),59(Scratch),60(Shell),61(Swift),62(Thrift),63(TypeScript),64(VBScript),65(VisualBasic Visual Basic),66(XML),67(YAML),68(CMake),69(Diff),70(Gherkin),71(GraphQL),72(OpenGLShadingLanguage OpenGL Shading Language),73(Properties),74(Solidity),75(TOML)', ) .optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('引用 Block'), }), ), ), }, ], }; case '公式': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(2), text: z .object({ elements: z .array( z.object({ equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('公式 Block'), }), ), ), }, ], }; case '待办事项': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(17), todo: z .object({ style: z .object({ align: z.number().describe('对齐方式 Options:1(Left 居左排版),2(Center 居中排版),3(Right 居右排版)').optional(), done: z.boolean().describe('todo 的完成状态').optional(), folded: z.boolean().describe('文本的折叠状态').optional(), wrap: z.boolean().describe('代码块是否自动换行').optional(), background_color: z .enum([ 'LightGrayBackground', 'LightRedBackground', 'LightOrangeBackground', 'LightYellowBackground', 'LightGreenBackground', 'LightBlueBackground', 'LightPurpleBackground', 'PaleGrayBackground', 'DarkGrayBackground', 'DarkRedBackground', 'DarkOrangeBackground', 'DarkYellowBackground', 'DarkGreenBackground', 'DarkBlueBackground', 'DarkPurpleBackground', ]) .describe( '块背景色 Options:LightGrayBackground(浅灰色),LightRedBackground(浅红色),LightOrangeBackground(浅橙色),LightYellowBackground(浅黄色),LightGreenBackground(浅绿色),LightBlueBackground(浅蓝色),LightPurpleBackground(浅紫色),PaleGrayBackground(淡灰色),DarkGrayBackground(深灰色),DarkRedBackground(深红色),DarkOrangeBackground(深橙色),DarkYellowBackground(深黄色),DarkGreenBackground(深绿色),DarkBlueBackground(深蓝色),DarkPurpleBackground(深紫色)', ) .optional(), indentation_level: z .enum(['NoIndent', 'OneLevelIndent']) .describe('首行缩进级别 Options:NoIndent(无缩进),OneLevelIndent(一级缩进)') .optional(), }) .describe('文本样式') .optional(), elements: z .array( z.object({ text_run: z .object({ content: z.string().describe('文本内容'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), comment_ids: z.array(z.string()).describe('评论 id 列表').optional(), }) .describe('文本局部样式') .optional(), }) .describe('文字') .optional(), mention_user: z .object({ user_id: z.string().describe('用户 OpenID'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), comment_ids: z.array(z.string()).describe('评论 id 列表').optional(), }) .describe('文本局部样式') .optional(), }) .describe('@用户') .optional(), mention_doc: z .object({ token: z.string().describe('云文档 token'), obj_type: z .number() .describe( '云文档类型 Options:1(Doc),3(Sheet),8(Bitable),11(MindNote),12(File),15(Slide),16(Wiki),22(Docx)', ), url: z.string().describe('云文档链接(需要 url_encode)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), comment_ids: z.array(z.string()).describe('评论 id 列表').optional(), }) .describe('文本局部样式') .optional(), }) .describe('@文档') .optional(), reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级事件戳)'), notify_time: z.string().describe('触发通知的时间(毫秒级时间戳)'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), comment_ids: z.array(z.string()).describe('评论 id 列表').optional(), }) .describe('文本局部样式') .optional(), }) .describe('日期提醒') .optional(), file: z .object({ file_token: z.string().describe('附件 token').optional(), source_block_id: z.string().describe('当前文档中该附件所处的 block 的 id').optional(), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), comment_ids: z.array(z.string()).describe('评论 id 列表').optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联附件') .optional(), inline_block: z .object({ block_id: z.string().describe('关联的内联状态的 block 的 block_id'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), comment_ids: z.array(z.string()).describe('评论 id 列表').optional(), }) .describe('文本局部样式') .optional(), }) .describe('内联 block') .optional(), equation: z .object({ content: z .string() .describe('符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html'), text_element_style: z .object({ bold: z.boolean().describe('加粗').optional(), italic: z.boolean().describe('斜体').optional(), strikethrough: z.boolean().describe('删除线').optional(), underline: z.boolean().describe('下划线').optional(), inline_code: z.boolean().describe('inline 代码').optional(), background_color: z .number() .describe( '背景色 Options:1(LightPink 浅粉红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightGray 浅灰色),8(DarkPink 暗粉红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkGray 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), text_color: z .number() .describe( '字体颜色 Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), link: z .object({ url: z.string().describe('超链接指向的 url (需要 url_encode)') }) .describe('链接') .optional(), comment_ids: z.array(z.string()).describe('评论 id 列表').optional(), }) .describe('文本局部样式') .optional(), }) .describe('公式') .optional(), }), ) .describe('文本元素'), }) .describe('待办事项 Block'), }), ), ), }, ], }; case '高亮': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(19), callout: z .object({ emoji_id: z .enum([ 'grinning', 'grin', 'joy', 'smiley', 'smile', 'sweat_smile', 'laughing', 'wink', 'blush', 'yum', 'sunglasses', 'heart_eyes', 'kissing_heart', 'kissing', 'kissing_smiling_eyes', 'kissing_closed_eyes', 'slightly_smiling_face', 'hugging_face', 'thinking_face', 'neutral_face', 'expressionless', 'no_mouth', 'face_with_rolling_eyes', 'smirk', 'persevere', 'disappointed_relieved', 'open_mouth', 'zipper_mouth_face', 'hushed', 'sleepy', 'tired_face', 'sleeping', 'relieved', 'stuck_out_tongue', 'stuck_out_tongue_winking_eye', 'stuck_out_tongue_closed_eyes', 'unamused', 'sweat', 'pensive', 'confused', 'upside_down_face', 'money_mouth_face', 'astonished', 'slightly_frowning_face', 'confounded', 'disappointed', 'worried', 'triumph', 'cry', 'sob', 'frowning', 'anguished', 'fearful', 'weary', 'grimacing', 'cold_sweat', 'scream', 'flushed', 'dizzy_face', 'rage', 'angry', 'mask', 'face_with_thermometer', 'face_with_head_bandage', 'innocent', 'nerd_face', 'smiling_imp', 'imp', 'japanese_ogre', 'japanese_goblin', 'skull', 'ghost', 'alien', 'space_invader', 'robot_face', 'hankey', 'smiley_cat', 'smile_cat', 'joy_cat', 'heart_eyes_cat', 'smirk_cat', 'kissing_cat', 'scream_cat', 'crying_cat_face', 'pouting_cat', 'see_no_evil', 'hear_no_evil', 'speak_no_evil', 'baby', 'boy', 'girl', 'man', 'woman', 'older_man', 'older_woman', 'cop', 'guardsman', 'construction_worker', 'princess', 'man_with_turban', 'man_with_gua_pi_mao', 'person_with_blond_hair', 'bride_with_veil', 'angel', 'santa', 'person_frowning', 'person_with_pouting_face', 'no_good', 'ok_woman', 'information_desk_person', 'raising_hand', 'bow', 'massage', 'haircut', 'walking', 'runner', 'dancer', 'dancers', 'bath', 'sleeping_accommodation', 'bust_in_silhouette', 'busts_in_silhouette', 'horse_racing', 'snowboarder', 'surfer', 'rowboat', 'swimmer', 'bicyclist', 'mountain_bicyclist', 'couple', 'two_men_holding_hands', 'two_women_holding_hands', 'couplekiss', 'couple_with_heart', 'family', 'muscle', 'point_left', 'point_right', 'point_up_2', 'middle_finger', 'point_down', 'spock-hand', 'the_horns', 'hand', 'ok_hand', '+1', '-1', 'fist', 'facepunch', 'wave', 'clap', 'open_hands', 'raised_hands', 'pray', 'nail_care', 'ear', 'nose', 'footprints', 'eyes', 'tongue', 'lips', 'kiss', 'cupid', 'heartbeat', 'broken_heart', 'two_hearts', 'sparkling_heart', 'heartpulse', 'blue_heart', 'green_heart', 'yellow_heart', 'purple_heart', 'gift_heart', 'revolving_hearts', 'heart_decoration', 'love_letter', 'zzz', 'anger', 'bomb', 'boom', 'sweat_drops', 'dash', 'dizzy', 'speech_balloon', 'thought_balloon', 'eyeglasses', 'necktie', 'shirt', 'jeans', 'dress', 'kimono', 'bikini', 'womans_clothes', 'purse', 'handbag', 'pouch', 'school_satchel', 'mans_shoe', 'athletic_shoe', 'high_heel', 'sandal', 'boot', 'crown', 'womans_hat', 'tophat', 'mortar_board', 'prayer_beads', 'lipstick', 'ring', 'gem', 'monkey_face', 'monkey', 'dog', 'dog2', 'poodle', 'wolf', 'cat', 'cat2', 'lion_face', 'tiger', 'tiger2', 'leopard', 'horse', 'racehorse', 'unicorn_face', 'cow', 'ox', 'water_buffalo', 'cow2', 'pig', 'pig2', 'boar', 'pig_nose', 'ram', 'sheep', 'goat', 'dromedary_camel', 'camel', 'elephant', 'mouse', 'mouse2', 'rat', 'hamster', 'rabbit', 'rabbit2', 'bear', 'koala', 'panda_face', 'feet', 'turkey', 'chicken', 'rooster', 'hatching_chick', 'baby_chick', 'hatched_chick', 'bird', 'penguin', 'frog', 'crocodile', 'turtle', 'snake', 'dragon_face', 'dragon', 'whale', 'whale2', 'dolphin', 'fish', 'tropical_fish', 'blowfish', 'octopus', 'shell', 'crab', 'snail', 'bug', 'ant', 'bee', 'beetle', 'scorpion', 'bouquet', 'cherry_blossom', 'white_flower', 'rose', 'hibiscus', 'sunflower', 'blossom', 'tulip', 'seedling', 'evergreen_tree', 'deciduous_tree', 'palm_tree', 'cactus', 'ear_of_rice', 'herb', 'four_leaf_clover', 'maple_leaf', 'fallen_leaf', 'leaves', 'grapes', 'melon', 'watermelon', 'tangerine', 'lemon', 'banana', 'pineapple', 'apple', 'green_apple', 'pear', 'peach', 'cherries', 'strawberry', 'tomato', 'eggplant', 'corn', 'mushroom', 'chestnut', 'bread', 'cheese_wedge', 'meat_on_bone', 'poultry_leg', 'hamburger', 'fries', 'pizza', 'hotdog', 'taco', 'burrito', 'fried_egg', 'stew', 'popcorn', 'bento', 'rice_cracker', 'rice_ball', 'rice', 'curry', 'ramen', 'spaghetti', 'sweet_potato', 'oden', 'sushi', 'fried_shrimp', 'fish_cake', 'dango', 'icecream', 'shaved_ice', 'ice_cream', 'doughnut', 'cookie', 'birthday', 'cake', 'chocolate_bar', 'candy', 'lollipop', 'custard', 'honey_pot', 'baby_bottle', 'coffee', 'tea', 'sake', 'champagne', 'wine_glass', 'cocktail', 'tropical_drink', 'beer', 'beers', 'fork_and_knife', 'hocho', 'amphora', 'jack_o_lantern', 'christmas_tree', 'fireworks', 'sparkler', 'sparkles', 'balloon', 'tada', 'confetti_ball', 'tanabata_tree', 'bamboo', 'dolls', 'flags', 'wind_chime', 'rice_scene', 'ribbon', 'gift', 'ticket', 'trophy', 'sports_medal', 'soccer', 'baseball', 'basketball', 'volleyball', 'football', 'rugby_football', 'tennis', '8ball', 'bowling', 'cricket_bat_and_ball', 'field_hockey_stick_and_ball', 'ice_hockey_stick_and_puck', 'table_tennis_paddle_and_ball', 'badminton_racquet_and_shuttlecock', 'dart', 'golf', 'fishing_pole_and_fish', 'running_shirt_with_sash', 'ski', 'video_game', 'game_die', 'black_joker', 'mahjong', 'flower_playing_cards', 'earth_africa', 'earth_americas', 'earth_asia', 'globe_with_meridians', 'japan', 'volcano', 'mount_fuji', 'house', 'house_with_garden', 'office', 'post_office', 'european_post_office', 'hospital', 'bank', 'hotel', 'love_hotel', 'convenience_store', 'school', 'department_store', 'factory', 'japanese_castle', 'european_castle', 'wedding', 'tokyo_tower', 'statue_of_liberty', 'church', 'mosque', 'synagogue', 'kaaba', 'fountain', 'tent', 'foggy', 'night_with_stars', 'sunrise_over_mountains', 'sunrise', 'city_sunset', 'city_sunrise', 'bridge_at_night', 'milky_way', 'carousel_horse', 'ferris_wheel', 'roller_coaster', 'barber', 'circus_tent', 'performing_arts', 'art', 'slot_machine', 'steam_locomotive', 'railway_car', 'bullettrain_side', 'bullettrain_front', 'train2', 'metro', 'light_rail', 'station', 'tram', 'monorail', 'mountain_railway', 'train', 'bus', 'oncoming_bus', 'trolleybus', 'minibus', 'ambulance', 'fire_engine', 'police_car', 'oncoming_police_car', 'taxi', 'oncoming_taxi', 'car', 'oncoming_automobile', 'blue_car', 'truck', 'articulated_lorry', 'tractor', 'bike', 'busstop', 'fuelpump', 'rotating_light', 'traffic_light', 'vertical_traffic_light', 'construction', 'anchor', 'boat', 'speedboat', 'ship', 'airplane_departure', 'airplane_arriving', 'seat', 'helicopter', 'suspension_railway', 'mountain_cableway', 'aerial_tramway', 'rocket', 'door', 'toilet', 'shower', 'bathtub', 'hourglass', 'hourglass_flowing_sand', 'watch', 'alarm_clock', 'clock12', 'clock1230', 'clock1', 'clock130', 'clock2', 'clock230', 'clock3', 'clock330', 'clock4', 'clock430', 'clock5', 'clock530', 'clock6', 'clock630', 'clock7', 'clock730', 'clock8', 'clock830', 'clock9', 'clock930', 'clock10', 'clock1030', 'clock11', 'clock1130', 'new_moon', 'waxing_crescent_moon', 'first_quarter_moon', 'moon', 'full_moon', 'waning_gibbous_moon', 'last_quarter_moon', 'waning_crescent_moon', 'crescent_moon', 'new_moon_with_face', 'first_quarter_moon_with_face', 'last_quarter_moon_with_face', 'full_moon_with_face', 'sun_with_face', 'star', 'star2', 'stars', 'partly_sunny', 'cyclone', 'rainbow', 'closed_umbrella', 'umbrella_with_rain_drops', 'zap', 'snowman_without_snow', 'fire', 'droplet', 'ocean', 'mute', 'speaker', 'sound', 'loud_sound', 'loudspeaker', 'mega', 'postal_horn', 'bell', 'no_bell', 'musical_score', 'musical_note', 'notes', 'microphone', 'headphones', 'radio', 'saxophone', 'guitar', 'musical_keyboard', 'trumpet', 'violin', 'iphone', 'calling', 'telephone_receiver', 'pager', 'fax', 'battery', 'electric_plug', 'computer', 'minidisc', 'floppy_disk', 'cd', 'dvd', 'movie_camera', 'clapper', 'tv', 'camera', 'camera_with_flash', 'video_camera', 'vhs', 'mag', 'mag_right', 'microscope', 'telescope', 'satellite_antenna', 'bulb', 'flashlight', 'izakaya_lantern', 'notebook_with_decorative_cover', 'closed_book', 'book', 'green_book', 'blue_book', 'orange_book', 'books', 'notebook', 'ledger', 'page_with_curl', 'scroll', 'page_facing_up', 'newspaper', 'bookmark_tabs', 'bookmark', 'moneybag', 'yen', 'dollar', 'euro', 'pound', 'money_with_wings', 'credit_card', 'chart', 'currency_exchange', 'heavy_dollar_sign', 'e-mail', 'incoming_envelope', 'envelope_with_arrow', 'outbox_tray', 'inbox_tray', 'package', 'mailbox', 'mailbox_closed', 'mailbox_with_mail', 'mailbox_with_no_mail', 'postbox', 'memo', 'briefcase', 'file_folder', 'open_file_folder', 'date', 'calendar', 'card_index', 'chart_with_upwards_trend', 'chart_with_downwards_trend', 'bar_chart', 'clipboard', 'pushpin', 'round_pushpin', 'paperclip', 'straight_ruler', 'triangular_ruler', 'lock', 'unlock', 'lock_with_ink_pen', 'closed_lock_with_key', 'key', 'hammer', 'gun', 'bow_and_arrow', 'wrench', 'nut_and_bolt', 'link', 'syringe', 'pill', 'smoking', 'moyai', 'crystal_ball', 'atm', 'put_litter_in_its_place', 'potable_water', 'wheelchair', 'mens', 'womens', 'restroom', 'baby_symbol', 'wc', 'passport_control', 'customs', 'baggage_claim', 'left_luggage', 'children_crossing', 'no_entry', 'no_entry_sign', 'no_bicycles', 'no_smoking', 'do_not_litter', 'non-potable_water', 'no_pedestrians', 'no_mobile_phones', 'underage', 'arrows_clockwise', 'arrows_counterclockwise', 'back', 'end', 'on', 'soon', 'top', 'place_of_worship', 'menorah_with_nine_branches', 'six_pointed_star', 'aries', 'taurus', 'gemini', 'cancer', 'leo', 'virgo', 'libra', 'scorpius', 'sagittarius', 'capricorn', 'aquarius', 'pisces', 'ophiuchus', 'twisted_rightwards_arrows', 'repeat', 'repeat_one', 'fast_forward', 'rewind', 'arrow_up_small', 'arrow_double_up', 'arrow_down_small', 'arrow_double_down', 'cinema', 'low_brightness', 'high_brightness', 'signal_strength', 'vibration_mode', 'mobile_phone_off', 'trident', 'name_badge', 'beginner', 'o', 'white_check_mark', 'x', 'negative_squared_cross_mark', 'heavy_plus_sign', 'heavy_minus_sign', 'heavy_division_sign', 'curly_loop', 'loop', 'question', 'grey_question', 'grey_exclamation', 'exclamation', 'keycap_ten', '100', 'capital_abcd', 'abcd', '1234', 'symbols', 'abc', 'ab', 'cl', 'cool', 'free', 'id', 'new', 'ng', 'ok', 'sos', 'up', 'vs', 'koko', 'u6709', 'u6307', 'ideograph_advantage', 'u5272', 'u7121', 'u7981', 'accept', 'u7533', 'u5408', 'u7a7a', 'u55b6', 'u6e80', 'white_medium_small_square', 'black_medium_small_square', 'black_large_square', 'white_large_square', 'large_orange_diamond', 'large_blue_diamond', 'small_orange_diamond', 'small_blue_diamond', 'small_red_triangle', 'small_red_triangle_down', 'diamond_shape_with_a_dot_inside', 'radio_button', 'black_square_button', 'white_square_button', 'white_circle', 'black_circle', 'red_circle', 'large_blue_circle', 'checkered_flag', 'triangular_flag_on_post', 'crossed_flags', 'gorilla', 'rolling_on_the_floor_laughing', 'waving_black_flag', 'fox_face', 'kiwifruit', 'coconut', 'avocado', 'zebra_face', 'deer', 'potato', 'carrot', 'star-struck', 'first_place_medal', 'face_with_raised_eyebrow', 'cucumber', 'drum_with_drumsticks', 'broccoli', 'second_place_medal', 'third_place_medal', 'peanuts', 'croissant', 'baguette_bread', 'pretzel', 'pancakes', 'giraffe_face', 'rhinoceros', 'cut_of_meat', 'bacon', 'boxing_glove', 'drooling_face', 'martial_arts_uniform', 'sandwich', 'goal_net', 'hedgehog', 'bat', 'stuffed_flatbread', 'egg', 'shallow_pan_of_food', 'sled', 'curling_stone', 'bowl_with_spoon', 'green_salad', 'canned_food', 'eagle', 'duck', 'owl', 'exploding_head', 'lizard', 'zany_face', 'dumpling', 'fortune_cookie', 'sauropod', 't-rex', 'takeout_box', 'face_with_symbols_on_mouth', 'nauseated_face', 'face_vomiting', 'shark', 'sneezing_face', 'pie', 'face_with_cowboy_hat', 'clown_face', 'lying_face', 'shrimp', 'squid', 'shushing_face', 'face_with_hand_over_mouth', 'butterfly', 'face_with_monocle', 'glass_of_milk', 'cricket', 'scooter', 'clinking_glasses', 'motor_scooter', 'tumbler_glass', 'cup_with_straw', 'wilted_flower', 'chopsticks', 'spoon', 'octagonal_sign', 'canoe', 'child', 'adult', 'older_adult', 'flying_saucer', 'prince', 'shopping_trolley', 'person_with_headscarf', 'bearded_person', 'man_in_tuxedo', 'pregnant_woman', 'breast-feeding', 'mrs_claus', 'mage', 'fairy', 'vampire', 'merperson', 'elf', 'genie', 'zombie', 'face_palm', 'shrug', 'man_dancing', 'person_in_steamy_room', 'person_climbing', 'person_in_lotus_position', 'fencer', 'person_doing_cartwheel', 'wrestlers', 'water_polo', 'handball', 'juggling', 'selfie', 'crossed_fingers', 'call_me_hand', 'left-facing_fist', 'right-facing_fist', 'raised_back_of_hand', 'i_love_you_hand_sign', 'palms_up_together', 'handshake', 'brain', 'orange_heart', 'black_heart', 'scarf', 'gloves', 'coat', 'socks', 'billed_cap', 'heart', 'pencil2', 'writing_hand', 'umbrella_on_ground', 'camping', 'beach_with_umbrella', 'desert_island', ]) .describe('高亮 emoji 的 id') .optional(), background_color: z .number() .describe( 'Options:1(LightRed 浅红色),2(LightOrange 浅橙色),3(LightYellow 浅黄色),4(LightGreen 浅绿色),5(LightBlue 浅蓝色),6(LightPurple 浅紫色),7(LightNeutral 浅灰色),8(DarkRed 暗红色),9(DarkOrange 暗橙色),10(DarkYellow 暗黄色),11(DarkGreen 暗绿色),12(DarkBlue 暗蓝色),13(DarkPurple 暗紫色),14(DarkNeutral 暗灰色),15(DarkSlightGray 暗银灰色)', ) .optional(), border_color: z .number() .describe( 'Options:1(Red 红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Neutral 灰色)', ) .optional(), text_color: z .number() .describe( 'Options:1(Pink 粉红色),2(Orange 橙色),3(Yellow 黄色),4(Green 绿色),5(Blue 蓝色),6(Purple 紫色),7(Gray 灰色)', ) .optional(), }) .describe('高亮 Block'), }), ), ), }, ], }; case '群聊卡片': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(20), chat_card: z .object({ chat_id: z.string().describe('群聊天会话 ID'), align: z.number().describe('对齐方式 Options:1(Left ),2(Center ),3(Right )').optional(), }) .describe('群聊卡片 Block'), }), ), ), }, ], }; case '分割线': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(22), divider: z.record(z.any()).describe('分割线 Block'), }), ), ), }, ], }; case '分栏': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(24), grid: z .object({ column_size: z.number().describe('分栏列数量'), }) .describe('分栏 Block'), }), ), ), }, ], }; case '内嵌网页': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(26), iframe: z .object({ component: z .object({ iframe_type: z .number() .describe( 'iframe 类型 Options:1(Bilibili 哔哩哔哩),2(XiGua 西瓜视频),3(Youku 优酷),4(Airtable),5(BaiduMap 百度地图),6(Amap 高德地图),7(TikTok Undefined),8(Figma),9(Modao 墨刀),10(Canva),11(CodePen),12(FeiShuWenJuan 飞书问卷),13(JinShuJu 金数据),14(GoogleMap Undefined),15(Youtube Undefined),99(Other)', ) .optional(), url: z.string().describe('内嵌网页 目标 url(需要进行 url_encode)'), }) .describe('内嵌网页 的组成元素'), }) .describe('内嵌网页 Block'), }), ), ), }, ], }; case '表格': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(31), table: z .object({ property: z .object({ row_size: z.number().describe('行数'), column_size: z.number().describe('列数'), merge_info: z .array( z.object({ row_span: z.number().describe('从当前行索引起被合并的连续行数').optional(), col_span: z.number().describe('从当前列索引起被合并的连续列数').optional(), }), ) .describe( '单元格合并信息。在创建 Table 时候此属性是只读的,将由后端进行生成。如果需要对单元格进行合并操作,可以通过更新块的子请求 merge_table_cells 来实现', ) .optional(), }) .describe('表格属性'), }) .describe('表格 Block'), }), ), ), }, ], }; case '文本绘图': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(40), mermaid_drawing: z .object({ drawing_data: z.string().describe('mermaid代码,不需要转义'), theme: z.enum(['default', 'dark', 'forest', 'neutral']).describe('主题 (可选,默认default)').optional(), }) .describe('文本绘图 Block'), }), ), ), }, ], }; case '名词解释': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(40), glossary: z .object({ terms: z .array( z.object({ name: z.string().describe('术语名称'), alias: z.string().describe('术语别名').optional(), desc: z.string().describe('术语描述'), docs: z.array(z.string()).describe('相关文档').optional(), images: z.array(z.string()).describe('相关图片').optional(), links: z.array(z.string()).describe('相关链接').optional(), }), ) .describe('术语列表'), }) .describe('名词解释 Block'), }), ), ), }, ], }; case '时间轴': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(40), timeline: z .object({ items: z .array( z.object({ title: z.string().describe('时间轴项目标题'), time: z.string().describe('时间点'), text: z.string().describe('详细描述'), }), ) .describe('时间轴项目列表'), mode: z .enum(['horizontal_alternating', 'vertical_alternating', 'vertical_right', 'horizontal_top']) .describe('显示模式 (可选,默认horizontal_alternating)') .optional(), content_show: z .object({ title: z.boolean().describe('是否显示标题').optional(), time: z.boolean().describe('是否显示时间').optional(), text: z.boolean().describe('是否显示详情').optional(), }) .describe('内容显示配置 (可选)') .optional(), }) .describe('时间轴 Block'), }), ), ), }, ], }; case '目录导航': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(40), catalog_navigation: z .object({ show_catalog_level: z.number().describe('显示目录层级 (1-9, 默认3)').optional(), is_show_all_level: z.boolean().describe('是否显示所有层级 (默认true)').optional(), view_type: z.enum(['normal', 'simple', 'detailed']).describe('视图类型 (可选,默认normal)').optional(), ignore_catalog_record_ids: z.array(z.string()).describe('忽略的目录记录ID列表 (可选)').optional(), }) .describe('目录导航 Block'), }), ), ), }, ], }; case '信息收集': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(40), information_collection: z .object({ config: z .object({ beforText: z.string().describe('操作前的文本').optional(), afterText: z.string().describe('操作后的文本').optional(), color: z.enum(['BLACK', 'RED', 'BLUE', 'GREEN', 'ORANGE', 'PURPLE', 'YELLOW']).describe('颜色').optional(), icon: z.enum(['SELECT', 'STAR', 'GOOD', 'LIKE', 'MEMBER', 'TIME', 'BELL']).describe('图标').optional(), readType: z.number().describe('阅读类型').optional(), selectVal: z.number().describe('选择值').optional(), }) .describe('信息收集配置'), }) .describe('信息收集 Block'), }), ), ), }, ], }; case '日期提醒': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(2), text: z .object({ reminder: z .object({ create_user_id: z.string().describe('创建者用户 ID'), is_notify: z.boolean().describe('是否通知').optional(), is_whole_day: z.boolean().describe('是日期还是整点小时').optional(), expire_time: z.string().describe('事件发生的时间(毫秒级事件戳)'), notify_time: z.string().describe('触发通知的时间(毫秒级时间戳)'), }) .describe('日期提醒'), }) .describe('文本'), }), ), ), }, { type: 'text' as const, text: '当前时间戳:' + Date.now() + ',当前时间:' + new Date().toLocaleString(), }, ], }; case '倒计时': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(40), countdown: z.object({ color: z.string().describe('颜色,hex'), duration: z.number().describe('倒计时时长,单位秒'), startTime: z.string().describe('开始时间,毫秒级时间戳'), }), }), ), ), }, { type: 'text' as const, text: '当前时间戳:' + Date.now() + ',当前时间:' + new Date().toLocaleString(), }, ], }; case '图片': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(27), image: z.object({ width: z.number().describe('图片宽度').optional(), height: z.number().describe('图片高度').optional(), caption: z.string().describe('图片描述').optional(), }), }), ), ), }, ], }; case '视频': case '附件': case '文件': return { content: [ { type: 'text' as const, text: JSON.stringify( zodToJsonSchema( z.object({ block_type: z.literal(23), file: z.object({ token: z.literal(''), }), }), ), ), }, { type: 'text' as const, text: '不要受别的信息干扰,直接创建文件块就好', }, ], }; default: return { content: [ { type: 'text' as const, text: `不支持的块类型: ${params.block_type}`, }, ], }; } }, };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Xumingmingming/feishu-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server