Quay lại blogTích hợp

How to Get YouTube Transcripts in Python

Two ways to pull YouTube transcripts in Python: the open-source youtube-transcript-api library, and a hosted REST API. Working code for both, and where the self-hosted approach breaks in production.

00:07:00 · SEP 26, 2026

Trả lời nhanh

Cài đặt youtube-transcript-api cho một script cục bộ nhanh, hoặc gọi một REST API được lưu trữ nếu bạn không muốn xử lý việc chặn IP và các vấn đề PoToken sau khi triển khai. Cả hai đều được trình bày bên dưới với code hoạt động thực tế.
01

Cài đặt thư viện mã nguồn mở

youtube-transcript-api là một gói Python được bảo trì tốt, lấy trực tiếp dữ liệu phụ đề của chính YouTube - không cần API key, không cần hạn ngạch YouTube Data API.

pip install youtube-transcript-api

Lấy bản chép lời bằng ID video:

from youtube_transcript_api import YouTubeTranscriptApi

api = YouTubeTranscriptApi()
transcript = api.fetch("dQw4w9WgXcQ", languages=["en"])

for snippet in transcript:
    print(snippet.text, snippet.start, snippet.duration)
02

Nó gãy ở đâu khi triển khai

Nó hoạt động ổn định trên laptop. Khi triển khai lên máy chủ đám mây, nó có thể gặp các lỗi thực tế đã được ghi nhận đầy đủ - chặn IP, PoTokenRequired, và lỗi 'bản chép lời bị vô hiệu hóa' không phải lúc nào cũng đúng như vẻ ngoài của nó. Xem danh sách chẩn đoán đầy đủ để biết nguyên nhân và cách khắc phục chính xác.

03

Lấy API key (nếu bạn không muốn tự lưu trữ)

Lấy key miễn phí từ bảng điều khiển - 100 tín dụng miễn phí, không cần thẻ.

pip install requests
04

Gọi API được lưu trữ từ Python

Không cần pool proxy, không cần bảo trì chặn IP - chỉ là một yêu cầu HTTP:

import requests

response = requests.get(
    "https://getyoutubetranscript.com/api/v1/transcript",
    params={"v": "dQw4w9WgXcQ"},
    headers={"Authorization": "Bearer sk_live_..."},
)
result = response.json()

print(result["data"]["transcript"])
print(result["data"]["word_count"])

Một yêu cầu thất bại trả về một đối tượng lỗi thay vì ném ra một ngoại lệ riêng của thư viện, vì vậy cùng một cách xử lý lỗi hoạt động trên mọi endpoint.

{ "success": false, "code": "...", "message": "..." }
05

Lấy nhiều hơn một video

Lặp qua danh sách ID video hoạt động theo cùng cách - chỉ cần chú ý giới hạn số yêu cầu mỗi phút của gói bạn. Xem hướng dẫn giới hạn tốc độ để biết logic backoff và thử lại.

Cả hai cách tiếp cận đều trả về cùng thông tin - sự khác biệt là ai duy trì hạ tầng để nó tiếp tục hoạt động. Xem bảng giá đầy đủ (100 tín dụng miễn phí, không cần thẻ) hoặc đọc tài liệu API cho từng endpoint.

Câu hỏi thường gặp về chép lời YouTube bằng Python

Q01

Tôi nên dùng cách nào?

youtube-transcript-api cho một script cục bộ nhanh hoặc bản thử nghiệm. Một API được lưu trữ khi bạn triển khai lên production và không muốn tự duy trì các giải pháp proxy/chặn IP.

Q02

API được lưu trữ có cần thư viện youtube-transcript-api không?

Không - đó chỉ là một REST API thông thường. Gọi nó bằng bất kỳ HTTP client nào (requests, httpx, thậm chí curl); không cần phụ thuộc riêng của Python.

Q03

Tôi có thể lấy dấu thời gian cho từng dòng, không chỉ toàn bộ văn bản không?

Thư viện mã nguồn mở trả về trực tiếp thời điểm bắt đầu/thời lượng của từng đoạn. Endpoint chép lời của API được lưu trữ của chúng tôi hiện trả về toàn bộ bản chép lời dưới dạng văn bản phẳng cộng với số từ, không có dấu thời gian theo từng đoạn - nếu use case của bạn cần mức độ chi tiết đó cụ thể từ API, thư viện mã nguồn mở là lựa chọn phù hợp hơn hiện tại.

Q04

Điều gì xảy ra nếu video không có bản chép lời?

Cả hai cách đều trả về một lỗi cụ thể thay vì chuỗi rỗng - xem danh sách chẩn đoán để biết ý nghĩa của từng mã lỗi.

Liên quan