Chia sẻ bởi Little Excel
Bạn đã bao giờ muốn tra cứu nhanh thông tin một video trên YouTube như số lượt thích, lượt bình luận, hay thậm chí là tóm tắt nội dung video mà không cần phải gõ từng chữ? Trong bài viết này, chúng ta sẽ cùng nhau khám phá cách xây dựng một trợ lý ảo YouTube mạnh mẽ ngay trên Telegram. Điểm đặc biệt là trợ lý này không chỉ hiểu được văn bản bạn nhập vào mà còn có thể xử lý yêu cầu qua giọng nói, mang đến trải nghiệm tương tác vô cùng tiện lợi. Chúng ta sẽ sử dụng N8N để xây dựng luồng tự động hóa và Gemini AI của Google để xử lý ngôn ngữ tự nhiên và hiểu nội dung video.
Giới Thiệu Trợ Lý Ảo YouTube: Tra Cứu Thông Tin Video Bằng Giọng Nói Qua Telegram
Hãy tưởng tượng bạn đang di chuyển hoặc đơn giản là không tiện gõ phím. Với trợ lý ảo YouTube này, bạn chỉ cần:
- Gửi tin nhắn văn bản: Hỏi về số lượt thích, lượt bình luận của một video cụ thể (kèm link) hoặc yêu cầu tóm tắt nội dung video.
- Ghi âm giọng nói: Đặt câu hỏi tương tự bằng giọng nói tiếng Việt. Trợ lý sẽ tự động chuyển đổi giọng nói thành văn bản và xử lý yêu cầu.
Ví dụ, bạn có thể ghi âm và hỏi: "Bài hát Phút Ban Đầu của Vũ có bao nhiêu lượt thích?" và trợ lý sẽ trả về con số chính xác. Hoặc bạn gửi link một video và yêu cầu "Tóm tắt nội dung video này", trợ lý sẽ cung cấp một bản tóm tắt ngắn gọn.
Đây là một công cụ hữu ích cho những ai thường xuyên làm việc với YouTube, muốn cập nhật nhanh thông tin hoặc nắm bắt nội dung video mà không tốn nhiều thời gian.
Kiến Trúc Tổng Quan Của Trợ Lý Ảo YouTube trên N8N
Để xây dựng trợ lý ảo YouTube này, chúng ta sẽ dựa trên nền tảng tự động hóa N8N. Luồng hoạt động (workflow) trên N8N sẽ là trung tâm xử lý mọi yêu cầu từ người dùng qua Telegram. Các thành phần chính bao gồm:
- Telegram Trigger: Nhận tín hiệu (tin nhắn văn bản hoặc file ghi âm) từ người dùng qua bot Telegram.
- Switch Node: Phân loại loại tin nhắn đầu vào (văn bản, giọng nói, hình ảnh, v.v.). Trong phạm vi bài này, chúng ta tập trung xử lý văn bản và giọng nói.
- Xử lý Văn bản:
- Kiểm tra xem tin nhắn có chứa link YouTube không.
- Sử dụng AI Agent (Gemini Pro) với các "tool" được định nghĩa sẵn để hiểu yêu cầu và trích xuất thông tin.
- Xử lý Giọng nói:
- Lấy file ghi âm từ Telegram.
- Chuyển đổi file âm thanh sang định dạng base64.
- Sử dụng Gemini AI để chuyển đổi giọng nói thành văn bản (Speech-to-Text).
- Nếu văn bản không chứa link YouTube, sử dụng một AI Agent (Gemini Pro) khác để trích xuất tên video từ câu hỏi.
- Sử dụng Puppeteer để tìm kiếm video trên YouTube dựa trên tên và lấy link của video đầu tiên.
- Kết hợp link video với câu hỏi ban đầu để tạo prompt hoàn chỉnh.
- Sử dụng AI Agent (Gemini Pro) tương tự như luồng xử lý văn bản.
- Các Tool cho AI Agent:
get_content
Tool: Gửi yêu cầu đến Gemini API để hiểu sâu nội dung video (tóm tắt, dịch thuật, phân tích) từ URL được cung cấp.get_info
Tool: Gọi một workflow N8N khác sử dụng YouTube API để lấy thông tin cơ bản của video (likes, comments, views, tiêu đề) từ ID video.
- Telegram Sender: Gửi kết quả xử lý trở lại cho người dùng qua bot Telegram.
Nghe có vẻ phức tạp? Đừng lo, chúng ta sẽ đi vào chi tiết từng phần để bạn có thể dễ dàng hình dung và tự xây dựng.
Xử Lý Yêu Cầu Bằng Văn Bản: Lấy Thông Tin và Tóm Tắt Video
Đây là luồng đơn giản hơn trong hai luồng chính. Khi người dùng gửi một tin nhắn văn bản, quy trình sẽ diễn ra như sau:
1. Kích hoạt từ Telegram (Telegram Trigger)
Mỗi khi có tin nhắn mới gửi đến bot Telegram của bạn, node "Telegram Trigger" trong N8N sẽ được kích hoạt, khởi động toàn bộ workflow. Nó sẽ gửi một thông báo phản hồi nhanh kiểu "Đang tra cứu, vui lòng chờ chút..." để người dùng biết yêu cầu đã được tiếp nhận.
2. Phân loại Input (Switch Node)
Node "Switch" sẽ kiểm tra loại dữ liệu đầu vào. Trong trường hợp này, chúng ta quan tâm đến text
(văn bản). Nếu dữ liệu là văn bản, luồng sẽ đi theo nhánh xử lý văn bản.
3. Kiểm tra sự tồn tại của Link YouTube (If Node)
Một node "If" sẽ được sử dụng để kiểm tra xem nội dung tin nhắn văn bản có chứa một URL YouTube hợp lệ hay không.
- Nếu có link: Luồng sẽ tiếp tục đến AI Agent.
- Nếu không có link: Bot có thể phản hồi yêu cầu người dùng cung cấp link video hoặc thông báo lỗi.
4. AI Agent Xử Lý Yêu Cầu (Langchain Agent Node với Gemini Pro)
Đây là "bộ não" của trợ lý. Chúng ta sử dụng node "AI Agent" (có thể là Langchain Agent trong N8N) và kết nối với mô hình Gemini Pro của Google.
- System Prompt (Chỉ dẫn hệ thống): Đây là phần cực kỳ quan trọng. Chúng ta sẽ cung cấp một "system prompt" cho AI Agent, hướng dẫn nó cách hành xử và sử dụng các công cụ. Ví dụ:
Bạn là một trợ lý ảo hữu ích. Người dùng sẽ đặt câu hỏi về nội dung trên YouTube. - Nếu người dùng muốn hiểu video, dịch video, hoặc tóm tắt video: 1. Trích xuất URL video từ câu hỏi của người dùng. 2. Sử dụng tool "get_content" với URL và câu hỏi đó. 3. Trả lời bằng tiếng Việt. - Nếu người dùng muốn biết thông tin cơ bản (tiêu đề, lượt thích, lượt chia sẻ, lượt bình luận): 1. Trích xuất ID video từ URL trong câu hỏi của người dùng. 2. Sử dụng tool "get_info" với ID video đó. 3. Trả lời bằng tiếng Việt. - Nếu không thể xử lý, hãy trả lời "Tôi không biết".
- Input: Câu hỏi của người dùng (ví dụ: "Video này có bao nhiêu lượt thích? [link_video]" hoặc "Tóm tắt nội dung video này [link_video]").
- Tools: AI Agent sẽ được cung cấp hai công cụ chính (chúng ta sẽ tìm hiểu kỹ hơn ở Phần 5):
get_content
: Để hiểu sâu nội dung video.get_info
: Để lấy thông tin cơ bản.
AI Agent sẽ tự động quyết định sử dụng công cụ nào dựa trên câu hỏi của người dùng và chỉ dẫn trong system prompt.
5. Gửi Kết Quả (Telegram Sender)
Sau khi AI Agent xử lý và có câu trả lời, node "Telegram Sender" sẽ gửi thông tin này trở lại cho người dùng.
Ví dụ, nếu bạn hỏi: "Bài hát 'Bước Qua Mùa Cô Đơn' có nội dung gì? [link_video]", AI Agent sẽ sử dụng tool get_content
để tóm tắt video và trả về kết quả.
Xử Lý Yêu Cầu Bằng Giọng Nói: Chuyển Đổi và Tìm Kiếm Thông Minh
Đây là phần thú vị và phức tạp hơn, cho phép người dùng tương tác tự nhiên hơn với trợ lý ảo YouTube.
1. Kích hoạt và Phản hồi ban đầu
Tương tự như luồng văn bản, "Telegram Trigger" nhận file ghi âm và gửi phản hồi chờ.
2. Phân loại Input (Switch Node)
Lần này, "Switch Node" sẽ xác định input là voice
(ghi âm) và điều hướng luồng xử lý.
3. Lấy File Âm Thanh (Telegram Get File Node)
Khi nhận được tín hiệu là voice, chúng ta cần lấy file âm thanh thực sự. Node "Telegram Get File" sẽ sử dụng file_id
do Telegram cung cấp để tải về file âm thanh.
4. Chuyển Âm Thanh Sang Base64 (Move Binary Data Node)
Để gửi file âm thanh đến Gemini API cho việc nhận dạng giọng nói, chúng ta cần chuyển đổi nó sang định dạng Base64. Node "Move Binary Data" (hoặc một node tương tự có chức năng chuyển đổi binary sang Base64) sẽ thực hiện việc này.
5. Chuyển Giọng Nói Thành Văn Bản (HTTP Request Node với Gemini AI)
Đây là bước quan trọng để "hiểu" người dùng nói gì.
- Chúng ta sử dụng node "HTTP Request" để gửi yêu cầu POST đến API của Google Gemini (ví dụ:
generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent
). - API Key: Bạn cần cung cấp API Key của Google Gemini trong header hoặc URL. Lưu ý quan trọng: Luôn bảo mật API key của bạn, không chia sẻ công khai.
- Body Request: Nội dung request sẽ chứa dữ liệu âm thanh đã được mã hóa Base64 và một prompt đơn giản yêu cầu Gemini chuyển đổi giọng nói thành văn bản. Ví dụ:
{ "contents": [ { "parts": [ { "inlineData": { "mimeType": "audio/ogg", // Hoặc định dạng audio của bạn "data": "{{$json.data_base64}}" // Dữ liệu base64 từ bước trước } }, { "text": "Hãy chuyển lời nói trong đoạn âm thanh này thành văn bản. Nếu không nghe rõ, trả về 'KHONGHIEU'." } ] } ] }
- Gemini sẽ trả về văn bản được nhận dạng từ giọng nói.
6. Kiểm tra Kết quả Nhận Dạng (If Node)
Một node "If" sẽ kiểm tra xem Gemini có nhận dạng được giọng nói hay không (ví dụ, kết quả có phải là 'KHONGHIEU' không).
- Nếu không hiểu, bot có thể yêu cầu người dùng nói lại.
- Nếu hiểu, tiếp tục xử lý.
7. Xử Lý Trường Hợp Không Có Link YouTube Trong Câu Hỏi
Điểm khác biệt lớn của luồng giọng nói là người dùng thường không đọc link YouTube. Ví dụ, họ sẽ nói: "Tóm tắt bài hát Khu Vườn Tình Yêu của Tăng Duy Tân." Lúc này, chúng ta cần tìm link video đó.
-
Trích Xuất Tên Video (AI Agent Node):
- Sử dụng một node "AI Agent" (Gemini Pro) khác.
- Input: Văn bản đã được nhận dạng từ giọng nói (ví dụ: "Tóm tắt bài hát Khu Vườn Tình Yêu của Tăng Duy Tân").
- System Prompt:
Bạn là một trợ lý hữu ích. Người dùng muốn lấy tên video từ câu hỏi. Ví dụ: "Tóm tắt bài hát Khu Vườn Tình Yêu của Tăng Duy Tân" -> "Khu Vườn Tình Yêu Tăng Duy Tân". Chỉ trả về tên video đã được tối ưu để tìm kiếm.
- AI sẽ cố gắng trích xuất cụm từ khóa chính là tên video.
-
Encode URI (Code Node):
Tên video có thể chứa dấu cách hoặc ký tự đặc biệt. Để tạo URL tìm kiếm YouTube hợp lệ, chúng ta cần "encode" nó. Sử dụng node "Code" với JavaScript để thực hiệnencodeURIComponent()
cho tên video đã trích xuất. Ví dụ, "Khu Vườn Tình Yêu" sẽ thành "Khu%20Vuon%20Tinh%20Yeu". -
Tạo Link Tìm Kiếm YouTube:
Ghép phần đã encode vào URL tìm kiếm của YouTube:https://www.youtube.com/results?search_query=[encoded_video_name]
. -
Truy Cập và Lấy HTML Trang Kết Quả (Puppeteer Node):
- Sử dụng node "Puppeteer" để mở trình duyệt ảo, truy cập vào link tìm kiếm YouTube đã tạo. Puppeteer sẽ tải đầy đủ trang web, bao gồm cả nội dung được render bằng JavaScript (điều mà HTTP Request thông thường có thể không làm được).
- Node này sẽ trả về toàn bộ mã HTML của trang kết quả tìm kiếm.
-
Trích Xuất Link Video Đầu Tiên (HTML Extract Node):
- Sử dụng node "HTML Extract" với CSS Selector để tìm và trích xuất URL của video đầu tiên trong danh sách kết quả.
- Bạn cần "Inspect Element" trên trang kết quả YouTube để tìm CSS selector phù hợp cho tiêu đề video (thường là một thẻ
<a>
có id hoặc class đặc trưng nhưvideo-title
). Thuộc tính cần lấy làhref
. - Ví dụ CSS Selector:
a#video-title
- Kết quả sẽ là một URL dạng
/watch?v=VIDEO_ID
. Chúng ta cần ghép nó vớihttps://www.youtube.com
để có URL đầy đủ.
8. Kết Hợp Thông Tin và Gọi AI Agent Chính
Lúc này, chúng ta đã có:
- Câu hỏi gốc của người dùng (đã chuyển thành văn bản).
- Link video YouTube đã tìm được.
Sử dụng một node "Edit Fields" (hoặc "Set") để tạo một prompt mới, kết hợp câu hỏi gốc và link video vừa tìm được. Ví dụ: "Tóm tắt bài hát Khu Vườn Tình Yêu của Tăng Duy Tân https://www.youtube.com/watch?v=VIDEO_ID".
Sau đó, luồng này sẽ nhập vào node "AI Agent" chính (đã mô tả ở Phần 3) để xử lý yêu cầu tóm tắt hoặc lấy thông tin, tương tự như luồng văn bản.
9. Gửi Kết Quả
Cuối cùng, gửi câu trả lời cho người dùng qua Telegram.
Lưu ý: Việc tìm kiếm video bằng Puppeteer và trích xuất link có thể không phải lúc nào cũng chính xác 100%, đặc biệt nếu tên video quá chung chung. Tuy nhiên, trong nhiều trường hợp, nó hoạt động khá tốt.
Thiết Lập Các Tool Quan Trọng Cho AI Agent
Như đã đề cập, AI Agent của chúng ta sử dụng hai "công cụ" (tools) chính để thực hiện nhiệm vụ. Các công cụ này được định nghĩa trong N8N và AI Agent sẽ học cách sử dụng chúng thông qua System Prompt.
1. Tool get_content
(Hiểu Sâu Nội Dung Video)
Tool này được thiết kế để trả lời các câu hỏi liên quan đến nội dung bên trong video như tóm tắt, giải thích, dịch thuật.
- Loại Node: HTTP Request.
- Mục đích: Gửi yêu cầu đến API của Gemini Pro để nó "xem" và hiểu video từ một URL.
- Cấu hình:
- URL: Điểm cuối API của Gemini, ví dụ:
https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=YOUR_API_KEY
. - Method: POST.
- Body (JSON):
{ "contents": [ { "parts": [ { "text": "{{$parameters.prompt_user}}" }, // Câu hỏi/yêu cầu của người dùng { "fileData": { "mimeType": "video/youtube", // Hoặc video/* "fileUri": "{{$parameters.video_url}}" // URL video YouTube } } ] } ], "generationConfig": { // Tùy chọn "temperature": 0.7, "topP": 1, "maxOutputTokens": 2048 } }
- Input Parameters cho Tool (được AI Agent truyền vào):
prompt_user
: Câu hỏi cụ thể của người dùng (ví dụ: "Tóm tắt video này").video_url
: Link đầy đủ của video YouTube.
- URL: Điểm cuối API của Gemini, ví dụ:
- Mô tả cho AI Agent (trong phần định nghĩa tool của Langchain Agent):
"Dùng tool này để thu thập thông tin liên quan từ video như transcript, tóm tắt, hoặc các nội dung chi tiết bên trong video. Đầu vào gồm 'prompt_user' (yêu cầu của người dùng) và 'video_url' (link YouTube của video)."
Khi AI Agent quyết định sử dụng tool này, nó sẽ truyền prompt_user
và video_url
vào node HTTP Request này, node này sẽ gọi Gemini API, và Gemini sẽ xử lý video để trả về kết quả mong muốn.
2. Tool get_info
(Lấy Thông Tin Cơ Bản Video)
Tool này dùng để lấy các thông tin metadata của video như số lượt thích, lượt xem, lượt bình luận, tiêu đề, ngày đăng.
- Loại Node: Execute Workflow (N8N Workflow).
- Mục đích: Gọi một workflow N8N khác, workflow này chuyên biệt cho việc lấy thông tin video qua YouTube Data API. Việc tách ra workflow riêng giúp quản lý dễ dàng hơn và có thể tái sử dụng.
- Cấu hình Workflow con (sử dụng YouTube API):
- Workflow này sẽ có một "Webhook" trigger.
- Nó nhận đầu vào là
videoId
. - Sử dụng node "HTTP Request" để gọi đến YouTube Data API v3 (endpoint
videos
vớipart=snippet,statistics
vàid=videoId
). - Xử lý JSON trả về để lấy các thông tin cần thiết (title, likeCount, commentCount, viewCount, publishedAt).
- Trả về kết quả này.
- Cấu hình Tool trong AI Agent:
- Trỏ đến workflow N8N con đã tạo.
- Input Parameter cho Tool (được AI Agent truyền vào):
video_id
: ID của video YouTube (ví dụ:dQw4w9WgXcQ
).
- Mô tả cho AI Agent:
"Dùng tool này để lấy thông tin cơ bản về video như tiêu đề, số lượt thích, số lượt chia sẻ, số lượt bình luận. Đầu vào là 'video_id' (ID của video YouTube)."
Khi AI Agent cần lấy thông tin cơ bản, nó sẽ trích xuất video_id
từ link người dùng cung cấp, sau đó gọi tool get_info
với video_id
này. Workflow con sẽ thực thi và trả về dữ liệu.
Bằng cách định nghĩa rõ ràng các tool và cung cấp System Prompt chi tiết, AI Agent (Gemini Pro) có thể linh hoạt lựa chọn và sử dụng công cụ phù hợp cho từng loại yêu cầu của người dùng, tạo nên một trợ lý ảo YouTube thông minh và đa năng.
Kết Luận và Tiềm Năng Mở Rộng
Qua bài viết này, chúng ta đã cùng nhau tìm hiểu cách xây dựng một trợ lý ảo YouTube khá toàn diện bằng Telegram, N8N và sức mạnh của Gemini AI. Từ việc xử lý yêu cầu bằng văn bản đến nhận dạng giọng nói, trích xuất thông tin video, tóm tắt nội dung, tất cả đều được tự động hóa một cách thông minh.
Những điểm chính bạn đã học được:
- Cách thiết kế luồng xử lý riêng biệt cho input văn bản và giọng nói trên N8N.
- Sử dụng Gemini AI để chuyển đổi giọng nói thành văn bản.
- Kỹ thuật dùng Puppeteer và HTML Extract để tìm kiếm và trích xuất link video khi người dùng không cung cấp.
- Cách xây dựng và sử dụng các "tool" chuyên dụng cho AI Agent (Gemini Pro) để tương tác với Gemini API (hiểu nội dung video) và YouTube API (lấy thông tin metadata).
- Tầm quan trọng của System Prompt trong việc hướng dẫn AI Agent hoạt động chính xác.
Mặc dù quy trình có vẻ phức tạp với nhiều bước, nhưng khi đã nắm vững, bạn hoàn toàn có thể tùy chỉnh và mở rộng trợ lý ảo này cho nhiều mục đích khác nhau. Ví dụ:
- Thêm tính năng dịch phụ đề video.
- Lưu lại lịch sử tra cứu.
- Phân tích cảm xúc bình luận.
- Tạo thông báo khi kênh YouTube yêu thích có video mới.
Hy vọng rằng hướng dẫn chi tiết này sẽ giúp bạn tạo ra được những trợ lý ảo AI hữu ích, phục vụ cho công việc và cuộc sống hàng ngày. Chúc bạn thành công!