MCPInstall

feishu-cli-slides

飞书 Slides 演示文稿。slides create 从 XML 模板创建演示文稿(POST /open-apis/slidesai/v1/xmlpresentations); slides media-upload 上传媒体(drive uploadall + parenttype=slidefile,单文件 ≤20MB 不支持分片)。 当用户请求"创建飞书 ppt"、"上传幻灯片"、"演示文稿"、"slides"时使用。 不适用:复杂 slide 编辑(block insert/replace 复杂语义)暂未实现,走 lark-slides。

Installs
157
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/riba2534/feishu-cli --skill feishu-cli-slides
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads feishu-cli-slides automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

飞书 Slides 演示文稿技能

通过 feishu-cli slides 创建空白演示文稿,并把本地图片以 slide_file 媒体形式上传到该演示文稿, 返回的 file_token 可直接在 slide XML 中作为 <img src="..."> 引用。

feishu-cli:如尚未安装,请前往 riba2534/feishu-cli 获取安装方式。

范围声明:本技能只覆盖「创建空白演示文稿」+「上传媒体」两个最小可用动作。如需在已有 演示文稿里做复杂 slide 编辑(block insert/replace 等),目前 CLI 未实现,请改走 官方 lark-slides 客户端或 OpenAPI 直调。

核心概念

两种产物分别是什么

命令调用的 API产物用途
slides createPOST /open-apis/slides_ai/v1/xml_presentationsxml_presentation_id后续所有 slides 操作的 ID(不是普通 docx token)
slides media-uploadPOST /open-apis/drive/v1/medias/upload_all (parent_type=slide_file)file_token可直接放进 slide XML 的 <img src="...">

关键约束:

  • slide_file 是 slides 后端唯一接受的 parent_type(lark-cli 实测:slide_image / slides_image / slides_file 都会被拒)
  • parent_node 必须传 xml_presentation_id(而不是 docx token 或 file_token)
  • 上传走单分片 upload_all,不支持 upload_prepare 多分片,所以单文件硬限 20 MB

XML 模板格式(create 内部)

slides create 在 CLI 内部用 --title/--width/--height 拼成最小可用 XML 模板再 POST:

<presentation xmlns="http://www.larkoffice.com/sml/2.0" width="960" height="540">
  <title>演示文稿标题</title>
</presentation>

当前版本不暴露 --xml-file 参数让你直接传整个 presentation XML——只能通过 --title/--width/--height 影响这个最小模板。如需复杂初始内容,先 create 拿到 xml_presentation_id,再走 lark-slides 或后续 CLI 扩展。

前置条件

  • 认证:默认走 App Token(租户身份),通过 --user-access-token 或 FEISHU_USER_ACCESS_TOKEN 可切换 User Token(推荐用 User Token,以个人身份创建,便于后续直接在飞书里编辑)
  • 权限:
    命令所需 scope
    slides createslides:presentation:create 或 slides:presentation:write_only
    slides media-uploaddocs:document.media:upload
  • 预检:feishu-cli auth check --scope "slides:presentation:create docs:document.media:upload"

命令速查

1. slides create — 创建空白演示文稿

# 最简用法(默认尺寸 960x540,title="Untitled")
feishu-cli slides create

# 指定标题
feishu-cli slides create --title "Q2 OKR"

# 自定义宽高(像素)
feishu-cli slides create --title "Wide Deck" --width 1920 --height 1080

# JSON 输出(脚本接力时常用,方便 jq 取 xml_presentation_id)
feishu-cli slides create --title "Demo" --output json

# 以用户身份创建(推荐,演示文稿归属个人)
feishu-cli slides create --title "Demo" --user-access-token <u-xxx>

关键参数:

参数说明默认值
--title, -t演示文稿标题Untitled
--width幻灯片宽度(像素)960
--height幻灯片高度(像素)540
--output, -o输出格式(留空 = 文本摘要,json = JSON)文本摘要
--user-access-token显式传 User Token不传走 App Token

两层默认值分工:--title 在 cobra flag 注册时默认为空字符串、--width/--height 注册为 0 (见 cmd/slides_create.go:78-80);运行时由 client 层(internal/client/slides.go:49-58) 把空 title 注入为 Untitled、把非正数尺寸注入为标准 16:9 的 960x540。所以「未传」≠「传 0」≠「报错」, 三者最终都会走到同一个默认值。

返回:

Slides 演示文稿已创建:
  xml_presentation_id: <id>
  title:               Q2 OKR
  revision_id:         1

xml_presentation_id 就是后续 media-upload --presentation-token 要传的值。

2. slides media-upload — 上传媒体到演示文稿

# 上传封面图
feishu-cli slides media-upload \
  --file ./cover.png \
  --presentation-token <xml_presentation_id>

# JSON 输出,方便 jq 接力拿 file_token
feishu-cli slides media-upload \
  --file ./cover.png \
  --presentation-token <xml_presentation_id> \
  --output json

关键参数:

参数说明必填
--file本地图片路径(≤ 20 MB)是
--presentation-token目标演示文稿的 xml_presentation_id是
--output, -o输出格式(留空 = 文本摘要,json = JSON)否
--user-access-token显式传 User Token否

返回:

图片上传成功:
  file_token:      <token>
  file_name:       cover.png
  size:            123456 bytes
  presentation_id: <xml_presentation_id>

提示: 在 slide XML 中可用作 <img src="<token>"/>

典型工作流

工作流 A:创建 + 上传封面图(端到端)

# 1. 创建空白演示文稿
PRES_ID=$(feishu-cli slides create --title "Q2 OKR" --output json | jq -r '.xml_presentation_id')

# 2. 上传封面图,拿到 file_token
FILE_TOKEN=$(feishu-cli slides media-upload \
  --file ./cover.png \
  --presentation-token "$PRES_ID" \
  --output json | jq -r '.file_token')

# 3. 现在 $FILE_TOKEN 可以拼到 slide XML 的 <img src="..."> 里
echo "presentation: $PRES_ID, cover: $FILE_TOKEN"

工作流 B:批量上传一组图片

PRES_ID=$(feishu-cli slides create --title "Photo Deck" --output json | jq -r '.xml_presentation_id')

for img in ./assets/*.png; do
  feishu-cli slides media-upload \
    --file "$img" \
    --presentation-token "$PRES_ID" \
    --output json | jq -r '"\(.file_name) -> \(.file_token)"'
done

何时转用其他工具

场景改走
在已有演示文稿里插入/修改/删除 slide 或 blocklark-slides(官方 CLI)或 OpenAPI 直调 slides_ai/v1/... 编辑接口
直接传整个 presentation XML 模板暂未暴露 --xml-file,等 CLI 扩展或 OpenAPI 直调
单文件 > 20 MB 的媒体拆分小图,或直接走飞书客户端上传
把 markdown / docx 转成 slides暂不支持,建议先转 docx 再用飞书客户端导出
普通文档(不是演示文稿)上传媒体走 feishu-cli-drive 技能(drive upload)

注意事项

  • parent_type 不要乱改:源码里硬编码 slide_file,且经 lark-cli 实测唯一可用值。 自己改成 slide_image / slides_image / slides_file 都会被服务端拒绝
  • 20 MB 上限不可绕过:upload_prepare 多分片接口不接受 parent_type=slide_file, CLI 在 client 侧也做了 20 MB 硬检查,超过会在本地直接报错(不会发请求)
  • xml_presentation_id ≠ docx token:这是 slides 模块独立的标识符,不要拿去当 docx:document_id 或 drive:file_token 用
  • User Token vs App Token:默认 App Token(Bot 身份),演示文稿归 Bot 所有,普通人在 飞书 UI 里看不到。推荐传 --user-access-token 让产物归个人,能直接在「我的空间」找到
  • 图片格式:常见 png/jpg/jpeg/gif/webp 等,由 medias/upload_all 自动推断 MIME

错误排查

错误原因解决
--file 不能为空 / --presentation-token 不能为空必填参数缺失检查命令行参数
读取文件失败 / --file 必须是普通文件路径错或不是 regular file检查路径、不要传符号链接到目录
文件 X 大小 Y 字节超过 slides 上传限制(20 MB)文件超过 20 MB压缩 / 切分,slides 后端硬限不可绕过
创建 slides 失败: code=99991663, msg=...scope 不够auth check --scope "slides:presentation:create" 然后重新 auth login --domain slides --recommend
创建 slides 失败: HTTP 400, body: ...invalid xml_presentation...XML 模板异常(一般 title 含未转义字符触发)CLI 已做 XML escape,若仍出现请 issue
上传报 parent_type invalid 或类似走的不是 slide_file(如直接 curl 调 medias/upload_all 时传错)用 CLI 而不是手敲 curl,CLI 已锁定 slide_file

参考

  • API 文档:飞书开放平台「智能演示」/「云文档 - 素材」
  • 代码:cmd/slides_create.go / cmd/slides_media_upload.go / internal/client/slides.go
  • 上游 PR:feishu-cli#135

FAQ

What does the feishu-cli-slides skill do?

飞书 Slides 演示文稿。slides create 从 XML 模板创建演示文稿(POST /open-apis/slidesai/v1/xmlpresentations); slides media-upload 上传媒体(drive uploadall + parenttype=slidefile,单文件 ≤20MB 不支持分片)。 当用户请求"创建飞书 ppt"、"上传幻灯片"、"演示文稿"、"slides"时使用。 不适用:复杂 slide 编辑(block insert/replace 复杂语义)暂未实现,走 lark-slides。

How do I install feishu-cli-slides?

Run npx skills add https://github.com/riba2534/feishu-cli --skill feishu-cli-slides in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/feishu-cli-slides/ (personal) or .claude/skills/feishu-cli-slides/ (project).

Which AI agents can use feishu-cli-slides?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is feishu-cli-slides safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains feishu-cli-slides?

It is published by riba2534 in riba2534/feishu-cli. It has 157 recorded installs.

More from riba2534/feishu-cli

View all →

feishu-cli-toolkit

riba2534/feishu-cli

飞书轻量工具箱与分诊入口。仅在没有更专用 skill 时使用,主要覆盖普通电子表格、 日历/日程、任务/任务清单、基础文件/素材/评论、知识库、用户和部门查询、审批查询。 文档读写导入导出、云盘增强、多维表格、画板、消息/群聊、邮箱、搜索、权限、OAuth、 视频会议/妙记均优先使用对应 feishu-cli- 专用技能。 sheet filter-view/dropdown 优先用 feishu-cli-sheet;calendar suggestion/room-find/rsvp 优先用 feishu-cli-calendar。

feishu-cli-read

riba2534/feishu-cli

只读操作,不修改文档内容。读取飞书云文档、知识库内容或电子表格,分析文档结构。 支持普通 docx、普通 sheet、知识库 docx 和知识库 sheet。当用户请求"查看"、"阅读"、"分析"、"读取"、 "打开"、"read"、"view" 飞书文档、知识库或电子表格时使用。支持通过文档 ID、知识库 Token 或 URL 读取。 Markdown 仅作为分析中间态存放在 /tmp(不主动落地为用户文件);如需主动导出到本地路径请用 feishu-cli-export, 写入请用 feishu-cli-write。

feishu-cli-msg

riba2534/feishu-cli

飞书消息发送。发送消息(text/post/interactive 卡片等 10 种类型:text/post/image/file/audio/media/sticker/interactive/sharechat/shareuser;system 分割线 CLI 暂未直接支持,需用 feishu-cli api 透传)、回复消息、 转发/合并转发、消息加急、消息书签(flag 收藏/list/cancel)、下载消息资源(图片/文件)。 发送/回复/转发/加急默认 App Token(Bot 身份);msg flag 收藏/书签必需 User Token(im:feed.flag:read/write); msg resource-download 已登录时优先 User Token,未登录回落 App Token。 当用户明确请求通过飞书即时消息/Bot 消息发送、回复、转发、合并转发、加急、消息收藏/书签、 下载消息图片或文件时使用。邮件走 feishu-cli-mail;文档评论/共享权限走对应 skill。 注意:Reaction/Pin/获取消息详情/批量获取消息/话题回复/消息历史/搜索群聊/群聊管理, 以及消息删除(默认 App Token 用于 Bot 自撤回,可选 User Token 让管理员撤回他人) 请使用 feishu-cli-chat 技能。 发送 interactive 卡片时,先用 feishu-cli-card 构造 v2 JSON, 再回到本技能用 --msg-type interactive --content-file 发送。

feishu-cli-write

riba2534/feishu-cli

向飞书文档写入内容、创建新文档、新建空白文档。支持 doc import 从 Markdown 创建、 doc content-update 精准追加/覆盖/替换/插入/删除,doc add/update/delete 低层块操作, 以及图片/文件插入。当用户请求创建文档、写文档、更新文档、替换章节、插入章节、 删除章节、追加内容、覆盖文档、插入图片或文件时使用。

feishu-cli-export

riba2534/feishu-cli

将飞书文档、知识库文档或电子表格导出到本地。支持 docx/wiki/sheet 导出 Markdown, doc export 内嵌电子表格自动展开,图片/画板素材下载,以及 doc export-file 异步导出 PDF/Word/Excel。当用户请求导出文档、保存为 Markdown、导出 PDF/Word/Excel、下载文档图片、 导出表格或表格转 Markdown 时使用。本地导入请用 feishu-cli-import 或 feishu-cli-drive。

feishu-cli-import

riba2534/feishu-cli

从 Markdown 文件导入创建飞书文档。支持嵌套列表、Mermaid/PlantUML 图表自动转画板、 大表格智能处理(超过 9 行用 inserttablerow API 追加保持单 block,超过 9 列拆分保留首列)、公式、Callout 高亮块。 内置飞书侧渲染规范(references/doc-guide.md + references/mermaid-spec.md), 覆盖图表花括号/par 等语法限制、表格 9 行/列阈值、Callout 6 种颜色映射等飞书兼容性规则。 当用户请求"导入 Markdown"、"从 md 创建文档"、"从 md 文件创建文档"、"把 Markdown 转换到飞书"、 "上传 Markdown"、"Markdown 转飞书"、"md 导入"、"批量导入",或排查"飞书 Mermaid 渲染失败"、 "Callout 颜色不对"、"飞书表格被拆"、"飞书文档导入兼容性"等问题时使用。 注意:仅支持 Markdown 源文件导入为飞书文档。Markdown 表格创建电子表格请用 feishu-cli-toolkit 的 sheet import-md; DOCX/XLSX 导入为云文档请使用 feishu-cli-drive 的 drive import。

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs