用途:在 Open edX Studio 中把草稿改动发布出去。Studio 中每次编辑都是草稿,用户只有在某个块或其祖先被发布后才能看到。发布是通用块更新中 publish 键的一个取值,可作用于树的任意层级。该技能是构建流程的最后一步,也是排查“内容不显示”时首先检查的环节。
主要能力:读取发布与可见性状态,包括 published、has_changes、visibility_state(live、ready、unscheduled、needs_attention、staff_only、gated)、released_to_students。可见条件为已发布且已向学生发布、非仅员工可见且已选课。写入方面支持 make_public(发布该块及其下全部内容,幂等)、discard_changes(丢弃草稿并回退到已发布版本,会销毁草稿工作,需先与用户确认)、republish(对已发布且无改动的块重新发布)。更新与发布可合并为一次调用。
使用方式:先做预检,运行 node .claude/skills/iblai-api-studio-auth/scripts/studio-login.mjs --check,需打印两个 ok,否则先运行 /iblai-api-studio-auth。基础地址为 $STUDIO_URL,会话 Cookie 来自 studio.env(其值为单引号包裹,解析时需去掉引号,否则 Studio 返回 500)。读取用 GET /xblock/outline/{ROOT} 获取整棵树及各字段,也可对子树或单块读取;GET /api/v1/ibl/course/{COURSE}/units 列出所有单元及其组件,组件本身没有发布状态,由所属单元覆盖。发布用 POST /xblock/{block} 并传 {"publish":"make_public"},block 可为单元、小节、章节或 ROOT。
适用场景与限制:适合课程构建收尾发布、迭代时按最小合理层级发布、以及排查未显示内容。发布不改变日期,开始时间在未来时状态为 ready 而非 live,课程 start_date 会统一门控。staff_only 发布后仍隐藏,需清除 visible_to_staff_only 并检查 ancestor_has_staff_lock。发布面向用户,发布整门课程前需与用户确认。课程设置、评分策略和团队变更无需发布。首次发布课程前应依次确认设置、评分策略、大纲完整且已与用户复核、每个单元都有内容。LMS 侧确认由 /iblai-api-studio-lms 负责。