Files
StudioLift/README.md
Sidney Zhang 9020752eed feat(scripts): 添加 PEP 723 脚本元数据并修复 HTTP/2 伪头过滤问题
- 为 build_studio_urls.py 和 lookup_groups.py 添加 PEP 723 依赖声明
- 修复 HTTP/2 伪头导致 requests 抛 InvalidHeader 的问题
- 添加 CDP 端口连通性预检查及启动指引
2026-08-27 13:33:34 +08:00

161 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# YouTube Studio 工具集
本项目包含四个 Trae CN 技能skills及配套 Python 脚本,覆盖 YouTube Studio 内容管理器Content Manager分析的完整工作流**环境准备 → 批量生成报告 URL → 群组名解析实体 ID → 脚本化下载分析数据**。
仅支持 Windows。
## 技能清单
| 技能 | 用途 | 触发示例 |
|---|---|---|
| `uv-env-setup` | 用 uv 准备并维护 Python 运行环境(`pyproject.toml``uv sync``uv run` | 「帮我准备环境」「装依赖」 |
| `yt-studio-url-builder` | 根据需求清单CSV/Excel批量拼接 explore 报告 URL | 「根据这份清单生成 Studio URL」 |
| `youtube-studio-csv-download` | 复用已登录浏览器会话,脚本化下载分析 CSVzip | 「用我的 Chrome 会话下载这份 CSV」 |
| `yt-studio-groupid-lookup` | 把一批群组名批量解析为 entity_idgroupId并标注归属的内容所有者 | 「把这些群组名查成 Group ID」 |
## 项目结构
```
├── skills/ # 技能源目录(安装脚本从这里复制)
│ ├── uv-env-setup/ # 环境准备技能
│ │ ├── SKILL.md
│ │ └── references/troubleshooting.md
│ ├── yt-studio-url-builder/ # URL 拼接技能
│ │ ├── SKILL.md
│ │ ├── references/ # input-guide.md输入清单指南、troubleshooting.md
│ │ └── scripts/ # build_studio_urls.py、countries.json
│ ├── youtube-studio-csv-download/ # CSV 下载技能
│ │ ├── SKILL.md
│ │ ├── references/troubleshooting.md
│ │ └── scripts/youtube_export_download.py
│ └── yt-studio-groupid-lookup/ # 群组名->entity_id 解析技能
│ ├── SKILL.md
│ ├── references/ # input-guide.md名单/套件指南、troubleshooting.md
│ └── scripts/lookup_groups.py
├── scripts/
│ ├── install-skills.bat # 傻瓜安装入口(双击运行)
│ └── install-skills.ps1 # 安装逻辑
├── docs/
│ ├── install-skills.md # 安装详细说明
│ └── adr/ # 架构决策记录
├── assets/ # 需求输入示例文件
├── pyproject.toml # Python 依赖唯一事实来源pandas/openpyxl/playwright
└── uv.lock # uv 依赖锁定(可复现环境)
```
## 快速开始
### 前置条件
- Windows
- agent 之一:[Trae CN](https://www.trae.cn/) 或 [ZCode](https://github.com/ZhipuAI)(技能装到对应用户级目录)
- [uv](https://docs.astral.sh/uv/) 已安装(未装可 `winget install astral-sh.uv`,装完重开终端;当前会话不识别时先跑 `python -m uv`,详见 uv-env-setup 技能)
### 第 1 步:安装技能
双击运行(默认装到 Trae CN
```
scripts\install-skills.bat
```
或用 `-Agent` 指定目标:`trae-cn`(默认)/ `zcode` / `all`(全部目标)。脚本会把 `skills\` 下全部技能复制到对应用户级目录trae-cn: `%USERPROFILE%\.trae-cn\skills\`zcode: `%USERPROFILE%\.zcode\skills\`);同名旧版自动备份到该目录旁的 `skills-backup\`,不会丢数据。详细说明见 [docs/install-skills.md](docs/install-skills.md)。
**默认安装全部技能**。需要只装部分、指定目标或先预览时可在命令行加参数bat 与 ps1 都支持):
```powershell
# 装到 ZCode
scripts\install-skills.bat -Agent zcode
# 全部目标只安装指定的几个技能
scripts\install-skills.bat -Agent all -Skills yt-studio-url-builder,youtube-studio-csv-download
# 只预览将安装/覆盖/备份的技能,不实际复制
scripts\install-skills.bat -DryRun
```
### 第 2 步:准备 Python 运行环境
两种模式按场景二选一(细节与回退链见 `skills/uv-env-setup/SKILL.md`
- **项目环境**(在项目内跑整套流程):项目根执行 `uv sync`,之后统一 `uv run python <脚本>`。uv 自动创建 `.venv\` 并安装全部依赖pandas、openpyxl、playwright、requests本机无兼容 Python 时 uv 会自动下载托管 Python要求 ≥3.10)。
- **单脚本模式**(技能已装到用户级目录、脱离项目使用):什么都不用配——脚本头部带 PEP 723 内联依赖声明,直接 `uv run <脚本路径>` 即可。
### 第 3 步:开始使用
重启对应 agent或新建会话在对话中直接说需求即可触发对应技能例如
> 根据这份清单批量生成 Studio URL
把需求整理成 CSV/Excel格式见 `skills/yt-studio-url-builder/references/input-guide.md`,示例见 `assets/需求输入示例.xlsx`),技能会引导生成 URL 清单。**清单里只有群组名时,先说「帮我把这些群组名解析成 entity_id」走 groupid-lookup 技能补 ID**,再生成 URL。
> 用我的 Chrome 会话下载这份分析 CSV
技能会用 Playwright 复用已登录的浏览器会话,自动点击导出并保存 zip。
> 帮我准备/重建环境
技能会引导选择运行分支(项目环境 / 单脚本模式)并完成验证。
## 后续优化与修改
### 改 URL 固定参数
粒度、表格列指标等固定参数集中在 `skills/yt-studio-url-builder/scripts/build_studio_urls.py` 顶部的 `CONFIG` 字典中,**单点维护**——改完重跑脚本即生效,需求清单无需变动。
主指标 `metric`、细分维度 `dimension` 可**按行选择**:在需求清单加一列 `指标`(映射见同目录 `metrics.json` 或填已知指标代码)、一列 `维度`(映射见同目录 `dimensions.json` 或填已知维度代码),留空则走 `CONFIG` 默认。
### 扩充国家映射
中文国家名 → ISO 代码的映射在 `skills/yt-studio-url-builder/scripts/countries.json`,直接追加条目即可;映射外的两位 ISO 代码(如 `US`)会原样透传。
### 维护映射文件(指标 / 维度 / 国家)
`skills/yt-studio-url-builder/scripts/` 下有三个映射文件,把「中文/英文名」翻译成「URL 内部代码」,均可自行扩充:
| 文件 | 作用 | 新增示例 |
|---|---|---|
| `metrics.json` | 指标名 → 指标代码(如 `观看时长``EXTERNAL_WATCH_TIME` | `"新指标名": "SOME_METRIC"` |
| `dimensions.json` | 细分维度名 → 维度代码(如 `地理位置``COUNTRY` | `"新维度名": "SOME_DIMENSION"` |
| `countries.json` | 中文国家名 → ISO 两位代码(如 `美国``US` | `"新国名": "XX"` |
方法和规则:
- 都是扁平 `key -> value` 的 JSON 对象UTF-8 编码;键为人类可读名、值为大写代码。
- **同一代码可有多个别名**(多对一),例如 `metrics.json``税前收益` / `税前收入` / `预计收益` 都指向 `TOTAL_ESTIMATED_EARNINGS`
- 新增一个指标/维度后,其代码会被脚本自动加入「可透传集合」,可直接在需求清单里填裸代码,无需改 `build_studio_urls.py`
- **默认主指标/维度/粒度不在这些 JSON 里**,而在 `build_studio_urls.py` 顶部的 `CONFIG`(见上文「改 URL 固定参数」)。
- `dimensions.json``metrics.json` 的基准数据源是 `assets/YouTube_Studio_细分维度_时间颗粒度_完整清单.xlsx`(「细分维度」「数据指标」两张表);`countries.json` 基于 ISO 3166-1 标准手工维护。
完整说明(加载方式、从 Excel 重新同步的脚本片段、更新后校验清单与常见坑)见 [skills/yt-studio-url-builder/references/maintenance-guide.md](skills/yt-studio-url-builder/references/maintenance-guide.md)。
### 新增/修改依赖
只改根目录 `pyproject.toml``dependencies`,然后 `uv sync` 更新 `uv.lock`。不要 `pip install` 直装(绕过 lock环境不可复现
### 修改技能并重新安装
技能就是在 `skills/` 下编辑的 Markdown + 脚本。改完后重新双击 `scripts\install-skills.bat` 即可同步到 Trae CN旧版自动备份。建议遵循的写法
- 每个技能一个文件夹,必须含 `SKILL.md`frontmatter 的 `name` + `description`description 写清触发场景)。
- 大块参考内容放 `references/` 子目录,`SKILL.md` 中按需引用(渐进披露)。
- 每个步骤给出可检查的完成判据,避免半途而废。
- 同一信息只在一处维护(单一事实来源),避免重复表述。
### 回滚 / 卸载
- 回滚:把 `~\.trae-cn\skills-backup\<技能名>-<时间戳>\` 复制回 `~\.trae-cn\skills\<技能名>\`
- 卸载:删除 `~\.trae-cn\skills\` 下对应技能文件夹。
- 重置环境:删除项目根 `.venv\` 后重新 `uv sync`
## 常见问题
- **双击 bat 闪退**:在 PowerShell 中手动运行 `scripts\install-skills.bat` 查看报错。
- **装了技能不触发**:需重启 Trae CN 或新建会话。
- **`uv sync` 拉包慢**:国内镜像 `$env:UV_DEFAULT_INDEX = "https://pypi.tuna.tsinghua.edu.cn/simple"` 后重试。
- **技能脚本报 `ModuleNotFoundError`**:项目根执行 `uv sync`,或确认命令用了 `uv run` 前缀。
更多排查见各技能的 `references/troubleshooting.md`
-----
UPDATE: 2026-08-24