[feature] Video Analysis side panel — transcribe + find + summarize (like Deep Research panel) #926
Labels
No labels
area:chat
area:core
area:llm
area:routes
area:tools
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
refactor
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sleepy/odysseus#926
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Feature Request
Add a Video Analysis side panel to Odysseus, modeled after the existing Deep Research panel (
static/js/research/panel.js+research-overlay). Not a chat tool — a dedicated UI section with its own overlay, progress tracking, and results viewer.The entire backend pipeline already exists and is production-tested at
~/workspace/vod-pipeline/:vod_pipeline.py(548 lines) — download → preprocess → Parakeet transcribe → LLM analysisdiscord_bot.py(762 lines) — working Discord bot with/url,/retry,/find,/help~/workspace/clyde-vods/prompts/PROMPT_5hr.md— analysis prompt (chapters, highlights, games, audio pollution filtering)~95% of the backend code can be reused. The main work is: frontend panel, backend routes, settings integration.
UI Design (follow Deep Research pattern)
Side Panel Button
Like the Deep Research button in the sidebar, add a Video Analysis button that opens a full-screen overlay (
vod-overlay).Overlay Layout
The overlay should have 3 tabs/modes (like DR has running/completed sections):
Analyze — Full pipeline: paste URL → transcribe + analyze → view results
Find — Timestamp search in a video
/findimplementation fromdiscord_bot.py:564+Summarize — Video summary with key points
History
Like DR keeps
data/deep_research/<id>.json, store analyses indata/video_analysis/<id>.jsonwith:Architecture (follow Deep Research pattern)
Frontend
Backend Routes
Endpoints:
POST /api/vod/analyze— Start analysis (download + transcribe + analyze)POST /api/vod/find— Find in video (auto-transcribe if needed, then search)POST /api/vod/summarize— Summarize video (auto-transcribe if needed, then summarize)GET /api/vod/jobs— List all jobs (history)GET /api/vod/jobs/{id}— Get job status + resultsGET /api/vod/jobs/{id}/transcript— Stream transcript textDELETE /api/vod/jobs/{id}— Delete job + artifactsBackend Pipeline
Settings Keys
Model resolution uses Odysseus' existing
endpoint_resolver— NOT hardcoded to DeepSeek. Falls back todefault_model/default_endpoint_idif video-specific model not configured.Data Storage
Model Resolution
All LLM calls (analysis, find, summarize) go through Odysseus' endpoint resolution:
Uses
src.llm_core.llm_call_asyncfor the actual calls instead of rawurllib.request.Key Differences from Discord Bot
discord.pyimports, use FastAPI routes + SSE/WebSocket for progressRequirements
Python packages (Parakeet transcription):
System dependencies:
Make NeMo an optional import — the panel shows a setup message if not installed.
Pitfalls (from production experience)
[HH:MM:SS], not[MM:SS:00]. Minutes > 59 breaks duration estimation.max_tokensmust be 65536 for long videos. 16K truncates mid-object on 4h+ VODs.(batch, time)shape. Convert withnp.mean(data, axis=1).YT_DLP = shutil.which("yt-dlp") or str(Path(sys.executable).parent / "yt-dlp")Reference Code
~/workspace/vod-pipeline/vod_pipeline.py~/workspace/vod-pipeline/discord_bot.py~/workspace/clyde-vods/prompts/PROMPT_5hr.mdstatic/js/research/panel.jsroutes/research_routes.pysrc/research_handler.pyRelated
vod-pipeline-botHermes skill has comprehensive architecture docs for all pitfalls[feature] VOD/Video analysis tool — transcribe + find + summarize as chat toolto [feature] Video Analysis side panel — transcribe + find + summarize (like Deep Research panel)