ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

gogcli 实战指南:使用 `gog slides create-from-markdown` 将 Markdown 一键转化为 Google Slides 演示文稿

2026/9/18 0:19:46 拓冰建站 浏览量
gogcli 实战指南:使用 `gog slides create-from-markdown` 将 Markdown 一键转化为 Google Slides 演示文稿 gogcli 实战指南使用gog slides create-from-markdown将 Markdown 一键转化为 Google Slides 演示文稿【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli导读gog slides create-from-markdown是 gogcliGoogle Workspace in your terminal面向 Google Slides 的命令之一它允许开发者用纯文本 Markdown 描述整份演示文稿的幻灯片结构、标题、正文、演讲者备注甚至 Font Awesome 图标与 Mermaid 图表再通过一次 CLI 调用在 Google 云端生成可编辑的 Slides 演示文稿。读完本文你将掌握该命令的完整参数用法、slidey 风格 Markdown 语法规范以及其背后的解析器与资源渲染管线实现原理。命令概览该命令的定位是从 Markdown 创建 Google Slides 演示文稿Create a Google Slides presentation from markdown。在命令树中它归属于gog slides别名slide子命令组父命令说明见 gog slides。基本用法gog slides (slide) create-from-markdown title [flags]title必填的位置参数即新演示文稿的标题Markdown 正文通过--content内联字符串或--content-file文件路径二选一传入。快速上手第一次把 Markdown 变成幻灯片方式一内联内容适合脚本与快速测试把 Markdown 直接放在命令行里gog slides create-from-markdown My Deck \ --content # Hello - first bullet - second bullet方式二从文件读取适合正式写作把内容保存为deck.mdgog slides create-from-markdown Q3 产品发布 \ --content-file ./deck.md \ --parent 1AbCdEfGhIjKlMnOpQrStUv--parent指定 Drive 目标文件夹 ID不传则落到我的云端硬盘根目录。命令成功后的标准输出非 JSON 模式形如Created presentation with 12 slides id 1AbCdEfGhIjKlMnOpQrStUvWxYz name Q3 产品发布 link https://docs.google.com/presentation/d/...从源码看该命令的入口定义在 internal/cmd/slides.goSlidesCreateFromMarkdownCmd会先校验标题非空再按--content-file/--content的优先级读取 Markdown随后交给internal/slidesmarkdown包解析最终调用CreatePresentationFromMarkdownV2完成建片与资源注入。若两者都未提供会直接报错either --content or --content-file is required。完整 Flags 参考下表为gog slides create-from-markdown支持的全部参数继承自命令文档 gog-slides-create-from-markdown.mdFlag类型默认值说明--access-tokenstring直接使用给定的访问令牌绕过已存储的 refresh token令牌约 1 小时过期-a--account--acctstring认证账户的邮箱、别名或 auto用于 Google API 命令--clientstringOAuth 客户端名称选择已存凭据与令牌桶--colorstringauto输出着色auto|always|never--contentstring内联 Markdown 内容--content-filestring从文件读取 Markdown 内容--debugbool显示调试输出--disable-commandsstring逗号分隔的禁用命令列表支持点路径-n--dry-run--dryrun--noop--previewbool不实际改动打印预期动作后成功退出--enable-commandsstring逗号分隔的启用命令前缀列表支持点路径限制 CLI--enable-commands-exactstring逗号分隔的精确启用命令列表点路径父命令不自动启用子命令--fa-stylestringsolid短代码无前缀时默认的 Font Awesome 样式-y--force--assume-yes--yesbool跳过破坏性命令的确认--gmail-no-sendboolfalse阻止 Gmail 发送操作Agent 安全用-h--helpkong.helpFlag显示上下文相关的帮助--homestring覆盖 gogcli 的 config/data/state/cache 根目录等价于 GOG_HOME-j--json--machineboolfalse向 stdout 输出 JSON适合脚本--keep-temp-imagesbool导入后不删除临时 Drive 上传文件--mmdcstringmmdcmermaid CLImmdc路径传空字符串禁用图表渲染--no-input--non-interactive--noninteractivebool永不提示否则失败适合 CI--no-notesbool丢弃## Notes段落而不是插入为演讲者备注--parentstring目标文件夹 ID-p--plain--tsvboolfalse向 stdout 输出稳定的、可解析的 TSV 文本无颜色--quota-projectstring用于 API 计费的 Google Cloud 项目作为 X-Goog-User-Project 发送部分 API 与 --access-token 或 ADC 一起使用时需要--readonlyboolfalse运行时阻止变更类 API 请求auth add 也会请求只读 OAuth scope--results-onlyboolJSON 模式下仅输出主结果丢弃 nextPageToken 等信封字段--select--pick--projectstringJSON 模式下选择逗号分隔的字段尽力而为支持点路径。更推荐使用 --fields--strictbool将跳过的 FA/图表资源视为致命错误-v--verbosebool开启详细日志--versionkong.VersionFlag打印版本并退出--wrap-untrustedboolfalseJSON/raw 输出中用外部不可信内容标记包裹抓取的文本字段核心参数深度解读以下参数与 markdown→Slides 的转换链路直接相关值得逐个理解其行为。--content与--content-file二选一的输入来源两者都用于提供 Markdown 正文--content-file优先级更高源码中case c.ContentFile ! 先于case c.Content ! 。文件按字节读取后原样交给解析器解析器内部会先把 CRLF 统一规范化为 LF因此无论你在 Windows 还是 macOS/Linux 上撰写文档结果一致。--fa-styleFont Awesome 默认样式默认solid。当 markdown 中的图标短代码不带前缀时使用该样式。取值与行为详见下文Font Awesome 图标一节。--mmdcMermaid CLI 路径默认mmdc即依赖 PATH 中的可执行文件。传空字符串可彻底禁用图表渲染相关代码块会被跳过。mermaid 渲染命令实际执行mmdc -i in.mmd -o out.png -b transparent --scale 2即透明背景、2 倍缩放输出 PNG见 internal/cmd/slides_assets.go。--strict把资源缺失升级为错误默认false。默认行为下若某个 FA 图标因缺少本地 SVG 光栅化工具rsvg-convert/ ImageMagick 的magick/convert或某个 mermaid 图因缺少 mmdc 而被跳过命令只是打印警告后继续开启--strict后任何被跳过的资源都会导致命令失败退出适合 CI 场景保证成品完整性。--keep-temp-images控制临时资源留存图标与图表在导入前会被上传到 Drive 作为临时文件渲染成 PNG 后再以图片形式插入幻灯片。默认结束后清理这些临时上传开启本参数后保留便于人工复核或复用。--no-notes演讲者备注的开关默认情况下markdown 中每个 slide 末尾的## Notes或### Notes小节会被解析为演讲者备注并写入幻灯片开启后该小节直接被丢弃。--debug查看解析结果开启后会在 stderr 打印parsed N slides用于快速确认解析器把整份文档切成了几张幻灯片是排查为什么少了一张/多了一张的第一抓手。--dry-run安全预览所有 gogcli 命令都支持--dry-run。对 create-from-markdown 而言它不会调用任何 Google API而是打印预期动作包括幻灯片数量、目标文件夹与batch_update预览由buildSlideyDryRunBatchUpdate生成并在打印后成功退出。这是把解析器接入 CI 校验的好方法gog slides create-from-markdown Preview \ --content-file ./deck.md --dry-run--json输出-j/--json模式下命令会额外抓取Presentations.Get的完整结构并连同 Drive 文件元数据一起输出为 JSON顶层含presentation与file两个字段适合下游脚本与 LLM 消费。slidey 风格 Markdown 语法规范该命令同时接受普通 Markdown与带 gogcli 方言扩展的 slidey-flavored Markdown。完整语法说明参见 docs/slides-markdown.md以下为关键约定。幻灯片分隔一个裸的---行就是幻灯片分隔符——除非它开启了一段连续的 YAML frontmatter特征紧跟的若干行都是key: value形式的键值行且在出现空白行或正文行之前有收尾的---。对应实现见 internal/slidesmarkdown/frontmatter.go解析器逐行扫描---后面第一行若匹配 YAML 键正则^[A-Za-z_][A-Za-z0-9_-]*:\s才被当作 frontmatter 候选若打开后遇到空白行或非键值行则放弃候选仍把该---当分隔符处理。代码块内部的---由围栏状态机保护不会被误判为分隔符。每页 frontmatter每张幻灯片可以以 YAML frontmatter 开头识别的键如下键取值行为layouttitle、hero、statement、center、default、two-cols、three-cols决定该页的视觉处理方式未知取值回退到defaultcontentwide、narrow已解析但尚未生效Slides 文本框宽度固定示例--- layout: hero --- # univrs Unfolding Nested Intent · Valid · Reliable · Safe从 AST 定义internal/slidesmarkdown/ast.go可以看到SlideFrontmatter还保留了Raw map[string]string用于向前兼容未知键。layout不仅决定视觉处理还影响标题提取行为title、hero、statement三种布局下解析器不会把首个 H1 提升为幻灯片标题layoutSkipsTitleHoist逻辑见 internal/slidesmarkdown/markdown.go其余布局则会把第一个 H1没有 H1 时回退到第一个 H2提取为幻灯片标题并从正文中移除。演讲者备注幻灯片末尾的## Notes或### Notes小节会整体成为该页的演讲者备注标题及其后的所有内容从正文中剥离备注内的 FA 图标短代码会被剥离为纯文本注意## Notes大小写敏感且解析时会跳过代码围栏内的同名标题。见 internal/slidesmarkdown/markdown.go。## Topic body ## Notes - speaker hint one - speaker hint twoFont Awesome 图标行内短代码:fa-name:、:fas-name:、:far-name:、:fab-name:、:fal-name:、:fad-name:会被解析为 FA Free 图标先从cdn.jsdelivr.net拉取对应 SVG再交给本地光栅化器rsvg-convert或 ImageMagick转成 PNG 后作为图片插入。若本地没有可用的 SVG 光栅化器图标会被跳过并给出警告--strict会让这种情况变成致命错误。图标放置在列表项开头时会渲染为项目符号左侧的小型内联图片出现在段落中间时会被丢弃。样式推导规则前缀解析结果样式fa---fa-style默认solidfas-solidfar-regularfab-brandsfal-、fad-solidFA Free 没有 light/duotone底层实现SVG 下载地址形如https://cdn.jsdelivr.net/npm/fortawesome/fontawesome-free6/svgs/{style}/{name}.svg见 internal/cmd/slides_assets.go光栅化时rsvg-convert使用-w 128 -h 128ImageMagick 使用-resize 128x128 -background noneinternal/cmd/slides_assets.go。Mermaid 图表标记为mermaid的围栏代码块会通过本机mmdc二进制渲染为 PNG并作为全宽图片插入。--mmdc可指定路径、空串可禁用mmdc缺失时图表被跳过并警告--strict使其致命。![mermaid](https://web-api.gitcode.com/mermaid/svg/eNpLL0osyFAIceFSAALH6OCSxKKSWAVdXTsFp2qX1OTMlNRasJQTSKwmMrW4RsE52j0_FknQL79GwQWoM78gFgBivBYl)若 mmdc 执行失败错误信息会带上 stderr 输出如 puppeteer 的 chromium 下载失败或 mermaid 语法错误而不是只给一个退出码便于直接定位原因internal/cmd/slides_assets.go。多列布局::cols:: left column markdown ::col2:: middle / right column markdown ::col3:: third column markdown ::/cols::::right::是::col2::的同义写法slidey 风格在layout: two-cols和layout: three-cols的幻灯片中可以省略开头的::cols::直接使用::col2::、::col3::、::right::标题之后的内容自动成为第一列该简写列能力由normalizeShorthandColumns实现检测到布局与简写标记且无显式::cols::时解析器会把标题后的内容包进列块internal/slidesmarkdown/markdown.go。::boxes::与::arrows::::boxes:: :fa-rectangle-ad: Campaigns :fa-headset: Support Tickets ::/boxes:: ::arrows:: ### Step One ### Step Two ::/arrows::两者都渲染为正文中的列表boxes使用项目符号arrows使用→连接。底层实现从 Markdown 到演示文稿的流水线整条链路可以拆成三个阶段对应源码位置如下解析Parsinginternal/slidesmarkdown包的Parse()先把整份文档按裸---切成slideBlock每块 frontmatter body再对每块做备注剥离、简写列归一化、块级/行内解析产出[]SlideAST。Slide结构包含Frontmatter、Title提升出的标题、Body有序顶层块、Notes已剥离 FA 短代码的备注文本见 internal/slidesmarkdown/ast.go。AST 的块类型覆盖段落、有序/无序列表含两级缩进、代码块、标题、多列块、图标行块、mermaid 图块internal/slidesmarkdown/ast.go。资源管线Asset Pipelineinternal/cmd/slides_assets.go负责把 AST 中的IconRef与DiagramBlock解析为实际图片下载/渲染 → 上传 Drive → 得到ImageRefDriveFileID PublicURL汇聚为AssetMap。默认 HTTP 客户端 30 秒超时--strict、--keep-temp-images、--fa-style均在此注入DefaultAssetPipelineConfiginternal/cmd/slides_assets.go。建片与写回CreatePresentationFromMarkdownV2创建 Drive 上的演示文稿并通过 Slides API 的 batchUpdate 批量建片、写入文本、插入图片与备注。命令层会同时持有 Slides 与 Drive 两个服务slidesServicedriveService见 internal/cmd/slides.go。整个解析器都有配套单元测试internal/slidesmarkdown 目录下的*_test.go覆盖分隔符、frontmatter、块解析、行内解析等资源管线也有slides_assets_test.go佐证行为可作为行为规范的参考。一份完整的实战示例把下面内容保存为pitch.md--- layout: hero --- # univrs Unfolding Nested Intent · Valid · Reliable · Safe --- ## 市场机会 :fa-chart-line: 千亿级蓝海市场 :fa-users: 3 亿潜在用户 ## Notes - 强调市场规模增速 - 引用第三方行业报告 --- layout: two-cols --- ## 产品架构 ::col2:: :fa-server: 核心引擎 :fa-shield-halved: 企业级安全运行gog slides create-from-markdown univrs 融资路演 \ --content-file ./pitch.md \ --fa-style solid \ --strict \ --debug--debug输出parsed 3 slides与文档中 3 个---分隔出的 3 页一致--strict保证三个 FA 图标只要有一个无法渲染就整体失败避免出现缺失图标的成品若机器上安装了mmdc可再加入 mermaid 代码块自动生成架构图。常见问题与最佳实践no slides found in markdown解析结果为空即报此错。检查文档是否只有空白或---是否全部被误判为 frontmatter打开后没有键值行或没有闭合的---。图标被跳过确认本地存在rsvg-convert、magick或convert三者之一且能访问cdn.jsdelivr.net。CI 里建议先探测工具链并用--strict兜底。图表没出来确认mmdc在 PATH或--mmdc指向绝对路径并留意 mmdc 失败时带出的 stderr 提示多为 puppeteer chromium 未安装或 mermaid 语法错误。多列布局不生效简写列只对layout: two-cols/three-cols生效且同页存在显式::cols::时简写被忽略无标题页如hero不适合依赖标题后的自动分列。CI 集成建议先跑--dry-run校验解析与资源状态再执行真实创建输出用-j --results-only获取干净的 JSON 结果。相关命令与文档父命令gog slides同组命令包括gog slides create空白建片、gog slides create-from-template模板文本替换建片、gog slides export导出 pdf/pptx、gog slides list-slides列出对象 ID等Markdown 语法完整规范docs/slides-markdown.md命令索引docs/commands/README.md相关实现internal/cmd/slides.go、internal/slidesmarkdown、internal/cmd/slides_assets.go。借助该命令一份结构化的 Markdown 文档即可成为版本可控、可评审、可复用模板的演示文稿生产链路非常适合与文档仓库、CI 流程和 LLM 生成管线集成。【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考