oracle-publishlisted
Install: claude install-skill Huanyu-Hibiki/Huanyu-Skills
# /oracle-publish — 发布登记
把发布元数据补到预测文件 header 与 state。**禁止改预测段**——hook 会拦。
`oracle-publish` 严格只用于「已实际发到平台且有真实 URL」。预测落盘 ≠ 发布,scheduled ≠ 发布,制作完 ≠ 发布。
## Overview
```
[用户:已发布 https://...]
↓
[Phase 0.5: 发布前合规 gate(oracle-compliance 快扫)]
↓
[Phase 1: 定位项目根 + 找到对应预测文件]
↓
[Phase 2: 解析 URL → 平台 + 问实际发布日(≠ 登记日)]
↓
[Phase 3: 更新 prediction header(仅 metadata 段)]
↓
[Phase 4: 更新 state(多平台表 + shoots 清队 + pending_retros 窗口表)]
↓
[Phase 5: 提醒(盲度警告 + 复盘日程 + 置顶评论触发)]
```
## Constants
- **AUTO_DETECT_PLATFORM = true** — URL 模式自动识别
- **VERIFY_BLIND = true** — 提醒用户从此刻起看到任何数据都破坏盲度声明诚信
## Workflow
### Phase 0.5: 发布前合规 gate
按 [oracle-compliance](../oracle-compliance/SKILL.md) 的清单快扫定稿 + 发布文案:
- 🔴 高危(竞品平台名口播 / 站外导流 / 敏感词)≥1 处 → 警告"发现 N 处高危限流风险,建议修改后再发布。仍要登记吗?"→ 用户确认才继续
- 🟡 中危 ≥3 处 → 轻量提示,不阻塞
- 通过 → 正常进 Phase 1
用户强制跳过 → state 标 `compliance_scan: skipped`(retro 发现低播放时优先检查是否限流)。
### Phase 1: 定位项目根 + 找预测文件
**项目根**:从当前目录向上找 `.oracle-state.json`;找不到 → 按已知项目根路径列表验证;都没有 → 一次定向搜索后询问用户(**不从 home 盲目 find**)。
**Step 1a: 链接自动解析(有 URL 时优先跑)**:
用户粘 1-N 条链接(可以一次给多平台多条)→ 跑:
```bash
python <skill包>/tools/link_resolver.py auto "<url1>" "<url2>" --project <项目根>
```
自动完成三件事:
1. **短链解析**:`v.douyin.com/x` / `b23.tv/x` / `xhslink.com/x` → 跟随重定向拿真实 URL
2. **平台识别 + 内容 ID 提取**:URL 模式解析(BV 号 / aweme_id / note_id…),B站走公开 API 最稳
3. **标题抓取 + 作品匹配**:HTML `<title>`/`og:title` 抓标题(清平台后缀)→ difflib 模糊匹配 shoots 队列 + 无 `Published at` 的 prediction → 输出确认表
```
🔗 链接解析 + 作品匹配
✅ [1] bilibili · ID=BV1ab2cd3ef4