"use client"; import { useState, useEffect } from "react"; const AVAILABLE_CATEGORIES = [ "SiteMente", "OpenClaw", "Trading", "Marketing", "Technical", "Voice AI", "Business", "Inspiration", "Personal Growth" ]; export default function TranscriptsPage() { const [transcripts, setTranscripts] = useState([]); const [videoUrl, setVideoUrl] = useState(""); const [transcriptText, setTranscriptText] = useState(""); const [title, setTitle] = useState(""); const [selectedCategories, setSelectedCategories] = useState([]); const [filterCategory, setFilterCategory] = useState("all"); const [saving, setSaving] = useState(false); useEffect(() => { fetchTranscripts(); }, []); const fetchTranscripts = async () => { const res = await fetch("/api/transcripts"); const data = await res.json(); setTranscripts(data); }; const toggleCategory = (cat: string) => { setSelectedCategories(prev => prev.includes(cat) ? prev.filter(c => c !== cat) : [...prev, cat] ); }; const saveTranscript = async () => { if (!videoUrl || !transcriptText) return; setSaving(true); const res = await fetch("/api/transcripts", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ videoUrl, title: title || videoUrl, transcript: transcriptText, categories: selectedCategories }) }); const data = await res.json(); setSaving(false); if (data.transcripts) { setTranscripts(data.transcripts); setVideoUrl(""); setTranscriptText(""); setTitle(""); setSelectedCategories([]); } }; const deleteTranscript = async (videoId: string) => { if (!confirm("Delete this transcript?")) return; const res = await fetch("/api/transcripts", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action: "delete", videoId }) }); const data = await res.json(); if (data.transcripts) { setTranscripts(data.transcripts); } }; const filteredTranscripts = filterCategory === "all" ? transcripts : transcripts.filter(t => t.categories?.includes(filterCategory)); const allCategories = [...new Set(transcripts.flatMap(t => t.categories || []))]; return (

🎬 YouTube Transcripts

{/* Add New Transcript */}

Add Transcript

setVideoUrl(e.target.value)} placeholder="YouTube URL..." className="w-full px-4 py-2 bg-black/30 border border-white/20 rounded-lg text-white placeholder-white/50 mb-3" /> setTitle(e.target.value)} placeholder="Title..." className="w-full px-4 py-2 bg-black/30 border border-white/20 rounded-lg text-white placeholder-white/50 mb-3" />

Categories:

{AVAILABLE_CATEGORIES.map(cat => ( ))}