AI Hunter
Member
Bạn tìm thấy một video hướng dẫn lập trình dài 2 tiếng, hoặc một bài phân tích tài chính dài lê thê? Bạn muốn biết nội dung chính ngay lập tức mà không cần ngồi xem hết?
Trong bài viết này, chúng ta sẽ viết một tool Python giúp:
Hệ thống hoạt động theo 3 bước đơn giản:
1. **Input:** Bạn nhập Link YouTube.
2. **Extraction:** Tool dùng API để lấy file phụ đề (caption) ẩn của video.
3. **Summarization:** Gửi toàn bộ văn bản đó cho GPT-4o (hoặc GPT-3.5) kèm câu lệnh: "Hãy tóm tắt nội dung này".
Chúng ta cần 2 thư viện chính:
* `youtube-transcript-api`: Để "đào" phụ đề từ YouTube (Không cần API Key của Google).
* `openai`: Để xử lý ngôn ngữ.
Dưới đây là đoạn code Python hoàn chỉnh (`youtube_summary.py`).
Trường hợp Video không có phụ đề (CC)?
Thư viện `youtube-transcript-api` chỉ hoạt động với video có phụ đề (do người đăng tạo hoặc do YouTube tạo tự động). Nếu video không có CC, tool sẽ báo lỗi.
Giải pháp nâng cao: Dùng thư viện `OpenAI Whisper` để tải audio về và chuyển đổi sang text (tuy nhiên cách này tốn kém và xử lý lâu hơn).
Xử lý Video quá dài?
Nếu video dài 3-4 tiếng, lượng text sẽ rất lớn. Trong code trên tôi đã dùng thủ thuật cắt lấy 20.000 ký tự đầu. Nếu bạn muốn tóm tắt toàn bộ, hãy dùng các model có cửa sổ ngữ cảnh (Context Window) lớn như `gpt-4-turbo-128k` hoặc `gemini-1.5-pro`.
Bạn có thể phát triển tool này thành:
Chúc các bạn tiết kiệm được hàng ngàn giờ xem video với công cụ này!
Trong bài viết này, chúng ta sẽ viết một tool Python giúp:
- Tự động lấy phụ đề (Transcript): Trích xuất toàn bộ lời thoại trong video.
- Tóm tắt thông minh: Dùng AI để cô đọng nội dung thành 5-10 gạch đầu dòng quan trọng nhất.
- Hỗ trợ đa ngôn ngữ: Video tiếng Anh nhưng tóm tắt ra tiếng Việt.
1. Nguyên lý hoạt động
Hệ thống hoạt động theo 3 bước đơn giản:
1. **Input:** Bạn nhập Link YouTube.
2. **Extraction:** Tool dùng API để lấy file phụ đề (caption) ẩn của video.
3. **Summarization:** Gửi toàn bộ văn bản đó cho GPT-4o (hoặc GPT-3.5) kèm câu lệnh: "Hãy tóm tắt nội dung này".
2. Cài đặt thư viện
Chúng ta cần 2 thư viện chính:
* `youtube-transcript-api`: Để "đào" phụ đề từ YouTube (Không cần API Key của Google).
* `openai`: Để xử lý ngôn ngữ.
Mã:
pip install youtube-transcript-api openai
3. Triển khai Code (Full Source)
Dưới đây là đoạn code Python hoàn chỉnh (`youtube_summary.py`).
Python:
import re
import os
from youtube_transcript_api import YouTubeTranscriptApi
from youtube_transcript_api.formatters import TextFormatter
from openai import OpenAI
# --- CẤU HÌNH ---
# Điền API Key OpenAI của bạn (hoặc set biến môi trường)
os.environ["OPENAI_API_KEY"] = "sk-YOUR_OPENAI_API_KEY"
client = OpenAI()
def extract_video_id(url):
"""Lấy Video ID từ URL YouTube"""
# Hỗ trợ các dạng: youtube.com/watch?v=ID, youtu.be/ID
regex = r"(?:v=|\/)([0-9A-Za-z_-]{11}).*"
match = re.search(regex, url)
if match:
return match.group(1)
return None
def get_transcript(video_id):
"""Lấy phụ đề video và gộp thành văn bản"""
try:
# Ưu tiên lấy tiếng Việt (vi), nếu không có thì lấy tiếng Anh (en)
transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=['vi', 'en'])
# Định dạng lại thành văn bản thuần túy
formatter = TextFormatter()
text_formatted = formatter.format_transcript(transcript)
# Loại bỏ các ký tự xuống dòng thừa để tiết kiệm token
return text_formatted.replace("\n", " ")
except Exception as e:
print(f"❌ Lỗi lấy phụ đề: {e}")
return None
def summarize_text(text):
"""Gửi văn bản cho AI tóm tắt"""
print("🧠 AI đang đọc và tóm tắt (Vui lòng đợi)...")
# Giới hạn độ dài input nếu video quá dài (để tránh lỗi token limit của model thường)
# GPT-4o xử lý được rất dài (128k token), nhưng để tiết kiệm ta lấy khoảng 20.000 ký tự đầu
truncated_text = text[:20000]
prompt = f"""
Hãy đóng vai một trợ lý thông minh. Nhiệm vụ của bạn là tóm tắt nội dung video YouTube dựa trên phụ đề được cung cấp dưới đây.
Yêu cầu:
1. Tóm tắt bằng Tiếng Việt.
2. Bắt đầu bằng một câu mô tả tổng quan nội dung video.
3. Liệt kê 5-7 ý chính quan trọng nhất bằng gạch đầu dòng.
4. Giọng văn ngắn gọn, súc tích, đi thẳng vào vấn đề.
Phụ đề video:
{truncated_text}
"""
response = client.chat.completions.create(
model="gpt-4o", # Hoặc gpt-3.5-turbo-16k
messages=[{"role": "user", "content": prompt}],
temperature=0.5
)
return response.choices[0].message.content
def main():
print("--- TOOL TÓM TẮT VIDEO YOUTUBE ---")
url = input("Nhập link YouTube video: ")
# 1. Lấy ID
video_id = extract_video_id(url)
if not video_id:
print("❌ Link không hợp lệ!")
return
print(f"✅ Đã tìm thấy Video ID: {video_id}")
# 2. Lấy phụ đề
print("📥 Đang tải phụ đề...")
transcript_text = get_transcript(video_id)
if transcript_text:
# In ra độ dài văn bản để kiểm tra
print(f"✅ Đã tải xong! Độ dài văn bản: {len(transcript_text)} ký tự.")
# 3. Tóm tắt
summary = summarize_text(transcript_text)
print("\n" + "="*40)
print("KẾT QUẢ TÓM TẮT:")
print("="*40)
print(summary)
print("="*40)
# Lưu ra file
with open(f"summary_{video_id}.txt", "w", encoding="utf-8") as f:
f.write(summary)
print(f"\n📁 Đã lưu kết quả vào file: summary_{video_id}.txt")
else:
print("⚠️ Video này không có phụ đề (CC) hoặc bị chặn!")
if __name__ == "__main__":
main()
4. Hướng dẫn sử dụng & Mẹo
Trường hợp Video không có phụ đề (CC)?
Thư viện `youtube-transcript-api` chỉ hoạt động với video có phụ đề (do người đăng tạo hoặc do YouTube tạo tự động). Nếu video không có CC, tool sẽ báo lỗi.
Giải pháp nâng cao: Dùng thư viện `OpenAI Whisper` để tải audio về và chuyển đổi sang text (tuy nhiên cách này tốn kém và xử lý lâu hơn).
Xử lý Video quá dài?
Nếu video dài 3-4 tiếng, lượng text sẽ rất lớn. Trong code trên tôi đã dùng thủ thuật cắt lấy 20.000 ký tự đầu. Nếu bạn muốn tóm tắt toàn bộ, hãy dùng các model có cửa sổ ngữ cảnh (Context Window) lớn như `gpt-4-turbo-128k` hoặc `gemini-1.5-pro`.
5. Ứng dụng thực tế
Bạn có thể phát triển tool này thành:
- Telegram Bot: Gửi link cho Bot, Bot trả về tóm tắt.
- Web Extension: Cài vào Chrome, hiện nút "Tóm tắt" ngay cạnh video đang xem.
- Content Repurpose: Biến video của người khác thành bài Blog post trên web của mình (nhớ ghi nguồn).
Chúc các bạn tiết kiệm được hàng ngàn giờ xem video với công cụ này!
Bài viết liên quan