تلخيص فيديوهات على YouTube

يوضّح هذا الدليل التعليمي كيفية إنشاء تطبيق محادثات يسمح للمستخدمين بملخص فيديوهات YouTube والدردشة حول محتواها باستخدام لغة طبيعية.

  1. إعداد المشروع
  2. استيراد العناصر التابعة المطلوبة
  3. ضبط Genkit والنموذج التلقائي
  4. الحصول على عنوان URL للفيديو من سطر الأوامر
  5. إعداد الطلب
  6. إنشاء الردّ
  7. تشغيل التطبيق

المتطلبات الأساسية

قبل بدء العمل، يجب إعداد المتطلبات الأساسية التالية:

خطوات التنفيذ

بعد إعداد التبعيات، يمكنك إنشاء المشروع.

‫1- إعداد مشروعك

  1. أنشئ بنية دليل وملفًا لتخزين رمز المصدر.

    $ mkdir -p summarize-a-video/src && \
    cd summarize-a-video && \
    touch src/index.ts
    
  2. ابدأ مشروعًا جديدًا باستخدام TypeScript.

    $ npm init -y
    
  3. ثبِّت التبعيات التالية لـ Genkit لاستخدام Genkit في مشروعك:

    $ npm i genkit @genkit-ai/googleai
    
    • يوفّر genkit إمكانات Genkit الأساسية.
    • @genkit-ai/googleai يتيح الوصول إلى نماذج الذكاء الاصطناعي من Google في Gemini.
  4. الحصول على مفتاح واجهة برمجة التطبيقات للنموذج وضبطه

    لاستخدام Gemini API التي تستخدمها هذه المقالة التعليمية، عليك أولاً ضبط مفتاح واجهة برمجة التطبيقات. إذا لم يكن لديك مفتاح، أنشئ مفتاحًا في Google AI Studio.

    توفّر واجهة برمجة التطبيقات Gemini API فئة مجانية سخية ولا تتطلّب استخدام بطاقة ائتمان للبدء.

    بعد إنشاء مفتاح واجهة برمجة التطبيقات، اضبط المتغيّر GEMINI_API_KEY environment على مفتاحك باستخدام الأمر التالي:

    $ export GEMINI_API_KEY=<your API key>
    

‫2- استيراد العناصر التابعة المطلوبة

في ملف index.ts الذي أنشأته، أضِف السطور التالية لاستيراد التبعيات المطلوبة لهذا المشروع:

import { gemini, googleAI } from '@genkit-ai/googleai';
import { genkit } from 'genkit';
  • يستورد السطر الأول المكوّن الإضافي googleAI ودالّة gemini لتحميل النماذج من حزمة @genkit-ai/googleai، ما يتيح الوصول إلى نماذج Gemini من Google.

‫3- ضبط Genkit والنموذج التلقائي

أضِف الأسطر التالية لضبط Genkit وضبط Gemini 2.0 Flash على أنّه النموذج التلقائي.

const ai = genkit({
  plugins: [googleAI()],
  model: gemini('gemini-2.0-flash'),
});

يمكنك بعد ذلك إضافة هيكل للرمز البرمجي ومعالجة الأخطاء.

(async () => {
  try {
    // Step 1: get command line arguments

    // Step 2: construct prompt

    // Step 3: process video

  } catch (error) {
    console.error("Error processing video:", error);
  }
})(); // <-- don't forget the trailing parentheses to call the function!

‫4. تحليل سطر الأوامر والحصول على عنوان URL للفيديو

أضِف رمزًا لقراءة عنوان URL للفيديو الذي تم تمريره من سطر الأوامر.

  // Step 1: get command line arguments
  const videoURL = process.argv[2];
  if (!videoURL) {
    console.error("Please provide a video URL as a command line argument.");
    process.exit(1);
  }

5- إعداد الطلب

أضِف الرمز لإعداد الطلب:

  // Step 2: construct prompt
  const prompt = process.argv[3] || "Please summarize the following video:";
  • يحدِّد بيان const هذا طلبًا تلقائيًا إذا لم يقدِّم المستخدم طلبًا من سطر الأوامر.

‫6. إنشاء الردّ

أضِف الرمز البرمجي التالي لتمرير طلب متعدد الوسائط إلى النموذج:

  // Step 3: process video
  const { text } = await ai.generate({
    prompt: [
      { text: prompt },
      { media: { url: videoURL, contentType: "video/mp4" } }
    ],
  });
  console.log(text);

يستدعي مقتطف الرمز هذا الطريقة ai.generate لإرسال طلب متعدد الوسائط إلى النموذج. تتألّف رسالة المطالبة من جزأين:

  • { text: prompt }: هذا هو الطلب النصي الذي حدّدته سابقًا.
  • { media: { url: videoURL, contentType: "video/mp4" } }: هذا هو عنوان URL للفيديو الذي قدّمته كوسيطة سطر أوامر. يتم ضبط contentType على video/mp4 للإشارة إلى أنّ عنوان URL يشير إلى ملف فيديو بتنسيق MP4.

تعرض الطريقة ai.generate عنصرًا يحتوي على النص الذي تم إنشاؤه، والذي يتم تسجيله بعد ذلك في وحدة التحكّم.

7. تشغيل التطبيق

لتشغيل التطبيق، افتح وحدة التحكّم في التطبيقات في ملف ‎"ملف بدء" لمشروعك، ثم نفِّذ الأمر التالي:

npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q

بعد لحظات، سيظهر ملخص للفيديو الذي قدّمته.

يمكنك أيضًا إدخال طلبات أخرى. على سبيل المثال:

npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q "Transcribe this video"