$npx -y skills add yiliqi78/se7en-skills --skill se7en-bibigpt通过 BibiGPT API 自动总结视频内容并提取口播逐字稿。 当用户发送一个视频链接(YouTube、Bilibili、抖音、小红书、播客等)并要求总结、提取逐字稿或字幕时,使用此技能。 触发关键词:总结视频、逐字稿、提取字幕、视频摘要、summarize video、transcript。 也适用于用户只发送视频链接而没有其他明确指令的情况——默认执行总结+逐字稿提取。 支持所有 BibiGPT 支持的平台。
| 1 | # BibiGPT 视频总结 & 逐字稿提取 |
| 2 | |
| 3 | 通过 BibiGPT API 获取视频的 AI 总结和完整口播逐字稿。 |
| 4 | |
| 5 | ## 前置配置 |
| 6 | |
| 7 | ### 获取 API Token |
| 8 | |
| 9 | 1. 前往 [BibiGPT](https://bibigpt.co) 注册账号 |
| 10 | 2. 在 [集成页面](https://bibigpt.co/user/integration) 获取 API Token |
| 11 | 3. 在 [商店](https://bibigpt.co/shop) 购买时长额度 |
| 12 | |
| 13 | ### 配置 Token |
| 14 | |
| 15 | **方式一:环境变量(推荐)** |
| 16 | |
| 17 | ```bash |
| 18 | export BIBIGPT_TOKEN="your_token_here" |
| 19 | ``` |
| 20 | |
| 21 | **方式二:修改脚本** |
| 22 | |
| 23 | 编辑 `scripts/bibigpt_fetch.py`,将 `API_TOKEN` 变量替换为你的 token。 |
| 24 | |
| 25 | --- |
| 26 | |
| 27 | ## 工作流程 |
| 28 | |
| 29 | ### 第一步:清理 URL |
| 30 | |
| 31 | 从用户消息中提取视频链接,去除追踪参数: |
| 32 | - Bilibili: 只保留 `https://www.bilibili.com/video/BVXXXXXX/` |
| 33 | - YouTube: 只保留 `https://www.youtube.com/watch?v=VIDEO_ID` |
| 34 | |
| 35 | ### 第二步:调用 API |
| 36 | |
| 37 | 使用本技能目录下的 `scripts/bibigpt_fetch.py` 脚本: |
| 38 | |
| 39 | ```bash |
| 40 | python3 /path/to/bibigpt_fetch.py "<视频URL>" |
| 41 | ``` |
| 42 | |
| 43 | 脚本会自动: |
| 44 | 1. 先尝试 POST API(含详情) |
| 45 | 2. 失败则降级到 GET API |
| 46 | 3. 提取标题、总结、逐字稿 |
| 47 | 4. 输出 JSON 到 stdout |
| 48 | |
| 49 | ### 第三步:保存结果 |
| 50 | |
| 51 | 将结果保存为 Markdown 文件: |
| 52 | |
| 53 | ```markdown |
| 54 | --- |
| 55 | source: <视频URL> |
| 56 | platform: <平台> |
| 57 | author: <作者> |
| 58 | duration: <时长秒> |
| 59 | created: <YYYY-MM-DD> |
| 60 | tags: [bibigpt, transcript] |
| 61 | --- |
| 62 | |
| 63 | ## 总结 |
| 64 | |
| 65 | <summary 内容> |
| 66 | |
| 67 | ## 口播逐字稿 |
| 68 | |
| 69 | <transcript 内容> |
| 70 | ``` |
| 71 | |
| 72 | 保存路径由用户指定,默认保存到当前工作目录。 |
| 73 | |
| 74 | ### 第四步:报告 |
| 75 | |
| 76 | 向用户展示: |
| 77 | - 视频标题和作者 |
| 78 | - 总结摘要(前几百字) |
| 79 | - 逐字稿字数 |
| 80 | - 文件保存路径 |
| 81 | |
| 82 | --- |
| 83 | |
| 84 | ## API 参考 |
| 85 | |
| 86 | ### 端点一览 |
| 87 | |
| 88 | | 端点 | 方法 | 用途 | 消耗时长 | |
| 89 | |------|------|------|----------| |
| 90 | | `/api/v1/summarizeWithConfig` | POST | 总结 + 详情(推荐) | 是 | |
| 91 | | `/api/v1/summarize` | GET | 基本总结 | 是 | |
| 92 | | `/api/v1/getSubtitle` | GET | 仅字幕(快) | 较少 | |
| 93 | | `/api/v1/express` | GET | AI 文案改写 | 是 | |
| 94 | | `/api/v1/getPolishedText` | GET | 字幕润色 | 是 | |
| 95 | |
| 96 | ### 响应结构(summarize / summarizeWithConfig) |
| 97 | |
| 98 | ```json |
| 99 | { |
| 100 | "success": true, |
| 101 | "id": "BV1FW6TBHErd", |
| 102 | "service": "bilibili", |
| 103 | "sourceUrl": "https://...", |
| 104 | "htmlUrl": "https://bibigpt.co/...", |
| 105 | "summary": "## 总结 Markdown 内容...", |
| 106 | "costDuration": 600, |
| 107 | "remainingTime": 3000, |
| 108 | "detail": { |
| 109 | "title": "视频标题", |
| 110 | "author": "作者名", |
| 111 | "duration": 1200, |
| 112 | "cover": "封面URL", |
| 113 | "type": "bilibili", |
| 114 | "subtitlesArray": [ |
| 115 | {"startTime": 0.5, "text": "第一句话"}, |
| 116 | {"startTime": 3.2, "text": "第二句话"} |
| 117 | ] |
| 118 | } |
| 119 | } |
| 120 | ``` |
| 121 | |
| 122 | 注意:`summary` 和 `detail` 在顶级,不是嵌套在 `data` 里。 |
| 123 | 当 `includeDetail: true` 时才返回 `detail` 对象。 |
| 124 | |
| 125 | ### 错误响应 |
| 126 | |
| 127 | ```json |
| 128 | { |
| 129 | "success": false, |
| 130 | "code": "PAYMENT_REQUIRED", |
| 131 | "message": "余额不足啦,请升级会员或购买时长哦!" |
| 132 | } |
| 133 | ``` |
| 134 | |
| 135 | 常见错误码:`PAYMENT_REQUIRED`(余额不足)、`INVALID_URL`、`TIMEOUT`。 |
| 136 | |
| 137 | ### 仅获取字幕(不消耗 LLM 时长) |
| 138 | |
| 139 | 如果用户只要逐字稿不要总结,用 getSubtitle 端点更省额度。 |
| 140 | |
| 141 | ### promptConfig 参数(可选) |
| 142 | |
| 143 | POST 请求支持 promptConfig 自定义总结风格: |
| 144 | |
| 145 | ```json |
| 146 | { |
| 147 | "url": "<视频URL>", |
| 148 | "includeDetail": true, |
| 149 | "promptConfig": { |
| 150 | "showEmoji": true, |
| 151 | "showTimestamp": false, |
| 152 | "outlineLevel": 1, |
| 153 | "sentenceNumber": 5, |
| 154 | "detailLevel": 700, |
| 155 | "outputLanguage": "zh-CN", |
| 156 | "customPrompt": "自定义提示词", |
| 157 | "isRefresh": true |
| 158 | } |
| 159 | } |
| 160 | ``` |
| 161 | |
| 162 | `isRefresh: true` 时忽略缓存,`customPrompt` 才会生效。 |