YouTube Bot — Automatisierte Video-Interaktion mit Whisper & KI

Python-Bot für automatische YouTube-Video-Suche, Live-Audio-Transkription und KI-generierte Kommentare

PythonSeleniumWhisperOllamaFirefox

🚀 Automatisieren Sie Ihre YouTube-Interaktionen

Vom Video-Finder zum intelligenten Kommentar-Bot – lokal, datenschutzkonform, KI-gestützt

📞 02406 803 7603 ✉️ info@computerkumpel.de

📊 Projektübersicht

Dieser YouTube-Bot automatisiert den kompletten Workflow: Video-Suche über Selenium/Firefox, Live-Audio-Transkription des Video-Tons via OpenAI Whisper (lokal), und Generierung kontextrelevanter Kommentare durch ein lokales LLM (Ollama). Alles läuft lokal – keine Cloud-Abhängigkeit, maximaler Datenschutz.

🎤
Live-Transkription
System-Audio wird in Echtzeit erfasst und via Whisper in Text umgewandelt. 5-Sekunden-Buffer für kontinuierliche Verarbeitung.
🧠
KI-Kommentare
Ollama LLM analysiert das Transkript und generiert kontextbezogene, zum Nachdenken anregende Kommentar-Fragen.
🖥️
Browser-Automation
Selenium WebDriver mit Firefox: Automatische YouTube-Suche, Video-Auswahl und Kommentar-Posting.
🔒
100% Lokal
Whisper und Ollama laufen lokal. Keine API-Keys, keine Cloud-Kosten, volle Datensouveränität.

⚙️ Funktionsweise

1
🔍

Video-Suche

Selenium öffnet YouTube, sucht nach Keyword und klickt das erste Video-Ergebnis.

2
🎧

Audio-Aufnahme

soundcard erfasst System-Audio in Echtzeit, 16kHz Sample-Rate, mono.

3
📝

Whisper-Transkription

5-Sekunden-Chunks werden via Whisper medium-Modell (deutsch) transkribiert.

4
💬

KI-Kommentar

Ollama LLM generiert relevante Frage, Selenium posted sie als YouTube-Kommentar.

💻 Quellcode

Channel-Scraper: Video-Liste via BeautifulSoup

import requests
from bs4 import BeautifulSoup
import csv

BASE_URL = 'https://www.youtube.com'
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'

def get_video_links(channel_url):
    headers = {'User-Agent': USER_AGENT}
    response = requests.get(channel_url + '/videos', headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    videos = []

    for video in soup.find_all('a',
        class_='yt-simple-endpoint focus-on-expand '
               'style-scope ytd-rich-grid-slim-media'):
        title = video.get('title')
        link = BASE_URL + video.get('href')
        videos.append({'title': title, 'url': link})
    return videos

def write_to_csv(videos, filename="videos.csv"):
    with open(filename, 'w', newline='', encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=['title','url'])
        writer.writeheader()
        for v in videos: writer.writerow(v)

WebDriver & Audio-Setup

from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from webdriver_manager.firefox import GeckoDriverManager
import whisper, soundcard as sc

class YouTubeBot:
    def __init__(self):
        self.setup_driver()
        self.ollama_url = 'http://localhost:11434/api/generate'
        self.model = whisper.load_model("medium")

    def setup_driver(self):
        opts = Options()
        service = Service(GeckoDriverManager().install())
        self.driver = webdriver.Firefox(service=service, options=opts)

Live-Audio-Transkription mit Whisper

def audio_callback(self, indata, frames, time, status):
    self.audio_queue.put(indata.copy())

def process_audio(self):
    buffer, buffer_duration = [], 5
    buffer_size = int(self.sample_rate * buffer_duration)

    while self.is_recording:
        data = self.audio_queue.get(timeout=1)
        buffer.extend(data.flatten())
        if len(buffer) >= buffer_size:
            audio = np.array(buffer[:buffer_size], dtype=np.float32)
            audio = (audio * 32767).astype(np.int16)
            with tempfile.NamedTemporaryFile(suffix='.wav',
                                             delete=False) as tf:
                with wave.open(tf.name, 'wb') as wf:
                    wf.setnchannels(1); wf.setsampwidth(2)
                    wf.setframerate(16000)
                    wf.writeframes(audio.tobytes())
                result = self.model.transcribe(tf.name, language="de")
                if result["text"].strip():
                    self.transcript_buffer.append(result["text"])

Interesse an KI-gestützter Automatisierung?

Ob YouTube-Bot, Audio-Transkription oder individuelle Automatisierungslösung – ich entwickle maßgeschneiderte Tools für Ihre Anforderungen.

📞 Jetzt anrufen ✉️ E-Mail senden