Coding

Tingwu ASR

Try it

使用阿里云通义听悟进行云端音频/视频转录。本技能应在用户需要云端语音转文字、长音频转录、本地 FunASR 不可用或需要更高精度时使用。不适用于无网络环境或需要完全离线的场景。

What it does

通过逆向封装通义听悟网页端内部 REST API,实现云端音频/视频文件转录,输出与 兼容的 Markdown 格式。

The skill document

通义听悟云端转录 (tingwu-asr)

通过逆向封装通义听悟网页端内部 REST API,实现云端音频/视频文件转录,输出与 funasr-transcribe 兼容的 Markdown 格式。

功能

  • 上传本地音频/视频文件到阿里云 OSS
  • 云端转录,支持说话人分离(单人/2人/多人)
  • 支持中文、英文、日文、粤语、中英文混合
  • 输出 funasr-transcribe 兼容的 Markdown,可直接用 summary.py 注入 AI 总结

依赖

  • Python 3.8+
  • requests (必须) — HTTP 请求
  • oss2 (必须) — 阿里云 OSS SDK(STS 直传)
  • playwright (登录时) — 内置登录脚本 login_pw.py 使用(pip3 install playwright && playwright install chromium

安装:

pip3 install -r skills/tingwu-asr/config/requirements.txt

首次使用:登录(首选:内置 Playwright 脚本)

方式一(推荐):skill 内置 login_pw.py,一条命令完成"开浏览器 → 自动填凭证 → 等 登录 → cookie 落盘":

python3 skills/tingwu-asr/scripts/login_pw.py
  • 凭证从 config/.env 读取(从 config/.env.example 复制填写)
  • 浏览器以可见窗口打开;若出现滑块/验证码,人工在窗口内完成即可,脚本自动轮询等待
  • 脚本通过 context.cookies() 取 cookie(含 HttpOnly 的 login_aliyunid_ticket), 直接写入 config/cookies.json,cookie 值不经过 stdout/对话记录
  • 完成后可用 check_auth.py 验证登录态

方式二(备用):Agent 用 MCP Playwright 浏览器工具手工流程:

  1. 用 MCP Playwright 打开 https://tingwu.aliyun.com/home
  2. 如果跳转到登录页,用账号密码或扫码登录
  3. 登录成功后,将提取的 cookie 保存到文件(注意 document.cookie 拿不到 HttpOnly cookie,仅作兜底):
    python3 skills/tingwu-asr/scripts/login.py --save-cookies '{"cna":"xxx",...}'
    

账号密码可预配置在 config/.env 文件中(从 config/.env.example 复制)。

每日签到(领取免费额度)

每天登录听悟网页可领取 2 小时免费转录额度。Agent 签到流程:

  1. 运行内置登录脚本(会打开 https://tingwu.aliyun.com/home 触发每日额度并保存 Cookie):
    python3 skills/tingwu-asr/scripts/login_pw.py
    
  2. 运行检查脚本确认状态:
    python3 skills/tingwu-asr/scripts/daily_checkin.py
    

可在 OpenClaw 中配置定时任务,让 Agent 每天自动执行此流程。

Agent 工作流

当用户要求转录音频/视频文件时,执行以下步骤:

1. 检查登录状态

python3 skills/tingwu-asr/scripts/check_auth.py

如果返回"无效",先运行 login.py

2. 执行转录

# 直接给链接(自动 yt-dlp 下载,默认多人分离):小宇宙/YouTube/B站等
python3 skills/tingwu-asr/scripts/transcribe.py "https://www.xiaoyuzhoufm.com/episode/xxx"

# 单文件转录(默认多人分离)
python3 skills/tingwu-asr/scripts/transcribe.py /path/to/audio.mp3 --lang cn

# 多文件并行转录(自动保存到文件所在目录 + archive 目录)
python3 skills/tingwu-asr/scripts/transcribe.py /path/to/audio1.mp3 /path/to/audio2.mp3 /path/to/video.mp4

# 批量转录目录下所有文件(并行)
python3 skills/tingwu-asr/scripts/transcribe.py /path/to/media_folder/ --batch

# 指定并行数(默认3)
python3 skills/tingwu-asr/scripts/transcribe.py /path/to/audio1.mp3 /path/to/audio2.mp3 --parallel 5

参数说明:

  • paths 音频/视频文件路径或链接(http(s) 开头自动用 yt-dlp 下载到临时目录;支持小宇宙/YouTube/B站等;支持多个混用)
  • --lang cn 语言: cn(中文,默认) / en(英文) / ja(日文) / cant(粤语) / cn_en(中英混合)
  • --speakers 说话人分离: 2=区分发言人(默认,实测唯一有效值,分 2 人) / 0=不区分 / 1=单人。注:3 与 4 实测均无效(不分离),原"4=多人"为误注
  • --batch 批量转录目录下所有文件
  • --parallel N 并行转录的最大文件数 (默认: 3)
  • --force 强制重新上传,即使该文件已有转录结果(默认会跳过已转录的文件)
  • -o output.md 指定输出路径(单文件模式)
  • --no-archive 不保存归档
  • --no-lab 不获取智能分析(关键词/议程/重点等)
  • --ppt 下载 PPT 幻灯片图片并嵌入 Markdown(仅视频有效)

关于「给链接转写」与说话人分离(重要设计取舍):传入链接时,skill 走「yt-dlp 下载 → 本地上传」路径,以保证说话人分离生效。听悟网页端的「播客链接转写」(底层 net_source 网络源通道)虽能省本地带宽,但实测其「区分发言人」选项不生效(提交时 roleSplitNum 被强制为 0,不做分离)。此外经实测,听悟 roleSplitNum 2 为有效分离值(分 2 人)0/1/3/4 均不分离(原 skill 注释"4=多人"为误注,已更正)。故 skill 默认 --speakers 2 走本地上传通道,换取可靠的 2 人分离,代价是下载+上传的带宽。如只需纯文字稿不在乎分离,可自行调用听悟网页端播客链接转写。

3. 输出说明

转录结果会同时保存到两个位置:

  1. 源文件所在目录:例如 /path/to/audio.mp3/path/to/audio.md
  2. archive 归档目录archive/YYYYMMDD_HHMMSS_audio/audio.md

这样做的好处是:

  • 源文件目录方便直接访问
  • archive 目录便于集中管理和备份

PPT 幻灯片: 视频文件会自动提取 PPT 幻灯片,图片保存在 {文件名}_slides/ 子目录中(每个文件独立目录,避免同目录下多视频冲突)。

3. 生成 AI 总结(复用 funasr-transcribe)

转录完成后,复用 funasr-transcribe 的 summary 模块:

python3 skills/funasr-transcribe/scripts/summary.py inject transcript.md summary.json
python3 skills/funasr-transcribe/scripts/summary.py verify transcript.md

文件结构

skills/tingwu-asr/
  SKILL.md              ← 本文件
  scripts/
    tingwu.py           ← 核心 API 客户端
    transcribe.py       ← CLI 入口
    format_output.py    ← 听悟 JSON → Markdown 转换
    login.py            ← Cookie 保存工具
    daily_checkin.py    ← 额度检查 + 记录
    check_auth.py       ← 认证检查
  config/
    .env                ← 账号密码凭证(gitignore,不提交)
    .env.example        ← 账号密码模板
    cookies.json        ← 登录 Cookie(gitignore,不提交)
    cookie.example.json ← Cookie 文件模板
    quota_history.jsonl ← 额度变更记录(gitignore,不提交)
    requirements.txt    ← Python 依赖
  references/           ← API 文档和决策记录
  archive/              ← 转录结果归档

异步转录模式(推荐用于长视频)

对于 1 小时以上的长视频,转录可能需要 20-30 分钟。使用异步模式上传后立即返回,后台自动轮询。

1. 异步提交

python3 skills/tingwu-asr/scripts/transcribe.py /path/to/video.mp4 --async --speakers 2

上传完成后立即返回任务 ID,任务信息保存到 config/pending_tasks.json

2. 后台监控(Claude Code 增强模式)

提交后,用 Bash 工具的 run_in_background 启动后台监控:

command: "python3 skills/tingwu-asr/scripts/poll_tasks.py --monitor --timeout 3600 --interval 120"
run_in_background: true
timeout: 600000

注意timeout 必须设为 600000(10 分钟),否则默认 2 分钟会超时。

监控完成后会自动收到通知,此时展示转录结果路径给用户。

3. 手动查询

# 检查所有待处理任务的状态
python3 skills/tingwu-asr/scripts/poll_tasks.py

# 阻塞式监控
python3 skills/tingwu-asr/scripts/poll_tasks.py --monitor

注意事项

  • Cookie 会过期,过期后需重新运行 login.py
  • 网页端免费额度有限,大文件或高频使用可能触发风控
  • 支持格式: mp3/wav/m4a/wma/aac/ogg/amr/flac/aiff/mp4/wmv/mov/mkv/webm/avi 等
  • 音频最大 500M,视频最大 6G,单文件最长 6 小时

Related skills

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván555 installs18 stars

Read and write Excel workbooks, worksheets, ranges, tables, and charts in OneDrive through Microsoft Graph with managed OAuth.

by byungkyu800 installs42 stars

Post videos, photos, text, and documents to 10 social platforms through a single REST API call.

by victorcavero14375 installs50 stars

More from cat-xierluo

Browse all skills

元典法条与案例检索。本技能应在需要查询中国法律法规条文、检索相关案例、为法律分析提供数据支撑时使用。

by cat-xierluo29 installs1 stars

智能 Git 批量提交快捷按钮。触发词:"git 提交"、"批量提交"、"拆分提交"、"整理提交",或用户明确要把已暂存变更拆成多个聚焦 commit 时使用。只负责 commit 拆分和提交信息生成;分支、PR、push、merge、Issue 关闭语义以 git-workflow 为准。提交完成后,若仓库内存在 clawhub-sync 或 subtree-publish 配置,本技能会提示是否将涉及版本更新的技能同步发布到 ClawHub/SkillHub 或推送 subtree 独立仓库——这些发布/推送动作均需用户显式确认。

by cat-xierluo25 installs

将本地开发的 Skills 批量同步到 ClawHub 与腾讯 SkillHub 两个平台。支持智能 .gitignore 过滤、白名单控制、增量同步、单个 skill 同步、双平台分流发布。本技能应在用户需要将本地 skills 发布到 ClawHub/SkillHub、批量同步技能、检查发布状态时使用。

by cat-xierluo13 installs

检测并去除文章中的AI化表述模式。**必须触发**:当文章经过写作流程(无论是模式1润色优化还是模式2内容创作)完成初稿后,在输出给用户之前,**必须**调用此 skill 进行 AI腔 检测和去除。不可跳过此步骤,不可仅凭感觉省略检测。任何"先输出再说"的做法都是不允许的。

by cat-xierluo29 installs

本技能应在用户收到法院短信(文书送达、立案通知、开庭提醒等)时使用,自动提取案号、当事人、下载链接,下载文书并归档到对应案件目录。

by cat-xierluo21 installs

基于现有文章、专栏、课程讲稿、逐字稿、访谈、课件、会议纪要、案例材料、PDF 文本、Word 文档和笔记等内容资产,判断它们最适合转化为书、小册子、课程、系列文章、实务手册或知识库,并输出精简策划意见;用户提到“把现有内容整理成书”“判断素材适合做书还是课程”“把文章/直播稿/课程稿/笔记重组成知识产品”等场景时...

by cat-xierluo16 installs