AI Hunter
Member
Trong kỷ nguyên bùng nổ thông tin, "TL;DR" (Too Long; Didn't Read/Watch) là vấn đề ai cũng gặp phải. Bạn thấy một video kiến thức dài 45 phút trên YouTube rất hay, nhưng bạn không có thời gian xem hết?
Trong bài viết này, chúng ta sẽ viết một script Python đơn giản để:
1. Tự động lấy phụ đề (transcript) từ một video YouTube.
2. Sử dụng AI để tóm tắt các ý chính quan trọng nhất.
3. Gửi bản tóm tắt đó thẳng về tin nhắn Telegram của bạn.
Hệ thống hoạt động theo luồng dữ liệu sau:
Bạn cần cài đặt các thư viện sau:
Giải thích nhanh:
Để nhận tin nhắn, bạn cần 2 thông số: Bot Token và Chat ID. Hãy làm theo các bước sau:
2. Chat lệnh
3. BotFather sẽ đưa cho bạn một chuỗi ký tự dài (đó là Token). Ví dụ:
2. Tìm tiếp một bot khác tên là @userinfobot.
3. Chat bất kỳ câu gì với @userinfobot, nó sẽ trả về Id của bạn (thường là dãy số như:
Dưới đây là đoạn mã Python hoàn chỉnh kết nối các thành phần trên.
Chúc các bạn "hack" năng suất thành công!
Trong bài viết này, chúng ta sẽ viết một script Python đơn giản để:
1. Tự động lấy phụ đề (transcript) từ một video YouTube.
2. Sử dụng AI để tóm tắt các ý chính quan trọng nhất.
3. Gửi bản tóm tắt đó thẳng về tin nhắn Telegram của bạn.
1. Cơ chế hoạt động
Hệ thống hoạt động theo luồng dữ liệu sau:
Người dùng nhập Link YouTube -> Python lấy Transcript -> Gửi cho GPT tóm tắt -> Bắn tin nhắn qua Telegram API.2. Chuẩn bị "nguyên liệu"
Bạn cần cài đặt các thư viện sau:
Python:
pip install youtube-transcript-api openai requests
Giải thích nhanh:
- youtube-transcript-api: Thư viện giúp lấy phụ đề của video (hỗ trợ cả phụ đề thủ công và tự động tạo).
- openai: Để gọi model LLM tóm tắt văn bản.
- requests: Để gửi HTTP Request tới Telegram.
3. Cấu hình Telegram Bot (Quan trọng)
Để nhận tin nhắn, bạn cần 2 thông số: Bot Token và Chat ID. Hãy làm theo các bước sau:
Bước 1: Lấy Bot Token
1. Mở Telegram, tìm tài khoản @BotFather.2. Chat lệnh
/newbot và làm theo hướng dẫn đặt tên.3. BotFather sẽ đưa cho bạn một chuỗi ký tự dài (đó là Token). Ví dụ:
700123456:AAFw...Bước 2: Lấy Chat ID của bạn
1. Tìm và chat với bot bạn vừa tạo (bấm Start).2. Tìm tiếp một bot khác tên là @userinfobot.
3. Chat bất kỳ câu gì với @userinfobot, nó sẽ trả về Id của bạn (thường là dãy số như:
123456789).4. Triển khai Code
Dưới đây là đoạn mã Python hoàn chỉnh kết nối các thành phần trên.
Python:
import os
import requests
from urllib.parse import urlparse, parse_qs
from youtube_transcript_api import YouTubeTranscriptApi
from openai import OpenAI
# --- CẤU HÌNH (Điền thông tin của bạn vào đây) ---
TELEGRAM_BOT_TOKEN = "DIEN_TOKEN_CUA_BAN_VAO_DAY"
TELEGRAM_CHAT_ID = "DIEN_CHAT_ID_CUA_BAN_VAO_DAY"
OPENAI_API_KEY = "sk-..."
# Khởi tạo Client OpenAI
client = OpenAI(api_key=OPENAI_API_KEY)
def get_video_id(url):
"""Tách ID video từ đường link YouTube"""
query = urlparse(url)
if query.hostname == 'youtu.be':
return query.path[1:]
if query.hostname in ('www.youtube.com', 'youtube.com'):
if query.path == '/watch':
p = parse_qs(query.query)
return p['v'][0]
return None
def get_transcript(video_id):
"""Lấy phụ đề video và gộp thành một đoạn văn bản"""
try:
# Lấy transcript (ưu tiên tiếng Việt, nếu không có thì lấy tiếng Anh)
transcript_list = YouTubeTranscriptApi.get_transcript(video_id, languages=['vi', 'en'])
# Gộp các đoạn text lại
full_text = " ".join([item['text'] for item in transcript_list])
return full_text
except Exception as e:
print(f"Lỗi khi lấy phụ đề: {e}")
return None
def summarize_text(text):
"""Gửi text cho AI để tóm tắt"""
try:
prompt = f"""
Hãy tóm tắt nội dung transcript video sau đây thành 5 gạch đầu dòng quan trọng nhất.
Ngôn ngữ: Tiếng Việt.
Văn phong: Ngắn gọn, súc tích, đi thẳng vào vấn đề.
Nội dung:
{text[:10000]} # Giới hạn 10k ký tự để tránh lỗi token quá dài
"""
response = client.chat.completions.create(
model="gpt-4o-mini", # Dùng model mini cho rẻ và nhanh
messages=[
{"role": "system", "content": "Bạn là trợ lý tóm tắt tin tức chuyên nghiệp."},
{"role": "user", "content": prompt}
]
)
return response.choices[0].message.content
except Exception as e:
return f"Lỗi AI: {e}"
def send_telegram(message):
"""Gửi tin nhắn về Telegram"""
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
payload = {
"chat_id": TELEGRAM_CHAT_ID,
"text": message,
"parse_mode": "Markdown" # Để hiển thị chữ đậm/nghiêng đẹp hơn
}
requests.post(url, json=payload)
def main():
youtube_url = input("Nhập link video YouTube bạn muốn tóm tắt: ")
print("⏳ Đang xử lý...")
video_id = get_video_id(youtube_url)
if not video_id:
print("❌ Link YouTube không hợp lệ.")
return
# 1. Lấy nội dung
transcript = get_transcript(video_id)
if not transcript:
print("❌ Video này không có phụ đề (CC). Không thể tóm tắt.")
return
print("✅ Đã lấy được nội dung. Đang gửi cho AI tóm tắt...")
# 2. Tóm tắt
summary = summarize_text(transcript)
# 3. Gửi báo cáo
final_msg = f"*TÓM TẮT VIDEO:*\n{youtube_url}\n\n{summary}"
send_telegram(final_msg)
print("🚀 Đã gửi bản tóm tắt về Telegram của bạn!")
if __name__ == "__main__":
main()
5. Lưu ý và Mở rộng
- Giới hạn: Script này chỉ hoạt động với video có phụ đề (Closed Captions - CC). May mắn là YouTube hiện nay tự tạo phụ đề cho hầu hết các video.
- Xử lý Video không sub: Để nâng cao, bạn có thể tải file âm thanh (mp3) của video về và dùng model
Whispercủa OpenAI để chuyển giọng nói thành văn bản trước khi tóm tắt. - Ứng dụng: Bạn có thể treo script này trên server và lập lịch (cronjob) để mỗi sáng nó tự quét các kênh tin tức tài chính và gửi bản tin vắn tắt cho bạn.
Chúc các bạn "hack" năng suất thành công!
Bài viết liên quan