gogcli 终端控场指南:用gog slides命令族完整脚本化 Google Slides
【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli
gog slides是 gogcli(Google Workspace in your terminal)内置的 Google Slides 命令组,它把演示文稿的创建、结构化编辑、文本样式、表格操作、模板批处理、导出与内省全部收敛为一条条可在终端直接执行、可进脚本的 CLI 命令。读完本文,你将掌握gog slides全部 30 个核心子命令的用法、全局 flag 的作用边界,以及如何借助--dry-run --json、修订号保护和原子批量更新,安全地把幻灯片制作流程改造成可复现的自动化管线。
命令概览:一个命令组,一个完整的 Slides 控制面
gog slides在 internal/cmd/slides.go 中注册,父命令用法为:
gog slides (slide) <command> [flags]其底层通过 internal/googleapi/slides.go 的NewSlides创建google.golang.org/api/slides/v1服务,配合 Drive 服务完成模板复制、图片上传等跨服务操作。也就是说,gog slides并非对 API 的简单转发,而是把"读—算—写"三步(先Presentations.Get读取当前结构,再本地计算精确的BatchUpdatePresentationRequest,最后带修订号保护写入)封装成一条命令。
全部子命令可分为六类:
| 分类 | 子命令 |
|---|---|
| 生命周期 | create、copy、create-from-template、create-from-markdown、export、info |
| 幻灯片结构 | new-slide、add-slide、delete-slide、duplicate-slide、move-slide、skip-slide、unskip-slide、list-slides |
| 文本编辑 | insert-text、replace-text、style-text、link、bullets、paragraph-style、update-notes、locate |
| 页面元素 | element、insert-image、replace-slide、insert-text |
| 原生表格 | table |
| 读取与导出 | read-slide、thumbnail、raw |
以下逐节展开(完整子命令清单见 docs/commands/gog-slides.md,父命令参考 gog,命令总索引见 Command index)。
全局 Flags:所有 Slides 命令共用的控制开关
gog slides的每条子命令都继承以下全局 flag(与 gogcli 其他命令组一致):
| Flag | 类型 | 默认值 | 说明 |
|---|---|---|---|
--access-token | string | 直接使用传入的 access token(绕过已存储的 refresh token;token 约 1 小时过期) | |
-a--account--acct | string | 指定账户邮箱、别名或auto,用于已认证的 Google API 命令 | |
--client | string | OAuth 客户端名称(选择已存储的凭据和 token 桶) | |
--color | string | auto | 颜色输出:auto\|always\|never |
--disable-commands | string | 逗号分隔的禁用命令列表,支持点路径 | |
-n--dry-run--dryrun--noop--preview | bool | 不执行变更,仅打印预期动作并成功退出 | |
--enable-commands | string | 逗号分隔的启用命令前缀列表,支持点路径(限制 CLI 能力) | |
--enable-commands-exact | string | 逗号分隔的精确启用命令列表;父命令不自动启用子命令 | |
-y--force--assume-yes--yes | bool | 跳过破坏性命令的二次确认 | |
--gmail-no-send | bool | false | 阻止 Gmail 发送操作(Agent 安全) |
-h--help | kong.helpFlag | 显示上下文相关的帮助 | |
--home | string | 覆盖 gogcli 的 config/data/state/cache 根目录(等价于GOG_HOME) | |
-j--json--machine | bool | false | 向 stdout 输出 JSON(最适合脚本) |
--no-input--non-interactive--noninteractive | bool | 永不提示,失败则直接报错(适合 CI) | |
-p--plain--tsv | bool | false | 向 stdout 输出稳定可解析的纯文本(TSV,无颜色) |
--quota-project | string | 用于 API 计费的 Google Cloud 项目(作为X-Goog-User-Project发送;部分 API 配合--access-token或 ADC 需要) | |
--readonly | bool | false | 运行时阻止所有变更类 API 请求;auth add也会申请只读 OAuth scope |
--results-only | bool | JSON 模式下只输出主结果(丢弃nextPageToken等信封字段) | |
--select--pick--project | string | JSON 模式下按逗号分隔选择字段(尽力而为,支持点路径;大多数命令推荐用--fields) | |
-v--verbose | bool | 启用详细日志 | |
--version | kong.VersionFlag | 打印版本并退出 | |
--wrap-untrusted | bool | false | JSON/raw 输出中,把抓取的外部文本字段包进不可信内容标记 |
使用建议:
- 脚本自动化优先组合
--json(结构化输出)与--dry-run(先验证请求),尤其是配合--no-input在 CI 中避免交互卡死; - 只读巡检加上
--readonly,运行时直接拦截所有变更请求,是审计与安全审查场景的保险闸; - 每条修改类命令都支持
--dry-run --json打印即将提交的完整batchUpdate请求,且不需要认证即可预览(源码中如 slides_structural.go 在requireAccount之前先调用dryRunExit)。
演示文稿生命周期:创建、复制、导出与元数据
创建空白演示文稿或从模板复制
gog slides create "Q3 Planning" # 创建空白演示文稿 gog slides create "Q3 Planning" --parent <folderId> # 指定目标文件夹 gog slides create "Q3 Planning" --template <templateId> # 从模板复制从源码看(slides.go),create走 DriveFiles.Create(mime 为application/vnd.google-apps.presentation)或Files.Copy,并输出id、name、mime、link四列;JSON 模式下输出整个file对象。
复制与导出
gog slides copy <presentationId> "New Title" # 复制并重命名 gog slides copy <presentationId> "New Title" --parent <folderId> gog slides export <presentationId> --format pdf --out deck.pdf # 导出 PDF gog slides export <presentationId> --format pptx --out deck.pptx # 导出 PPTX(默认)export的格式限定为pdf|pptx,默认pptx,通过 Drive export 通道实现(exportViaDrive,见 slides.go)。--overwrite允许覆盖已存在的输出文件。
元数据内省
gog slides info <presentationId> --jsonslides info把 Drive 文件元数据与 Slides 原生元数据合并输出,presentation对象中包含幻灯片数量、以点为单位的页面尺寸、locale、母版及主题色、以及全部布局(layout)——这是后续用--layout-id精确建页的前提。
幻灯片结构操作:建页、复制、排序、跳过与删除
新建原生幻灯片(new-slide)
new-slide直接创建"原生、可编辑"的幻灯片(而非渲染图片),默认创建BLANK空白页:
gog slides new-slide <presentationId> gog slides new-slide <presentationId> --layout TITLE_AND_BODY --index 1--layout接受 Slides 预定义布局枚举:BLANK、CAPTION_ONLY、TITLE、TITLE_AND_BODY、TITLE_AND_TWO_COLUMNS、TITLE_ONLY、SECTION_HEADER、SECTION_TITLE_AND_DESCRIPTION、ONE_COLUMN_TEXT、MAIN_POINT、BIG_NUMBER(枚举定义见 slides_structural.go);- 需要注意:演示文稿主题可能移除或修改预定义布局,选中当前 master 不存在的布局时 Google 会返回错误;
- 要精确使用主题布局,先用
slides info --json读出布局 object ID,再--layout-id <layoutId>;--layout与--layout-id互斥; --index是零基插入位置,省略则追加到末尾。
整页图片幻灯片(add-slide)
gog slides add-slide <presentationId> <local-image.png> \ --notes "speaker notes" \ --notes-file notes.txt \ --before <slideId>源码实现(slides_add_slide.go)展示了完整的实现链路:
- 校验图片格式(PNG/JPG/GIF,按扩展名映射 MIME);
- 把本地图片上传到 Drive 作为临时文件,并授予
anyone:reader公开读权限(Slides API 需要可公开访问的 URL),命令结束后defer删除该临时文件; - 读取演示文稿得到页面宽高,在单个批量更新中同时执行
CreateSlide(BLANK布局 + 可选的InsertionIndex)和CreateImage(尺寸铺满整页,全出血图片); - 若提供备注,回读新幻灯片的 notes page,找到 BODY 占位符后
InsertText写入演讲者备注。
复制与移动
gog slides list-slides <presentationId> --json # 先拿到稳定的 slideId gog slides duplicate-slide <presentationId> <slideId> gog slides duplicate-slide <presentationId> <slideId> --to-index 2 gog slides move-slide <presentationId> <slideId> --to-index 0- 不带
--to-index时,复制页紧跟在源页之后;带--to-index时,复制与定位在同一个批量更新中完成(DuplicateObject+UpdateSlidesPosition,见 slides_structural.go); - 移动索引为零基,且指代的是移动前的演示文稿顺序,与 Slides API 语义一致;取值范围 0 到幻灯片总数;
- 新生成的页面 object ID 由
gogSlide/gogDup前缀加纳秒时间戳组成,保证脚本引用确定性。
跳过与取消跳过
gog slides skip-slide <presentationId> <slideId> # 别名 hide-slide gog slides unskip-slide <presentationId> <slideId> # 别名 unhide-slide跳过的幻灯片仍保留在文稿中、可继续编辑,只是播放时不展示;slides list-slides会为每页报告跳过状态,JSON 输出使用isSkipped字段。
删除
gog slides delete-slide <presentationId> <slideId>删除属于破坏性操作,交互式场景需要确认,CI 中可配合--force。
文本内容编辑:定位、插入、替换与样式
Slides 的文本范围使用UTF-16 code-unit 索引,因此动稿前务必先精确定位元素 ID 与范围:
gog slides locate <presentationId> "Quarterly revenue" --all --json gog slides read-slide <presentationId> <slideId> --detail --json插入文本(insert-text)
gog slides insert-text <presentationId> <objectId> "New text" --insertion-index 0 gog slides insert-text <presentationId> <objectId> "Replacement" --replace--replace的实现是"先删后插":删除旧文本后在同一位置插入新文本,使新文本继承原段落可见文本的样式(含模板继承),见 docs/slides-text-editing.md。命令会先读取目标、钉住其修订号再原子提交;删除偏移量在剔除 Google 剥离的控制字符/私用区字符后按 UTF-16 计算。
查找替换(replace-text)
replace-text必须显式声明作用域,无作用域形式会被拒绝:
# 单个 shape:先读文稿,用修订号保护 + 精确范围,逐个删除再插入 gog slides replace-text <presentationId> old new --object <objectId> # 一页或多页 gog slides replace-text <presentationId> old new --page <slideId> # 显式全稿替换 gog slides replace-text <presentationId> old new --all--object、--page、--all三者互斥。从 slides_replace_text.go 可以看到校验逻辑:--object与--page/--all互斥、--page与--all互斥、三者皆缺时报错要求显式作用域。object 作用域下,命令会用locateSlidesText找出所有匹配,从后往前逐个生成DeleteText+InsertText请求(保证索引不漂移),并带上WriteControl.RequiredRevisionId防并发覆盖。成功输出形如ok | revisionId=... | replaced=N。另外注意:文本替换不会编辑 WordArt 文本。
文本样式、链接与项目符号
style-text、link、bullets都针对单个 shape 对象 + 固定 UTF-16 范围:
gog slides style-text <presentationId> <objectId> --range 4:21 \ --bold --font Georgia --size 24 --text-color '#3366CC' gog slides style-text <presentationId> <objectId> --range 4:21 --no-bold gog slides link <presentationId> <objectId> --range 4:21 \ --url https://example.com/details gog slides link <presentationId> <objectId> --range 4:21 --clear gog slides bullets <presentationId> <objectId> --range 0:42 --on \ --preset BULLET_DISC_CIRCLE_SQUARE gog slides bullets <presentationId> <objectId> --range 0:42 --off- 样式支持
--bold/--no-bold、--italic/--no-italic、--underline/--no-underline(成对互斥,no-形式会强制发送字段以清除继承值)、--text-color #RRGGBB|#RGB、--size(点)、--font; link要求--url与--clear恰好二选一;bullets要求--on/--off恰好二选一,--on时可用--preset指定 bullet 预设,默认BULLET_DISC_CIRCLE_SQUARE;- 所有文本编辑都走
runSlidesTextBatch(见 slides_text_edit.go),统一支持--dry-run --json预览精确请求、成功后输出revisionId。
段落样式(paragraph-style)
格式化单个 shape 内的所有段落,或与可选 UTF-16 范围相交的段落;也支持单个表格单元格:
gog slides paragraph-style <presentationId> <objectId> --align START --line-spacing 120 gog slides paragraph-style <presentationId> <objectId> --range 0:20 --space-above 0 --space-below 8 gog slides paragraph-style <presentationId> <objectId> --indent-start 18 --indent-first-line 0 gog slides paragraph-style <presentationId> <tableId> --row 0 --col 1 --align CENTER间距与缩进单位是点,行距是百分比(100 为正常)。只修改显式提供的字段,包括显式的 0 值。方向可用--direction LEFT_TO_RIGHT或RIGHT_TO_LEFT。表格单元格会先对照当前演示文稿校验,再带修订保护写入。
演讲者备注(update-notes)
gog slides update-notes <presentationId> <slideId> --notes "备讲词" # 或 --notes-file原生表格:创建、填字、结构变更与样式
创建表格
gog slides table create <presentationId> <slideId> --rows 3 --cols 4命令输出表格 object ID;需要稳定 ID 时用--object-id指定,便于后续脚本直接引用而无需解析响应。从 slides_table.go 可以看出一个值得注意的设计:Slides API 在创建表格时忽略 size 和 transform 字段(大小与位置由 Google 自行决定),因此该命令不暴露几何参数,避免给出提供方不兑现的结果。
单元格文本
gog slides insert-text <presentationId> <tableId> "Revenue" --row 0 --col 0 gog slides insert-text <presentationId> <tableId> '$1.2M' --row 1 --col 0 --replace--row与--col必须同时给出(零基)。--replace在单个批量更新内清空并写入目标单元格,不影响其他单元格;不带--replace追加/插入时可用--insertion-index指定单元格内偏移。
行列与合并
gog slides table row insert <presentationId> <tableId> --row 1 --below --count 2 gog slides table row delete <presentationId> <tableId> --row 3 --force gog slides table column insert <presentationId> <tableId> --col 0 --right gog slides table column delete <presentationId> <tableId> --col 2 --force gog slides table merge <presentationId> <tableId> --row 0 --col 0 --row-span 1 --col-span 3 gog slides table unmerge <presentationId> <tableId> --row 0 --col 0 --row-span 1 --col-span 3- 插入每次 1–20 行/列,默认插在参考单元格上方/左侧,可用
--below/--right反向; - 删除行/列必须
--force;锚点落在合并单元格内时会删除其跨越的所有行/列;删除最后一行/列会删除整张表; - 行高是最小值(内容可能撑高),列宽最小 32 点(提供方下限);
- 结构变更命令都会先抓取提供方当前尺寸、拒绝越界、并基于抓取到的修订号提交写入。
单元格样式与边框
gog slides table cell style <presentationId> <tableId> --row 0 --col 0 \ --fill-color '#3367d6' --content-align MIDDLE \ --bold --text-color '#ffffff' --size 18 --font Cambria gog slides table border style <presentationId> <tableId> \ --row 0 --col 0 --row-span 1 --col-span 3 --position OUTER \ --border-color '#ea4335' --weight 2 --dash DASH--content-align取TOP/MIDDLE/BOTTOM;文本样式默认作用于整格,可用--range start:end限定 UTF-16 范围(只影响文本,填充与对齐仍作用于整格);--fill-color与--fill-transparent互斥;--position取ALL/OUTER/INNER/TOP/BOTTOM/LEFT/RIGHT/INNER_HORIZONTAL/INNER_VERTICAL;虚线样式有SOLID/DOT/DASH/DASH_DOT/LONG_DASH/LONG_DASH_DOT;边框粗细必须大于 0;--border-color与--transparent互斥。
页面元素操作:原生 shape、线条、变换与分组
slides element子命令族提供"创建与操作原生页面元素"的完整能力,详细用法见 docs/slides-structure.md。
创建 shape 与线条
gog slides element create-shape <presentationId> <slideId> \ --type ROUND_RECTANGLE --x 24 --y 24 --width 180 --height 80 gog slides element create-line <presentationId> <slideId> \ --category STRAIGHT --x 50 --y 150 --width 240 --height 40几何默认以点为单位,可--unit EMU换用英制计量单位。提供--object-id让后续脚本化变更具备确定性;自定义 object ID 需符合 Slides API 5–50 字符的格式要求。
仿射变换
gog slides element transform <presentationId> <objectId> \ --translate-x 12 --translate-y 6 gog slides element transform <presentationId> <objectId> \ --scale-x 1.25 --scale-y 1.25 gog slides element transform <presentationId> <objectId> --rotate 15变换默认是相对模式;--apply-mode ABSOLUTE替换现有变换。旋转围绕元素原点,且同一请求中不能与显式 scale/shear 混用。
样式、层级、分组、alt 文本与删除
gog slides element style <presentationId> <shapeId> \ --fill-color '#3367d6' --outline-color '#ffffff' --outline-weight 2 gog slides element style <presentationId> <lineId> --kind line \ --outline-color '#ea4335' --outline-dash DASH gog slides element z-order <presentationId> <objectId>... --operation BRING_TO_FRONT gog slides element group <presentationId> <objectId> <objectId>... --group-id <groupId> gog slides element ungroup <presentationId> <groupId>... gog slides element alt-text <presentationId> <objectId> \ --title "Chart" --description "Quarterly revenue by region" gog slides element delete <presentationId> <objectId> --force- 颜色接受
#RGB或#RRGGBB;--fill-transparent/--outline-transparent关闭该属性的渲染; z-order的目标必须位于同一页且未被分组;group至少需要两个未分组元素,且 Slides 不允许所有元素类型被分组;- 传空
--title=或--description=会清空对应 alt 文本字段; - 元素删除是破坏性操作,交互需要确认,非交互需
--force;多个删除目标会合并在一个原子 API 批量中提交,重复 ID 在提交前即被拒绝;单目标输出保留objectId字段,多目标改为输出objectIds。
模板批量替换:create-from-template 实战
create-from-template是面向"模板+数据=成稿"场景的自动化利器,详见 docs/slides-template-replacement.md。流程是:先复制模板 → 校验 MIME 为演示文稿 → 在单个BatchUpdate里对全部占位符执行ReplaceAllText(大小写敏感)。
占位符格式
默认查找{{key}}形式:模板中写{{name}}、{{date}}、{{company}},命令会为 key 自动补{{}}(若 key 已含{{}}则不重复包裹);--exact则按原始字符串精确匹配,适合未采用{{}}约定的模板。源码见 slides_create_from_template.go。
两种替换来源
# 少量替换用 flag gog slides create-from-template 1abc123 "Q1 Report" \ --replace "quarter=Q1 2026" \ --replace "revenue=$1.2M" \ --replace "growth=15%" # 大量替换用 JSON 文件 gog slides create-from-template 1abc123 "Monthly Report" \ --replacements replacements.jsonJSON 文件中非字符串值自动转换:数字125→"125"、布尔true→"true"、null→""、复杂类型 JSON 编码。两种来源可混用,--replaceflag 覆盖文件值。
输出与统计
gog slides create-from-template 1abc123 "Report" --replace "name=John" --json文本输出会打印新演示文稿id/name/link,以及每个 key 的替换统计(N occurrences或not found);JSON 输出则包含presentationId、name、link与replacements统计映射。替换统计直接来自 API 响应的OccurrencesChanged(见 slides_create_from_template.go)。
批量生成脚本
#!/bin/bash TEMPLATE_ID="1abc123def456" while IFS=, read -r name title date sales; do gog slides create-from-template "$TEMPLATE_ID" "Report - $name" \ --replace "name=$name" \ --replace "title=$title" \ --replace "date=$date" \ --replace "sales=$sales" \ --json > "output-$name.json" done < employees.csv常见排障
- 0 occurrences:检查占位符是否真实存在于模板、命名拼写(默认大小写敏感)、
{{}}包裹是否正确(或改用--exact); - 权限被拒:确认对模板有编辑权、OAuth client 已启用 Slides API;
- 模板复制失败:核对模板 ID、账户可访问性、且对象确为演示文稿(非文档/表格)。
Markdown 一键成稿:create-from-markdown
gog slides create-from-markdown <title> --content-file deck.md接受 vanilla markdown 与 slidey 风格 markdown,语法约定完整记录在 docs/slides-markdown.md。核心能力:
- 每页 frontmatter:
layout取title/hero/statement/center/default/two-cols/three-cols,未知值回退到default;裸---行作为幻灯片分隔符; - 演讲者备注:正文末尾的
## Notes(或### Notes)段落转为该页备注,其中 FA 图标短代码会被剥成纯文本;--no-notes丢弃而非插入; - Font Awesome 图标:
:fa-name:/:fas-name:等短代码从cdn.jsdelivr.net拉取 FA Free SVG,本地经rsvg-convert或 ImageMagick 栅格化为 PNG 插入;无栅格化工具则跳过并告警,--strict使其致命。前缀到样式的映射:fa-→--fa-style(默认solid)、fas-→solid、far-→regular、fab-→brands、fal-/fad-→solid(FA Free 无 light/duotone)。图标放在列表项开头时渲染为文本左侧的小内联图,段落中间的被丢弃; - Mermaid 图:
mermaid围栏代码块经本地mmdc二进制渲染为 PNG 全宽插入(可用--mmdc指定路径,空值关闭渲染);缺 mmdc 时跳过并告警,--strict致命; - 多栏布局:
::cols::/::col2::/::col3::/::/cols::定义分栏,::right::是::col2::的同义词;在two-cols/three-cols布局下无需开头的::cols::; ::boxes::与::arrows:::渲染为正文列表,boxes 用 bullet 符号,arrows 用→。
资源管线实现见 slides_assets.go:默认 30 秒 HTTP 超时、mmdc走 PATH、非 strict、不保留临时图;所有图标/图示去重后统一上传 Drive(授予公开读权限),结束默认清理,--keep-temp-images可保留。命令还支持--debug、--fa-style、--strict等 flag,输出新建演示文稿 ID、名称与链接,--json模式返回完整presentation与file对象。
读取与内省:read-slide、locate、raw、thumbnail
结构化编辑要求"先内省、后落笔",四类读取命令覆盖不同粒度(详见 docs/slides-introspection.md):
- read-slide:默认输出 shape 文本、表格单元格文本、图片
contentUrl/sourceUrl与演讲者备注;--detail --json输出按视觉层级顺序扁平化的元素,组内子元素带parentObjectId,geometry是应用组与元素变换后的轴对齐包围盒(点),文本 run 保留 UTF-16startIndex/endIndex、样式、链接、段落样式与 bullet 元数据,前景/背景色规范为#RRGGBB或theme:NAME(见 slides_read_slide.go); - locate:只读搜索 shape 与表格单元格文本,返回页/元素 object ID 与精确 UTF-16 范围(表格匹配还带零基行列);默认只返回首个匹配,
--all或--occurrence N选择结果,--fail-empty供要求必须匹配的自动化使用; - raw:直接输出
Presentations.Get的完整 JSON(Slides API 无字段掩码,输出无损),--pretty美化。适合脚本与 LLM 消费,注意响应中可能含短期有效的图片/视频 URL(风险评估见 docs/raw-audit.md); - thumbnail:获取或下载渲染缩略图:
gog slides thumbnail <presentationId> <slideId> \ --size large --format png --out thumb.png --overwrite--size取small|medium|large(默认 large),--format取png|jpeg(默认 png);--out写入本地文件(权限 0600/0700),输出含contentUrl、宽高、字节数。
安全落盘:dry-run 预览、修订保护与只读约束
贯穿全部修改命令的三重安全机制:
--dry-run --json:每条变更命令在触达 Google 之前就打印出将要提交的精确batchUpdate请求,且不需要认证(源码在requireAccount之前调用dryRunExit),非常适合先验证再执行;- 修订号保护:涉及读改写流程的命令(如 object 作用域的
replace-text、表格结构变更、add-slide备注写入)会先用Presentations.Get抓取RevisionId,写入时通过WriteControl.RequiredRevisionId绑定,防止并发编辑导致覆盖,成功输出携带revisionId; --readonly:运行时拦截所有变更请求,配合--access-token/ADC 与--quota-project可在受限环境做只读巡检。
小结
gog slides的设计哲学可以概括为"结构化、可预览、可脚本":所有修改都收敛为显式作用域的批量请求,任何操作都能先用--dry-run --json无认证预览,写入全部带修订保护,输出既有--json机器可读也有 TSV 人类可读。从create-from-markdown的文档驱动成稿,到create-from-template的数据驱动批产,再到read-slide/locate/raw的精确内省,一条完整的"内省—编辑—验证"闭环让 Google Slides 真正具备了终端控场能力。建议从gog slides info --json与read-slide --detail --json起步熟悉对象模型,再逐步接入模板与批量脚本。
【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考