برنامه نویسی

آنچه من از ردیابی فعالیت یوتیوب فرزندم آموختم

در فرزندپروری مدرن ، مسدود کردن YouTube به طور کامل دشوار است. وقتی کودک بودم ، گزینه های محدودی برای محتوای ویدیویی داشتم ، یا تماشای تلویزیون در زمان واقعی یا مشاهده فیلم های از پیش ضبط شده در VHS یا DVD. با این حال ، کودکان امروز از سکوهایی مانند YouTube از سنین جوانی در معرض محتوای بی پایان هستند. در حالی که این فواید آن را دارد ، مانند کشف ژانرهای جدید یا یادگیری دانش طاقچه که حتی بزرگسالان ممکن است از آن آگاه نباشند ، مواقعی وجود دارد که اعتیاد شدید یوتیوب تعجب آور است. بچه ها می خواهند در لحظات یدکی آن را تماشا کنند ، و حتی وقتی خارج از خانه هستیم.

تا زمانی که کودکان به سن دبستان برسند ، والدین معمولاً می توانند استفاده از یوتیوب خود را مدیریت کنند ، اما پس از بزرگتر شدن ، آنها شروع به جستجوی فیلم های جدید و بررسی توصیه ها به تنهایی می کنند. در خانواده ما متوجه شدیم که فرزند ما به تدریج فقط YouTubers بازی را تماشا می کند ، و ما شروع به فکر کردن در مورد چه کاری می کنیم. خوشبختانه ، YouTube به شما امکان می دهد داده های ردیابی را استخراج کنید ، بنابراین من تصمیم گرفتم ابزاری را ایجاد کنم که به ما اجازه دهد با پردازش آن داده ها فعالیت آنها را کنترل کنیم.

مفهوم

اطلاعات موجود از تاریخ YouTube شامل سه نکته اصلی است: عنوان ، آپلود کننده و زمان بندی زمان شروع. با توجه به پیشینه حرفه ای من ، من داشبورد و سیستم های گزارشگری بی شماری ایجاد کرده ام و فهمیدم که در بیشتر موارد ، استفاده از آن به مرور زمان کاهش می یابد. هنگام ساختن یک سیستم گزارشگری ، به راحتی می توان در تجسم و غنی سازی داده ها با جزئیات بیشتر گرفتار شد. با این حال ، برای این هدف خاص ، من ایده “ساده بهترین” را در ذهن نگه داشتم و اطلاعات لازم را از طریق دو دیدگاه تصحیح کردم:

  1. مشاهده چشم انداز زمان

    1. زمان مشاهده کل
    2. زمان مشاهده روزانه
  2. چشم انداز محتوا

    1. زمان مشاهده توسط کانال
    2. استخراج محتوای نامطلوب

زمان مشاهده

از آنجا که تنها داده های موجود ، زمان بندی زمان شروع بود ، من با مقایسه تفاوت با داده های قبلی ، زمان مشاهده را محاسبه کردم. من همچنین یک قاعده را تنظیم کردم تا هرگونه فاصله مشاهده 90 دقیقه یا بیشتر را به عنوان پایان یک جلسه درمان کنم. اگر هیچ داده ای برای پایان جلسه وجود نداشت یا فقط یک فیلم در یک روز مشاهده می شد ، من نمی توانم تفاوت را محاسبه کنم ، بنابراین من این شکاف ها را با مقادیر تقریبی جلسه یا مقادیر تقریبی از پیش تنظیم کردم.

محتوا

پس از محاسبه زمان مشاهده ، زمان مشاهده توسط کانال به سادگی جمع می شود. برای استخراج محتوای نامطلوب ، من از API OpenAI برای ارزیابی اینکه آیا یک عنوان به طور بالقوه می تواند به کودکان متولد شده در “yyyy/mm” آسیب برساند ، استفاده کردم. این داوری در مقیاس 4 سطح ساخته شده است ، و عناوین با عنوان “بالقوه مضر (سطح 3)” یا “مضر (سطح 4)” گزارش شده است.

اجرای

برای این پروژه ، من از GAS (Google Apps Script) ، یک ابزار اتوماسیون ساده از Google استفاده کردم. در حالی که من ادغام داشبورد و پیوند با برنامه های مسنجر را در نظر گرفتم ، هدف اصلی نظارت بر اعداد و محتوا بود. بنابراین ، من آن را ساده نگه داشتم و بیشتر کار را در اکوسیستم Google انجام دادم.

محتوای تحویل

با استفاده از گاز ، من یک سیستم ساده را برای ارسال گزارش ها به یک آدرس ایمیل مشخص با متن و نمودارهای پیوست تنظیم کردم. هنگامی که دستور اجرا شد ، محتوای گزارش از طریق ایمیل به همسرم و من ارسال می شود ، همانطور که در مثال زیر نشان داده شده است (نام/نام کانال به موارد ساختگی تغییر یافته است).


در اینجا آخرین گزارش زمان ساعت YouTube شما است.
دوره: 2025-01-24 (پنجشنبه)-2025-02-13 (WED)

++++++++++++++++++++++++++++
زمان کل ساعت: 11h 41m
++++++++++++++++++++++++++++

■■■ نمای کلی:
تجزیه و تحلیل تاریخ YouTube:

  • ایمن (سطح 1): 131 فیلم
  • ملایم نامناسب (سطح 2): 3 فیلم
  • به طور بالقوه مضر (سطح 3): 1 فیلم
  • مضر (سطح 4): 0 فیلم

پروژه همکاری: “بازی مخفی و جستجو که در آنجا مورد حمله یک دلقک دیوانه در یک هتل خصوصی قرار می گیرید مجنون است … [Screaming]”

10 کانال برتر برتر:

  • زندگی صنایع دستی: 6 ساعت 30 متر
  • دنیای صنایع دستی: 0h 58m
  • بازی Master XYZ: 0H 51m
  • Akane-Iro: 0h 39m
  • مردان بازی می کنند: 0h 32m
  • اکنون ورزش: 0h 24 متر
  • تلویزیون سازندگان: 0h 18m
  • استودیوی اودین: 0h 16m
  • نمایشنامه Hikaru: 0h 8m
  • نکات برجسته فوتبال: 0h 7m

■■■ زمان ساعت ساعت:
تاریخ: TotalWatchTime (StartTime)

  • 2025-01-24 (پنج شنبه): 0h 40m (11:27)
  • 2025-01-25 (جمعه): —- (-:-)
  • 2025-01-26 (شنبه): 0h 57m (08:49)
  • 2025-01-27 (خورشید): —- (-:-)
  • 2025-01-28 (دوشنبه): —- (-:-)
  • 2025-01-29 (کشتن): 0h 10m (17:04)
  • 2025-01-30 (چهارشنبه): —- (-:-)
  • 2025-01-31 (پنج شنبه): —- (-:-)
  • 2025-02-01 (جمعه): 2H 11m (15:52)
  • 2025-02-02 (SAT): 0H 45M (15:30)
  • 2025-02-03 (خورشید): 1H 23M (15:59)
  • 2025-02-04 (دوشنبه): —- (-:-)
  • 2025-02-05 (کشتن): 0h 21m (17:00)
  • 2025-02-06 (چهارشنبه): —- (-:-)
  • 2025-07 (شما): 1H 9 صبح (14:55)
  • 2025-02-08 (جمعه): —- (-:-)
  • 2025-09 (SAT): 2H 26M (06:53)
  • 2025-02-10 (خورشید): —- (-:-)
  • 2025-02-11 (دوشنبه): —- (-:-)
  • 2025-02-12 (سه شنبه): —- (-:-)
  • 2025-02-13 (چهارشنبه): 1H 39M (15:30)

====================

ساعت مچی


جوانب مثبت و منفی

نکات موفقیت

  • زمان مشاهده کودکان با سطح مناسب از کیفیت تجسم شده است.
    • این امکان را برای بحث با کودک بر اساس داده ها فراهم می کند و ذهنیت را از بین می برد.
    • ما می توانیم تأیید کنیم که کودک در اوایل گذشته از خواب بیدار شده بود تا یوتیوب را تماشا کند.
    • ما در مورد کانال های اصلی مشاهده کودک بینش گرفتیم.
    • در حالی که من می دانستم کودک در حال تماشای بازی های صنایع دستی است ، معلوم شد که آنها بیشتر در حال تماشای بازی بودند.
    • با کمال تعجب ، فوتبال ، یک سرگرمی دیگر ، زیاد تماشا نمی شد.
  • ما می توانیم عناوینی را بررسی کنیم که ممکن است تأثیر مضر داشته باشد.
    • از آنجا که این امر همچنین بر پیشنهادات تأثیر می گذارد ، من هر عناوین مضر را از تاریخ یک بار بررسی می کنم.

امتیاز برای بهبود

  • کاملاً خودکار نیست.
    • YouTube Takeout فقط می تواند به صورت دو ماهه ، تا 6 بار برنامه ریزی شود.
    • برای گزارش های ماهانه ، استخراج داده ها برای دو ماه متوالی نیاز به تنظیم تاریخ مشخص دارد.
    • همچنین محدودیت هایی با حساب کودک وجود دارد …
  • محدودیت در حساب کودک:
    • نمی توان با گاز برای حساب کودک خودکار کرد.
    • نمی توانید ایمیل را از حساب کودک ارسال کنید.
  • اطلاعات محدود در دسترس است.
    • بر اساس عنوان ، بارگذاری و زمان شروع ، در محدوده داده های موجود ایجاد شده است.
    • اگر اطلاعات غنی تر از طریق API YouTube می توان دریافت کرد …

پس از ایجاد گزارش ، من آن را با فرزندم بحث کردم و از اینکه چقدر بیشتر از آنچه انتظار می رفت تماشا می کردند ، تعجب کردم. من همچنین فهمیدم که به عنوان والدین ، ​​ما به دلیل شلوغ بودن خودمان اجازه تماشای مداوم YouTube را کردیم. من قصد دارم گزینه های بهتری را برای کودک آماده کنم تا وقت خود را در خارج از فیلم ها بگذراند.

جزئیات فنی

از آنجا که این اولین بار بود که من از گاز استفاده می کردم ، من با اصل سادگی و اولویت بندی خدمات Google به آن نزدیک شدم. در زیر خدمات مورد استفاده و اهداف مربوطه آنها وجود دارد:

  • Google Takeout: داده های YouTube را بازیابی کنید و اجرای دوره ای را تنظیم کنید.
  • اسناد: انتقال داده ها بین والدین و فرزند را منتقل کنید و داده های مختلفی را ذخیره کنید.
  • صفحات گسترده: داده های JSON را گسترش داده و نمودارها را ایجاد کنید.
  • گیمیل: ارسال ایمیل گزارش.
  • گاز: یکپارچه سازی و اجرای خدمات و همچنین انجام محاسبات عددی برای گزارش.
  • Openai: خطر احتمالی عناوین ویدیویی را ارزیابی کنید.

جریان داده به شرح زیر است:
جریان داده ها

نکاتی که باید در حین اجرای آن در نظر بگیرید

کد در این مخزن git موجود است.

بازیابی داده ها

از آنجا که YouTube در یک حساب خاص کودک مشاهده می شود ، داده های تاریخ مشاهده از حساب کودک بازیابی می شود. با دسترسی به سرویس گیرنده Google از طریق حساب کودک ، داده های مشاهده YouTube را می توان استخراج کرد. سپس داده های استخراج شده را می توان با پیوستن به لینک بارگیری به یک ایمیل یا ذخیره آن در خدمات مختلف ذخیره سازی دریافت کرد. برای این اجرای ، من تصمیم گرفتم آن را در اسناد Google ذخیره کنم.

متأسفانه ، دو مانع وجود دارد که از اتوماسیون کامل گزارش در این مرحله جلوگیری می کند ، که هر دو در این مرحله وجود دارند:

  1. فرکانس توزیع برنامه ریزی شده: برنامه استخراج فقط می تواند برای فواصل دو ماهه و حداکثر یک سال تنظیم شود. در حالی که یک سال قابل قبول است ، فرکانس دو ماهه شکاف هایی را ایجاد می کند که خیلی بزرگ هستند ، بنابراین اگر می خواهید برنامه های ماهانه داشته باشید ، باید برای دو ماه متوالی استخراج کنید.

  2. محدودیت حساب کودک: با حساب کودک ، ارسال خودکار ایمیل و استفاده از گاز محدود می شود. در نتیجه ، ایده هایی مانند ارسال خودکار ایمیل به حساب والدین یا قرار دادن خودکار داده ها در پوشه مشترک برای استفاده والدین و کودک در Google Docs قابل استفاده نیست. در عوض ، ذخیره سازی دستی ضروری شد. با این حال ، این می تواند در آینده حل شود ، زیرا ذخیره سازی خارجی مانند جعبه برای ذخیره داده ها در دسترس است.

استخراج پرونده های زیپ

داده های توزیع شده از Takeout در قالب ZIP چند لایه قرار داشت که با استفاده از برنامه های استاندارد GAS قابل استخراج نیست. خوشبختانه ، یک کتابخانه زیپ برای استفاده در گاز در دسترس است. با اشاره به این مقاله ژاپنی ، من توانستم یک کتابخانه ایجاد کنم و پرونده های ZIP را با موفقیت استخراج کنم.

تخمین و پر کردن داده های مشاهده گمشده

زمان مشاهده با مقایسه تفاوت داده های قبلی استخراج می شود. با این حال ، موضوعات زیر بوجود آمد. در ادامه از این اصطلاح استفاده می کنم جلسه برای مراجعه به یک دوره مشاهده مداوم.

  1. زمان مشاهده قابل توجه بین جلسات ، از چند ساعت تا ده ها ساعت.
  2. جدول زمانی نهایی در داده ها نمی تواند یک مقدار ارائه دهد.

برای رسیدگی به این مسائل ، من اقدامات زیر را انجام دادم:

  1. برای داده های نهایی در یک جلسه ، من از مقدار متوسط ​​جلسه برای پر کردن شکاف استفاده کردم.
  2. اگر فقط در یک جلسه فقط یک نقطه داده وجود داشته باشد ، من این شکاف را با مقدار موقت 20 دقیقه پر کردم.

با انجام این کار ، اگرچه اعداد تخمین زده می شوند ، اما من توانستم مقادیری را که به طور منطقی به موارد واقعی نزدیک هستند محاسبه کنم.

ارزیابی عنوان مضر

اگرچه جمینی انتخاب ایده آل در اکوسیستم Google خواهد بود ، زیرا من از آن زیاد استفاده نکرده ام ، تصمیم گرفتم از API OpenAi استفاده کنم ، که من با آن بیشتر آشنا هستم. به نظر می رسید آستانه تعیین محتوای مضر بسته به سن متفاوت است ، بنابراین من تنظیم کردم birthYearMonth در گاز Script Properties برای تنظیم ارزیابی بر اساس سن واقعی.

function analyzeWithOpenAI(titles, birthYearMonth) {
  var apiKey = PropertiesService.getScriptProperties().getProperty("OPENAI_API_KEY");

  if (!apiKey) {
    Logger.log("❌ API key is missing in Script Properties.");
    return { error: "API key is missing. Please set OPENAI_API_KEY in Script Properties." };
  }

  var url = "https://api.openai.com/v1/chat/completions";

  var riskCounts = { "1 (Safe)": 0, "2 (Mildly inappropriate)": 0, "3 (Potentially harmful)": 0, "4 (Harmful)": 0 };
  var harmfulTitles = [];
  var analyzedResults = [];

  titles.forEach(title => {
    var messages = [
      { role: "user", content: `Evaluate the following YouTube video title for harmful content for a child born in ${birthYearMonth}.
                                 Classify it into four levels:
                                 - 1 (Safe)
                                 - 2 (Mildly inappropriate)
                                 - 3 (Potentially harmful)
                                 - 4 (Harmful)

                                 Return only the numeric classification.

                                 Title: ${title}` }
    ];

    var payload = {
      model: "gpt-4o",
      messages: messages,
      temperature: 0.3
    };
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

زمان اجرای گاز

هنگام درخواست به API OpenAI ، من هر عنوان را به صورت جداگانه پردازش می کنم و بین هر درخواست زمان خواب 500ms را درج می کنم. بدون در نظر گرفتن پردازش درخواست API ، حداکثر تعداد کارهایی که می توانند بر روی گاز انجام شوند 720 است.

از آنجا که این حجم حدود 72 عنوان در طی دو هفته بود ، این مسئله نبود. با این حال ، اگر استفاده سنگین تر شود یا اگر نیاز به جستجوی فیلم های بیشتر در مورد فیلم های کوتاه داشته باشم ، ممکن است تجزیه شود. در آینده ، من قصد دارم فیلم ها را با بیش از 5 دقیقه از زمان مشاهده ، طبقه بندی عناوین و پردازش چندین عنوان در دسته ها فیلتر کنم.

سیستم ماژول گاز

من فایلهای عملکردی را برای هر ویژگی آماده کردم ، اما گاز فاقد یک سیستم ماژول است ، بنابراین مجبور شدم پرونده ماژول مربوطه را بر اساس نام عملکرد به تنهایی تعیین کنم. با افزایش تعداد پرونده ها ، این مسئله کمی دست و پا گیر شد. به احتمال زیاد به این دلیل است که گاز برای کاربردهای پیچیده طراحی نشده است ، اما این یک نکته کوچک بود.

برنامه های آینده

اگرچه در حال حاضر کتابچه راهنمای کاربر است ، من قصد دارم حداقل یک بار در ماه سیستم گزارش را اجرا کنم. این موضوع برای من و فرزندم به یک موضوع تبدیل شده است که بیشتر با یوتیوب درگیر شوید. در حالت ایده آل ، این پلتفرم گزارش هایی مانند بخشی از ویژگی های اصلی آن را ارائه می دهد ، اما من برای آن نفس نمی کشم. این بیشتر از ویژگی های “خوب و خوب” است.

منابع

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا