← 返回 Skill 列表
extension
分类: 开发与工程API Key 暂未确认

GitHub to Gallery

通过 GitHub Actions 构建、上传草稿并发布到已有 ModelScope Gallery,附可复用工作流、配置和同步脚本。

person作者: VoyagerXhubOpenAPI

GitHub → Gallery

以 GitHub 默认分支作为内容来源,向同一个 Gallery 上传草稿并发布。不要每次提交都创建新 Gallery。优先复用已有发布配置,先检查仓库说明、分支、已有 Action 和 Gallery 元数据。

新用户与项目识别

先阅读 Gallery、账号与 token 入门。向不熟悉魔搭的用户简要解释 Gallery 是保留目录结构的多文件发布/预览空间,以及网页预览与 Notebook 运行的区别。复用会话已有信息,不要求用户懂平台术语。

先列出源 Notebook、图片、Python 模块、数据和现有 HTML;识别真实默认分支、课程阅读顺序及相对路径。不要假定目录名为 tutorials/course_content,不要假定存在 index.ipynb,不要把任何示例作者和 Gallery 当成默认目标。

接入流程

  1. 确定 GitHub 仓库、默认分支、Gallery 所有者、ID、类型、入口及公开状态。优先从当前会话和 API 读取;仅对确实缺失的信息询问用户。用户已经授权公开发布时直接执行。
  2. 阅读 接口与文件 URL。区分官方创建 OpenAPI 与网页草稿/发布 API;后者已经实际验证,但不承诺稳定。
  3. 从本 Skill 复制 scripts/sync_gallery.py 到项目同名路径;复制 assets/sync-gallery.yml 到 .github/workflows/sync-gallery.yml,复制依赖列表和示例配置到项目根目录。若已有同名文件,合并修改,保留用户逻辑。
  4. 将 gallery-sync.example.json 重命名为 gallery-sync.json,填写实际 owner、gallery_id、entry_file,调整 include/exclude、生成目录与预算。不要保留占位 ID。配置 category 和 private;入口使用仓库相对路径,不是完整 URL。网站入口例如 site/index.html。附带配置只是模板,必须按实际目录修改 include/exclude 和 generated_dirs,保留图片、模块及其他课程必需文件。
  5. 若需要 Notebook 前端,使用 $notebook-to-webpage 构建 HTML,再同步构建产物。工作流模板在存在根目录 build_html.py 时执行它;已有不同构建方式时替换此步骤。
  6. 在 GitHub Actions Secret 中保存 MODELSCOPE_API_TOKEN。使用已授权的 token,绝不写入源码、配置、日志或发布产物。模板不需要 GitHub PAT:checkout 用内置凭证,ModelScope 发布单独用 Secret。设 permissions: contents: read,不要在不可信 PR 上运行带密钥的发布。
  7. 运行 python scripts/sync_gallery.py --dry-run。检查文件清单、入口类别与后缀、大小和非空 Notebook;新源文件先 git add,生成目录内的新文件无需生成额外提交即可发布。dry-run 不联网,不能验证 Gallery ID 是否真实或 token 管理权限;这些在实际发布前读取 Gallery 验证。
  8. 在授权范围内提交、推送默认分支;观察 Action 直至结束。失败则查具体步骤,修复并重新执行。成功后读取 Gallery 元数据、公开状态和文件清单;重新获取下载链接,抽查发布内容,不能仅凭 Action 绿灯声称浏览器展示正常。

工作流行为

  • 使用 push + workflow_dispatch;模板动态读取仓库默认分支,仅该分支执行发布,重命名分支无需修改多个 main 常量。checkout 执行时最新默认分支,而非排队事件的旧提交。
  • 同一 Gallery 串行发布,cancel-in-progress: false;多个仓库写同一 Gallery 时需额外协调,GitHub 并发组不能跨仓库互斥。
  • 全量上传筛选文件,最多 6 个文件并发;签名地址分批申请并立即使用。OSS PUT 使用文件流,不发送 ModelScope token/cookie;失败时重新打开文件、刷新 URL 并有限重试。
  • 校验草稿大小,再比较 Gallery 指纹;若上传期间有人修改内容则中止。更新完整文件清单后发布,并读回确认。更新与发布不是事务,不承诺自动回滚。
  • 客户端默认 50 文件、单文件 5 MiB 预算是保守策略,不能据此声称网页更新 API 有相同官方上限。超预算先明确调整文件范围或确认平台能力,再修改配置,不能悄悄跳过课程。
  • 过滤运行产物、缓存、模型权重、环境和 slides 是否合适取决于项目;不要把 NVIDIA 课程的排除策略当成所有项目的固定规则。
  • Action 重建 HTML,但默认不回写 GitHub,避免生成提交循环。需要 GitHub 中保留预览时在本地构建并提交。

链接与验收

Gallery 已支持稳定文件页面 URL,包括嵌套目录: https://modelscope.cn/gallery/{owner}/{gallery-path}/files/{relative-path}。 例如 /files/chapters/02/lesson.ipynb 可查看和运行对应 Notebook。不要把临时 OSS 下载签名 URL 放进 HTML;它们会过期。路径逐段 URL 编码,保留 /。

检查公开 Gallery URL、入口、抽查 Notebook/HTML、Action 链接和实际提交 SHA。内容审核时 CsiPending 或空下载 URL 不代表同步失败;等待审核后重新请求链接。发布切换瞬间可能短暂 404,发布完成后有限重试,持续失败才诊断路径/审核状态。

向用户汇报发布地址、实际入口、提交与 Action 状态,以及尚未验证的浏览器行为。脚本仅发布已有 Gallery;首次创建见接口文档。