Hướng dẫn tóm tắt video YouTube siêu nhanh bằng Google Apps Script và Gemini AI

Viewed 3

Chia sẻ bởi Little Excel

Trong thời đại thông tin bùng nổ, video YouTube đã trở thành một nguồn kiến thức và giải trí khổng lồ. Tuy nhiên, không phải lúc nào chúng ta cũng có đủ thời gian để xem hết một video dài. Vậy làm thế nào để nắm bắt nội dung chính một cách nhanh chóng và hiệu quả? Bài viết này sẽ hướng dẫn bạn cách kết hợp sức mạnh của Google Apps Script và trí tuệ nhân tạo Gemini AI để tạo ra một công cụ tự động tóm tắt và phân tích nội dung video YouTube, giúp bạn tiết kiệm thời gian và tiếp thu thông tin hiệu quả hơn.

Tại Sao Lại Là Google Apps Script và Gemini AI Để Tóm Tắt Video?

Trước khi đi vào chi tiết cách thực hiện, hãy cùng tìm hiểu lý do tại sao sự kết hợp giữa Google Apps Script và Gemini AI lại là một giải pháp thú vị cho việc này.

Google Apps Script: Công Cụ Tự Động Hóa Đắc Lực

Nếu bạn đã quen thuộc với các sản phẩm của Google như Google Sheets, Docs, Drive, thì Google Apps Script chính là "cánh tay nối dài" giúp bạn tự động hóa vô số tác vụ. Đây là một nền tảng mã lệnh dựa trên JavaScript, cho phép bạn:

  • Tạo các hàm tùy chỉnh trong Google Sheets.
  • Tương tác với các dịch vụ khác của Google và cả các dịch vụ bên ngoài thông qua API.
  • Xây dựng các ứng dụng web nhỏ.
  • Tự động hóa các quy trình làm việc, giúp nâng cao năng suất đáng kể.

Trong dự án này, Google Apps Script sẽ đóng vai trò trung gian, nhận lệnh từ Google Sheet, gửi yêu cầu đến Gemini AI và hiển thị kết quả trở lại Sheet.

Gemini AI: Trí Tuệ Nhân Tạo Hiểu Video

Gemini AI của Google là một mô hình ngôn ngữ lớn đa phương thức, nổi bật với khả năng xử lý và hiểu không chỉ văn bản mà còn cả hình ảnh, âm thanh và video. Điều đặc biệt là Gemini AI cho phép chúng ta cung cấp trực tiếp link video YouTube làm đầu vào để nó phân tích.
So với các phương pháp truyền thống như chỉ phân tích phụ đề (transcript) của video, Gemini AI có những ưu điểm vượt trội:

  • Hiểu sâu hơn: Nó không chỉ đọc chữ mà còn "xem" hình ảnh, "nghe" âm thanh, từ đó nắm bắt được ngữ cảnh, cảm xúc và các yếu tố phi ngôn ngữ trong video.
  • Phân tích đa chiều: Gemini AI có thể nhận diện đối tượng, cảnh quay, nhịp điệu, thậm chí cả những chi tiết nhỏ mà việc đọc transcript đơn thuần không thể làm được.

Sự kết hợp này hứa hẹn một công cụ tóm tắt video mạnh mẽ và thông minh.

Hướng Dẫn Chi Tiết Xây Dựng Công Cụ Tóm Tắt Video YouTube với Google Apps Script

Bây giờ, chúng ta sẽ cùng nhau đi qua từng bước để xây dựng công cụ tóm tắt video YouTube.

1. Chuẩn Bị: Lấy API Key cho Gemini AI

Để sử dụng được Gemini AI, bạn cần có một API Key. Bạn có thể lấy API Key này từ Google AI Studio.
Sau khi có API Key, bạn cần lưu trữ nó một cách an toàn trong Google Apps Script của mình. Một cách đơn giản là tạo một biến để lưu trữ:

// Trong file Code.gs của bạn
const API_KEY = "YOUR_API_KEY_HERE"; // Thay YOUR_API_KEY_HERE bằng API Key của bạn

Lưu ý quan trọng: API Key là thông tin nhạy cảm, không nên chia sẻ công khai hoặc để lộ trong code nếu bạn chia sẻ script cho người khác.

2. Viết Hàm Gửi Yêu Cầu Đến Gemini AI (summaryVideo)

Hàm này sẽ có nhiệm vụ nhận URL video YouTube và một yêu cầu (ví dụ: "Tóm tắt nội dung chính của video này") từ người dùng, sau đó gửi thông tin này đến Gemini AI và nhận lại kết quả phân tích.

function summaryVideo(videoUrl, requestText) {
  const API_ENDPOINT = "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=" + API_KEY;

  const payload = {
    "contents": [
      {
        "parts": [
          { "text": requestText },
          {
            "file_data": {
              "mime_type": "video/youtube",
              "file_uri": videoUrl
            }
          }
        ]
      }
    ]
  };

  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  try {
    const response = UrlFetchApp.fetch(API_ENDPOINT, options);
    const responseText = response.getContentText();
    // Bước tiếp theo là xử lý responseText để lấy nội dung tóm tắt
    // (Xem mục 3)
    const parsedResponse = JSON.parse(responseText);
    // Dựa trên cấu trúc thường thấy của Gemini API response:
    // response.candidates[0].content.parts[0].text
    // Hoặc như trong video hướng dẫn, có thể đã được đơn giản hóa sau khi parse
    // Ví dụ, nếu cấu trúc là { "candidates": [{ "content": { "parts": [{ "text": "Nội dung" }] } }] }
    if (parsedResponse.candidates && parsedResponse.candidates[0] && parsedResponse.candidates[0].content && parsedResponse.candidates[0].content.parts && parsedResponse.candidates[0].content.parts[0]) {
      return parsedResponse.candidates[0].content.parts[0].text;
    } else if (parsedResponse.error) {
      console.error("Lỗi từ API Gemini: ", parsedResponse.error.message);
      return "Lỗi: " + parsedResponse.error.message;
    }
    return "Không tìm thấy nội dung trả về hoặc cấu trúc response không đúng.";

  } catch (e) {
    console.error("Lỗi khi gọi API: " + e.toString());
    return "Đã xảy ra lỗi khi cố gắng liên hệ với Gemini AI.";
  }
}

Giải thích hàm summaryVideo:

  • API_ENDPOINT: Đây là địa chỉ URL mà chúng ta sẽ gửi yêu cầu đến Gemini AI. Nó bao gồm cả API Key của bạn.
  • payload: Đây là dữ liệu chúng ta gửi đi, được định dạng dưới dạng JSON.
    • requestText: Chứa câu hỏi hoặc yêu cầu của bạn (ví dụ: "Bài hát này tên gì?", "Nội dung chính của video là gì?").
    • file_data: Chứa thông tin về video, bao gồm mime_typevideo/youtubefile_uri là đường link đến video YouTube.
  • options: Các tùy chọn cho yêu cầu HTTP, bao gồm phương thức post, contentTypeapplication/jsonpayload đã được chuyển thành chuỗi JSON.
  • UrlFetchApp.fetch(): Đây là hàm của Google Apps Script dùng để gửi yêu cầu HTTP.
  • response.getContentText(): Lấy nội dung trả về từ API dưới dạng văn bản (chuỗi JSON).

3. Xử Lý Dữ Liệu JSON Trả Về Từ Gemini AI

Dữ liệu Gemini AI trả về là một chuỗi JSON. Chúng ta cần "phân tích" (parse) chuỗi này để lấy ra phần nội dung tóm tắt hữu ích.
Trong video hướng dẫn, có đề cập đến việc sử dụng một công cụ online để xem cấu trúc JSON và tìm ra đường dẫn đến phần text cần thiết. Thông thường, với Gemini, phần văn bản trả về nằm trong một cấu trúc lồng nhau, ví dụ: response.candidates[0].content.parts[0].text.

Phần xử lý này đã được tích hợp vào hàm summaryVideo ở trên:

    // ... (code gửi request)
    const responseText = response.getContentText();
    const parsedResponse = JSON.parse(responseText); // Chuyển chuỗi JSON thành đối tượng JavaScript

    // Truy cập vào phần text chứa câu trả lời
    // Cấu trúc này có thể thay đổi tùy theo phiên bản API, cần kiểm tra tài liệu Gemini
    if (parsedResponse.candidates && parsedResponse.candidates[0] && parsedResponse.candidates[0].content && parsedResponse.candidates[0].content.parts && parsedResponse.candidates[0].content.parts[0]) {
      return parsedResponse.candidates[0].content.parts[0].text; // Trả về nội dung tóm tắt
    } else if (parsedResponse.error) {
        console.error("Lỗi từ API Gemini: ", parsedResponse.error.message);
        return "Lỗi: " + parsedResponse.error.message;
    }
    // Xử lý trường hợp không tìm thấy nội dung hoặc cấu trúc không như mong đợi
    return "Không tìm thấy nội dung trả về hoặc cấu trúc response không đúng.";

Hàm JSON.parse(responseText) sẽ chuyển chuỗi JSON thành một đối tượng JavaScript, giúp bạn dễ dàng truy cập các thuộc tính của nó. Sau đó, chúng ta return phần text chứa câu trả lời.

4. Thiết Kế Google Sheet và Viết Hàm Tương Tác (readAndWriteSheet)

Bây giờ, chúng ta sẽ tạo một hàm để đọc link video và yêu cầu từ Google Sheet, gọi hàm summaryVideo đã tạo, và sau đó ghi kết quả tóm tắt trở lại Google Sheet.

a. Thiết kế Google Sheet:
Mở một Google Sheet mới và thiết kế các cột như sau:

  • Cột A: Link Video YouTube (Nơi bạn dán link các video cần tóm tắt)
  • Cột B: Yêu Cầu/Câu Hỏi (Nơi bạn nhập câu hỏi hoặc yêu cầu cho Gemini AI, ví dụ: "Nội dung chính của video này là gì?", "Ca sĩ hát bài này là ai và nhịp điệu bài hát như thế nào?")
  • Cột C: Kết Quả Tóm Tắt (Cột này sẽ được script tự động điền vào)

b. Viết hàm readAndWriteSheet:

function readAndWriteSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("Sheet1"); // Đảm bảo tên sheet của bạn là "Sheet1" hoặc thay đổi cho phù hợp

  // Lấy dòng cuối cùng có dữ liệu để xử lý động
  const lastRow = sheet.getLastRow();
  if (lastRow < 2) { // Nếu không có dữ liệu (chỉ có header)
    Logger.log("Không có dữ liệu để xử lý.");
    return;
  }

  // Lấy danh sách URL video từ cột A (từ dòng 2 đến dòng cuối)
  const videoUrls = sheet.getRange("A2:A" + lastRow).getValues();
  // Lấy danh sách yêu cầu từ cột B
  const requests = sheet.getRange("B2:B" + lastRow).getValues();

  // Lặp qua từng dòng dữ liệu
  for (let i = 0; i < videoUrls.length; i++) {
    const currentVideoUrl = videoUrls[i][0]; // Lấy URL từ mảng
    const currentRequest = requests[i][0];   // Lấy yêu cầu từ mảng

    // Kiểm tra xem dòng đó đã có URL và yêu cầu chưa
    if (currentVideoUrl && currentRequest) {
      Logger.log(`Đang xử lý video: ${currentVideoUrl} với yêu cầu: ${currentRequest}`);
      
      // Gọi hàm summaryVideo để lấy tóm tắt
      const summary = summaryVideo(currentVideoUrl, currentRequest);
      
      // Ghi kết quả vào cột C, tương ứng với dòng hiện tại (i+2 vì mảng bắt đầu từ 0, sheet từ dòng 2)
      sheet.getRange("C" + (i + 2)).setValue(summary);
      Logger.log(`Kết quả cho video ${i+1}: ${summary}`);
    }
  }
  Logger.log("Hoàn tất xử lý!");
}

Giải thích hàm readAndWriteSheet:

  • SpreadsheetApp.getActiveSpreadsheet(): Lấy Google Sheet hiện tại đang mở.
  • getSheetByName("Sheet1"): Chọn sheet có tên là "Sheet1".
  • sheet.getLastRow(): Tìm ra dòng cuối cùng có chứa dữ liệu trong sheet.
  • sheet.getRange("A2:A" + lastRow).getValues(): Lấy tất cả giá trị từ cột A, bắt đầu từ ô A2 đến ô A ở dòng cuối cùng. Tương tự cho cột B. getValues() trả về một mảng hai chiều.
  • Vòng lặp for: Duyệt qua từng video và yêu cầu.
  • videoUrls[i][0]requests[i][0]: Truy cập vào giá trị cụ thể trong mảng (vì getValues() trả về mảng của các mảng, mỗi mảng con đại diện cho một ô).
  • sheet.getRange("C" + (i + 2)).setValue(summary): Ghi kết quả tóm tắt summary vào ô tương ứng ở cột C. (i + 2) vì vòng lặp i bắt đầu từ 0, nhưng dữ liệu trong sheet bắt đầu từ dòng 2.

5. Kết Nối và Chạy Thử Nghiệm

  1. Mở Google Sheet của bạn.
  2. Vào Extensions > Apps Script.
  3. Dán toàn bộ code của hàm API_KEY, summaryVideo, và readAndWriteSheet vào trình soạn thảo Code.gs. Nhớ thay YOUR_API_KEY_HERE bằng API Key thật của bạn.
  4. Lưu lại project (biểu tượng đĩa mềm).
  5. Trong Google Sheet, nhập một vài link video YouTube vào cột A và các câu hỏi/yêu cầu tương ứng vào cột B.
    • Ví dụ video 1 (bài hát): https://www.youtube.com/watch?v=your_song_video_id - Yêu cầu: "Bài hát này tên gì, do ai sáng tác và ai trình bày? Nội dung bài hát nói về điều gì?"
    • Ví dụ video 2 (drone): https://www.youtube.com/watch?v=your_drone_video_id - Yêu cầu: "Video này nói về cái gì? Có chi tiết nào nổi bật không?"
  6. Quay lại trình soạn thảo Apps Script. Từ thanh menu phía trên trình soạn thảo, chọn hàm readAndWriteSheet trong danh sách thả xuống bên cạnh nút "Debug" (biểu tượng con bọ) và nhấn nút "Run" (biểu tượng tam giác ▶).
  7. Lần đầu chạy, Google sẽ yêu cầu bạn cấp quyền cho script. Hãy xem xét và chấp nhận các quyền này.
  8. Chờ script chạy xong. Quay lại Google Sheet của bạn, bạn sẽ thấy kết quả tóm tắt xuất hiện ở cột C.

Bạn có thể theo dõi log thực thi bằng cách vào View > Logs trong trình soạn thảo Apps Script để xem các thông báo Logger.log hoặc thông báo lỗi (nếu có).

Cơ Chế Phân Tích Video Của Gemini AI: Không Chỉ Là Transcript

Một điều thú vị được đề cập trong video gốc là cách Gemini AI phân tích video. Nó không chỉ đơn thuần dựa vào metadata (thông tin mô tả video) hay transcript (phụ đề). Gemini AI thực sự "xem" và "nghe" video:

  • Lấy Mẫu Khung Hình (Sampling Frames): Gemini AI sẽ xử lý video bằng cách lấy mẫu các khung hình. Ví dụ, một video có thể được quay ở tốc độ 30 khung hình/giây (FPS), nhưng AI có thể chỉ lấy 1 khung hình mỗi giây (1 FPS) để phân tích. Điều này giúp giảm tải xử lý mà vẫn nắm bắt được các thay đổi hình ảnh quan trọng.
  • Phân Tích Hình Ảnh: Từng khung hình được lấy mẫu sẽ được phân tích để nhận diện đối tượng, cảnh vật, hành động, màu sắc, và các yếu tố hình ảnh khác.
  • Phân Tích Âm Thanh: Song song đó, âm thanh của video (bao gồm lời nói, nhạc nền, tiếng động) cũng được xử lý để nhận diện nhịp điệu, cảm xúc, và trích xuất thông tin từ lời nói.
  • Kết Hợp Thông Tin: Sau khi phân tích riêng lẻ hình ảnh và âm thanh, Gemini AI sẽ kết hợp các thông tin này lại để có một cái nhìn tổng thể và sâu sắc về nội dung video.

Chính nhờ khả năng phân tích đa phương thức này mà Gemini AI có thể đưa ra những câu trả lời chi tiết và chính xác, vượt xa khả năng của các công cụ chỉ dựa vào văn bản. Ví dụ, nó có thể nhận ra tên ca sĩ, nhạc sĩ dù chất lượng hình ảnh MV không cao, phân tích được nhịp điệu bài hát, mô tả các cảnh quay ẩn dụ, hay thậm chí nhận diện được cả loại đường đua và điều kiện thời tiết trong một video về drone đua.

Đánh Giá Kết Quả và Lợi Ích Thực Tế

Qua các ví dụ thử nghiệm trong video gốc:

  • Với video ca nhạc "Ước Gì Trăm Năm Cuộc Đời" của Hồ Quỳnh Hương: AI đã xác định chính xác tên bài hát, nhạc sĩ Đức Trí, ca sĩ Hồ Quỳnh Hương, phân tích nhịp điệu là Pop Ballad chậm rãi, nội dung bài hát về tâm trạng của một cô gái, và thậm chí mô tả các hình ảnh ẩn dụ trong MV khớp với lời bài hát. Điều này cho thấy AI không chỉ đọc thông tin bề mặt mà còn hiểu được cả ý nghĩa và cảm xúc.
  • Với video về drone của Red Bull đuổi theo xe F1: AI đã nhận diện được nội dung video, chiếc xe đua trên đường đua Silverstone, điều kiện thời tiết mưa và đường ướt, và vệt nước phía sau xe do lốp đẩy nước.

Những kết quả này cho thấy khả năng phân tích video của Gemini AI là rất ấn tượng. Lợi ích thực tế của công cụ này là rất lớn:

  • Tiết kiệm thời gian: Nhanh chóng nắm bắt ý chính của video mà không cần xem toàn bộ.
  • Hỗ trợ học tập và nghiên cứu: Dễ dàng tóm tắt video bài giảng, tài liệu, hội thảo.
  • Sáng tạo nội dung: Tìm kiếm ý tưởng, tham khảo nhanh từ các video liên quan.
  • Tăng hiệu suất công việc: Xử lý thông tin từ video một cách hiệu quả hơn.

Theo thông tin tại thời điểm video được tạo, việc sử dụng Gemini AI qua API cho các tác vụ này là miễn phí (trong giới hạn nhất định). Đây là cơ hội tốt để bạn trải nghiệm và ứng dụng công nghệ này.

Kết Luận: Mở Ra Tiềm Năng Mới Cho Việc Xử Lý Video

Việc kết hợp Google Apps Script và Gemini AI để tạo ra một công cụ tóm tắt video YouTube tự động không chỉ là một bài thực hành lập trình thú vị mà còn mở ra những tiềm năng to lớn trong cách chúng ta tương tác và xử lý thông tin từ video. Khả năng "hiểu" nội dung đa phương thức của AI đang ngày càng phát triển, hứa hẹn sẽ mang lại nhiều ứng dụng hữu ích hơn nữa trong tương lai.

Hãy thử tự xây dựng công cụ này theo hướng dẫn và trải nghiệm sức mạnh của AI trong việc tối ưu hóa cách bạn tiếp thu thông tin từ YouTube. Chúc bạn thành công!

0 Answers