Используем нейронку для пересказа YouTube
В этой статье мы рассмотрим, как с помощью нейросети и Python создать пересказ видео на YouTube на основе его субтитров. Мы будем использовать Ollama для запуска модели и yt-dlp для извлечения субтитров.
Требования
- Операционная система: Linux.
- Программы: установленные yt-dlp, Ollama (инструкции ниже).
- Доступ в интернет для загрузки утилит.
- Права администратора (требуется установка в системные папки).
- Процессов: чем больше ядер, тем быстрее ответит нейронка.
- Память: минимум в 2 раза больше размера модели нейронки (для 4b ≈ 8 ГБ)
- Диск: достаточно свободного места для файлов (модель нейронки занимает несклько гигабайт).
Инструкция
- Установить Ollama сервер:
curl -fsSL https://ollama.com/install.sh | sh -
Настроить Ollama на автоматический запуск:
systemctl edit ollama.serviceДобавьте в открывшийся редактор следующие строки:
[Service] Environment="OLLAMA_HOST=0.0.0.0"Сохраните файл и перезапустите сервис:
- Открыть портsystemctl restart ollama.service11434если используете фаерволл- Скачать модель нейронки:ufw allow 11434/tcp- Установить yt_dlp:ollama pull gemma3:4b- Создайте файлpip install yt-dlpyt_sum.pyсо следующим кодом:#!/usr/bin/env python3 import os import json import requests import re import yt_dlp OLLAMA_URL = 'http://192.168.3.14:11434/api/chat' YOUTUBE_URL = 'https://www.youtube.com/watch?v=umbtgR77mR8' for lang in ['ru', 'en']: try: YDL = yt_dlp.YoutubeDL({'skip_download': True, 'quiet': True, 'writesubtitles': True, 'writeautomaticsub': True, 'subtitlesformat': 'json3', 'subtitleslangs': [lang], 'outtmpl': {'default': 'temp_subtitles_%(id)s'}}) VIDEO_INFO = YDL.extract_info(YOUTUBE_URL, download=True) VIDEO_NAME = VIDEO_INFO.get('title', 'Unknown') VIDEO_ID = VIDEO_INFO.get('id', 'unknown') break except yt_dlp.utils.DownloadError: continue with open(f"temp_subtitles_{VIDEO_ID}.{lang}.json3", "r", encoding="utf-8") as f: JSON_SUBTITLES = json.load(f) SUBTITLE_TEXT = "" for event in JSON_SUBTITLES.get("events", []): if "segs" in event: for seg in event["segs"]: text = seg.get("utf8", "") if text != "\n": SUBTITLE_TEXT += text os.remove(f"temp_subtitles_{VIDEO_ID}.{lang}.json3") LLM_REQUEST = f""" Ты — инструмент извлечения фактической информации. Тебе даны субтитры из видео: "{VIDEO_NAME}". Твоя ЗАДАЧА: Извлечь строго и только ТО, что ПРЯМО и ЯВНО содержится в предоставленном тексте: — факты — утверждения — конкретные тезисы — имена, фамилии, названия — даты, временные указания — числовые данные — явно упомянутые объекты и события Ответ строго на русском языке. Текст субтитров: {SUBTITLE_TEXT} """ JSON_REQUEST = {"model": "gemma3:4b", "stream": False, "messages": [{ "role": "user", "content": f"{LLM_REQUEST}" }], "options": { "num_ctx": 8192 }} response = requests.post(OLLAMA_URL, json=JSON_REQUEST, headers={"Content-Type": "application/json"}) LLM_RESPONSE_CONTENT = response.json()["message"]["content"]Код на GitHub - Сделайте исполняемым (
chmod +x) и запустить файлyt_sum.py:python3 yt_sum.py
Итог
Мы запустили Ollama сервер, на котором запустили нейронную модель Gemma. Мы создали Python скрипт, который извлекает субтитры по ссылке YouTube, отправляет их в нейросеть для анализа и получает структурированный пересказ видео.
Этот подход можно использовать для быстрого анализа содержимого видео, создания кратких выжимок или для поиска конкретной информации в длинных видео.