您有一个媒体功能要发布:给定一个 YouTube 链接或 ID,返回一个可下载的 MP3 并显示基本元数据(标题、持续时间、大小)。在本指南结束时,您将从 Zyla API Hub 调用 Youtube 到音频 API,以获取直接音频链接,并将其连接到您应用程序的管道中,使用最小的、适合生产的工作流程。
Youtube 到音频 API 的功能
Youtube 到音频 API 将 YouTube 视频转换为音频文件,并返回一个直接下载链接以及有用的字段,如标题、持续时间和文件大小。团队使用它来驱动播客工具、音频笔记捕获、离线播放功能和媒体摄取管道,其中音轨是唯一需要的资产。
在 Zyla API Hub,此 API 采用单一订阅和配额模型(无按调用付费)。您在 Hub 上订阅的第一个 API 通常提供 7 天试用或 50 次请求;请检查列表以获取当前试用信息。您在 Zyla 上使用的每个 API 都使用相同的帐户和 API 密钥访问。
在 Zyla API Hub 上开始
打开 Zyla 上的 Youtube 到音频 API 列表,点击订阅或开始可用的试用,并获取您的密钥。您的密钥放在授权头中作为 Bearer 令牌。调用是通过 Zyla 的 Hub URL 进行的,而不是通过第三方域。
您本周可以发布的端点
该 API 通过 Zyla 的 Hub URL 暴露两个 GET 端点。身份验证是基于头部的,使用 Authorization: Bearer YOUR_API_KEY。
1) 获取音频
- 方法:GET
- URL:https://zylalabs.com/api/381/youtube-to-audio-api/8884/get-audio
- 功能:接受一个 YouTube 视频 ID 并返回一个直接的 MP3 下载链接和元数据。
- 所需查询参数:
- id(字符串):YouTube 视频 ID。示例:xFYQQPAOz7Y
官方 curl(复制/粘贴):
curl -s -X GET "https://zylalabs.com/api/381/youtube-to-audio-api/8884/get-audio?id=xFYQQPAOz7Y"
-H "Authorization: Bearer YOUR_API_KEY"
官方示例响应:
{
"msg": "success",
"link": "https://theta.123tokyo.xyz/get.php/d/fa/xFYQQPAOz7Y.mp3?n=Eminem%20-%20Lose%20Yourself&uT=R&uN=QWxlam9aeWxhTGFicw%3D%3D&h=TcO7xrzRPZ9cGbw2wXP93w&s=1784312338&uT=R&uN=QWxlam9aeWxhTGFicw%3D%3D",
"status": "ok",
"duration": 327.49718169275,
"title": "Eminem - Lose Yourself",
"progress": 100,
"pc": 0,
"filesize": 4181397
}
您实际使用的内容:
- link:生成的 MP3 文件的直接 URL。使用此链接进行下载或流式传输。
- title:人类可读的视频标题。
- duration:音频持续时间(以秒为单位,浮点数)。
- filesize:文件大小(以字节为单位)。
- status 和 msg:快速健康检查字段;成功时期望“ok”和“success”。
- progress 和 pc:您可以记录或忽略的进度指示器,一旦进度达到 100。
2) 下载音频
- 方法:GET
- URL:https://zylalabs.com/api/381/youtube-to-audio-api/22174/download-audio
- 功能:接受完整的 YouTube 视频 URL 并返回一个可下载的音频链接。
- 所需查询参数:
- url(字符串):完整的 YouTube 观看 URL。示例:https://www.youtube.com/watch?v=_Yhyp-_hX2s
当您的 UI 已经有完整的 YouTube URL 时,这是最简单的路径。如果您只有视频 ID,请使用获取音频。
节省时间的生产重点说明
- 身份验证:所有请求都需要 Authorization: Bearer YOUR_API_KEY。
- 传输:请严格使用 HTTPS Hub URL。不要调用原始主机。
- 缓存:如果您缓存响应,请存储最终链接、标题、持续时间和文件大小。持续时间以秒为单位;文件大小以字节为单位。
- 重试:对于瞬态网络错误,短暂的指数退避是合理的。如果状态或消息指示非成功,请将其显示给用户。
- 配额:Hub 使用订阅 + 配额,而不是按调用付费。第一个 API 通常包括 7 天试用或 50 次请求。请查看列表以获取当前访问选项和定价。
使用获取音频的最小 Python 示例
此代码段请求给定视频 ID 的音频并将 MP3 流式传输到磁盘。它使用官方的获取音频端点,因此您可以在添加密钥后直接粘贴和运行。
import os
import sys
import json
import time
import urllib.parse
import requests
API_KEY = os.environ.get("ZYLA_API_KEY", "YOUR_API_KEY")
VIDEO_ID = "xFYQQPAOz7Y" # 替换为您的目标 YouTube ID
HUB_URL = "https://zylalabs.com/api/381/youtube-to-audio-api/8884/get-audio"
def get_audio_info(video_id: str):
params = {"id": video_id}
headers = {"Authorization": f"Bearer {API_KEY}"}
r = requests.get(HUB_URL, params=params, headers=headers, timeout=30)
r.raise_for_status()
return r.json()
def download_file(url: str, out_path: str):
with requests.get(url, stream=True, timeout=60) as r:
r.raise_for_status()
with open(out_path, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
if chunk:
f.write(chunk)
return out_path
def main():
info = get_audio_info(VIDEO_ID)
# 基于官方示例的预期字段
if info.get("status") != "ok" or info.get("msg") != "success":
print("转换未准备好或失败:", json.dumps(info, indent=2))
sys.exit(1)
link = info["link"]
title = info.get("title", f"{VIDEO_ID}.mp3")
duration = info.get("duration") # 秒(浮点数)
filesize = info.get("filesize") # 字节(整数)
# 从标题构建简单文件名
safe_title = "".join(c for c in title if c.isalnum() or c in (" ", "-", "_")).rstrip()
filename = f"{safe_title}.mp3"
print(f"正在下载:{title}")
print(f"持续时间(秒):{duration}")
print(f"报告大小(字节):{filesize}")
print(f"源链接:{link}")
path = download_file(link, filename)
print(f"已保存到:{path}")
if __name__ == "__main__":
main()
为您的流程选择正确的端点
- 如果您的 UI 捕获完整的 YouTube 链接(观看 URL),请调用下载音频以直接获取带有 url 参数的下载 URL。
- 如果您只有视频 ID(例如,在其他地方解析或存储在您的数据库中),请使用获取音频和 id 参数来检索元数据,如持续时间和文件大小。
通过 MCP 从 AI 代理调用
您可以通过任何与 MCP 兼容的客户端(Claude Code、Cursor、Windsurf 等)触发相同的 Hub 端点,使用 Zyla MCP 服务。配置您的客户端以指向 MCP,传递您的 Zyla API 密钥,并调用上面显示的 Hub 路径。有关设置详细信息,请参见 MCP 页面。
端到端示例任务
任务:给定一个 YouTube 链接,存储一个 MP3 并记录媒体库的基本元数据。
- 解析输入。如果它包含完整的观看 URL,请使用 url 参数调用下载音频。如果您只有视频 ID,请使用 id 调用获取音频。
- 成功时,持久化:
- 标题(title)
- 持续时间(以秒为单位)(duration)
- 文件大小(以字节为单位)(filesize)
- 源和下载 URL(link)
- 从链接下载 MP3 并存储在您的对象存储或本地媒体文件夹中。
- 如果您需要重复检测,请记录校验和。使用文件大小作为更改的快速启发式。
操作考虑事项
- 超时:在传输媒体时,网络变化是现实。请为最终链接下载步骤使用合理的超时和重试。
- 背压:如果您的队列激增(例如,许多转换),请批量处理并尊重您在 Zyla 的订阅配额。
- 可观察性:记录从获取音频的状态、消息和进度,以快速识别间歇性问题。
- 安全性:将您的 API 密钥保存在安全的存储或环境变量中;切勿在客户端代码中硬编码。
- 弹性:如果您缓存响应,请同时存储标题和持续时间,以便即使您稍后等待下载文件,也可以呈现元数据。
快速参考
- 此列表的 Hub 基础:https://zylalabs.com/api/381/youtube-to-audio-api/
- 获取音频:GET /8884/get-audio?id=VIDEO_ID
- 下载音频:GET /22174/download-audio?url=YOUTUBE_WATCH_URL
- 身份验证头:Authorization: Bearer YOUR_API_KEY
- 您可能会持久化的响应字段:link、title、duration(秒)、filesize(字节)
为什么使用 Zyla API Hub 进行媒体任务
Zyla 将超过 10,000 个公共 API 集中在一个帐户和一个密钥下,因此您可以添加相邻功能,而无需重新进行身份验证或计费。Youtube 到音频 API 插入到该工作流程中,使用您在 Hub 上其他地方已经使用的相同授权头。稍后探索更多媒体功能,但首先发布此转换路径。
浏览 Zyla API Hub 上的目录,并添加具有一致订阅 + 配额计费的 API(没有按调用收费的惊喜)。
常见问题
问:获取音频和下载音频有什么区别?
答:获取音频接受视频 ID 并返回直接链接和元数据(标题、持续时间、文件大小)。下载音频接受完整的 YouTube URL 并返回可下载的音频链接。
问:我应该为媒体库存储哪些字段?
答:存储链接(下载 URL)、标题、持续时间(以秒为单位)和文件大小(以字节为单位)。这些字段由获取音频在官方示例中返回。
问:我如何进行身份验证?
答:在您发送到 Hub URL 的每个请求中添加 Authorization: Bearer YOUR_API_KEY。
问:是否有免费计划?
答:Hub 使用订阅 + 配额。第一个 API 通常提供 7 天试用或 50 次请求—请检查 API 页面以获取当前访问选项和定价。
问:我可以从 AI 编码代理触发这个吗?
答:可以。配置您的与 MCP 兼容的客户端以使用 Zyla 的 MCP 服务并调用 Hub 端点。有关设置的信息,请参见 MCP 页面。
准备将其连接到您的媒体工作流程中吗?在 Youtube 到音频 API 列表中订阅并获取您的密钥,开始 7 天试用,并立即发布转换功能。