Video Watch Page — one video, its transcript, and what to watch next

Every video in the library has its own page: the player, the synced transcript beside it, the round's metadata under it, and related videos below that. It replaces the transcript dialog that used to open on top of the grid, which had no address — nothing to send a teammate, nothing for search to index, and no room for anything but the player and a narrow column of sentences.

  • Where: /videos/watch/<title-slug>
  • Reach it from: clicking any row in the list layout, or the transcript (CC) button on a video card
  • Package: debate-videos

The URL

/videos/watch/2022-ndt-finals-dartmouth-vs-michigan
                └──────────── title ────────────────┘

The title half is for readers and for search engines. A video that gets retitled gets a new address — old links stop working, which is the trade-off for clean URLs without appended ids.

Transcript

The transcript column is the same synced, clickable transcript the popout player shows in its caption tray: sentences rather than caption fragments, the spoken one highlighted and scrolled to, a word-level sweep across it, and a click to seek. On a page there is also room to search within the transcript — typing filters to matching lines and highlights each match within them, and follow-the-playback pauses while you read your results so the list doesn't scroll out from under you.

Most of the library has no captions. A video without them simply shows no transcript column and the player takes the full width.

By speech

Every round gets a By speech tab beside the player, and it opens first. When the round has an AI summary or written analysis that goes speech by speech, the tabs come from it; otherwise they follow the standard speech order for the round's format — LD, Public Forum or Policy. Every speech is its own tab — 1AC, CX · 1AC, 1NC, and so on — coloured blue for the aff, red for the neg and grey for cross-ex. Inside a speech you can switch between its Summary, Analysis and Transcript, and the view you pick stays chosen as you move from speech to speech.

  • Clicking a speech's tab plays the video from where that speech starts. The arrow keys move between tabs without jumping the video.
  • The speech playing now has a pulsing red dot. With Auto-scroll on, the tab moves to each speech as it begins; it leaves you alone while you read ahead, until the next speech starts.
  • A timeline under the video shows the round as a bar, one segment per speech, as wide as that speech ran, with a playhead. Clicking a segment plays that speech and opens its tab.

Start times come from the documents themselves: a heading like ## 1AC — Michigan (2:15) in the transcript or summary is what places the 1AC on the timeline. For a round without them, play to where a speech begins and press Mark start on its tab; clear a mark with the × beside it. Marked speeches get proportional timeline segments, follow along as the video plays, and show the captions spoken during them under Transcript. Marks are saved in this browser only. Until any speech has a start, the timeline shows equal segments that still open each speech.

Detect speeches — let AI find where every speech starts

Instead of marking each start by hand, press Detect speeches at the top of the By speech tab. The AI reads the video's whole caption track, works out the format (Policy, LD, Public Forum, or another), and finds when each speech begins and ends — 1AC, 1AX (the cross-ex of the 1AC), 1NC, 1NX, 2AC, 2AX, 2NC, 2NX, 1NR, 1AR, 2NR, 2AR for Policy, and the matching speeches for LD and PF.

  • Each speech's tab is timed, the timeline fills in, and Transcript shows exactly the captions spoken during that speech — cut off at its end, so prep time and the judge's comments stay out.
  • A round with a written summary keeps its own speeches and only gains the times it was missing. A Mark start you set yourself always wins over a detected one.
  • The result is kept in this browser. Detect again re-runs it and Clear forgets it.

LLM summary — a speech's key points and warrants

Every speech with a transcript has an LLM summary button. It outlines the speech the way you'd flow it: each key point as a short bold tag, the warrants behind it as nested bullet phrases, in the order the speaker made them, ending with the speech's bottom line. The outline opens in its own LLM summary view, is kept in this browser, and Run again asks for a fresh one. On a round nobody typed up, the button turns on once the speech has a start — marked or detected.

Both buttons need you to be signed in, and use the site's AI model — or your own OpenRouter or Anthropic key if you've added one in settings. They work from auto-generated captions, so check them against the video.

Rounds the site has already processed

Many rounds — starting with the Greatest of All-Time collection — have been run through the site's speech AI ahead of time. Those open with the speech buttons under the player already timed, and each speech's tab has a Summary (what the speaker did) and an Analysis (what they could have done instead) with no button to press. The Summary tab at the top shows the whole round's write-up at once. These are AI-written from the captions, and are marked as such.

Outcomes — what else the speech could have done

Every speech tab also has an Outcomes view. Press Simulate and Claude drafts two to four alternative responses the speaker could have given instead — a different collapse, an impact turn, a framework push, or for a cross-ex a different line of questioning — and predicts the ballot after each one, next to its prediction for the speech as it was actually given.

  • Pick the judges first — one to five of: flow, lay, policymaker, critique-friendly, theory-first and traditional. Each judge on the panel votes separately with their own reason for decision and the argument that decided it, and the panel's decision is the vote tally (an odd panel avoids ties). Your panel is remembered.
  • Optionally steer the alternatives — "go for the DA instead of theory" — before simulating.
  • A bar chart shows the aff's chance of winning after each version, with the 50% line marked. The number beside each alternative is how much it helps or hurts the side that gave the speech.
  • The alternative that helps most is marked Strongest; one that would change who wins is marked Ballot flips. Open a card for the outline in speaking order, what it gives up, and every judge's ballot.
  • Copy puts the whole run on your clipboard as Markdown, ready for a doc or your team chat.
  • The last run for each speech and panel is kept in this browser, and its tab gets a small sparkle. Run again asks for a fresh set.

Simulating needs you to be signed in. The alternatives and ballots are Claude's predictions from a rough transcript and summary, not real results — use them to think through options, not as a verdict. For a round nobody has written up, Claude works from the video's captions: the speech's own captions once you have marked its start, otherwise the whole round's captions, so marking starts gives sharper results.

Speech docs

A round that is also a featured round, like the 2015 NDT Finals, gets a Speech docs tab first in the column beside the player. Pick a speech, or use the arrows, to read the doc that speech was given from. Docs open in read mode: each card shows its tag, its cite and only the highlighted text that was read aloud. Open in debate view opens the whole round with its timers.

Team rankings

Under the round's details, a round whose aff and neg teams are in the team rankings gets a Team rankings section: one card per team with its rank in the division, rating and deviation, matches played, and aff, neg and elim win rates, beside its radar chart. The opponent is drawn on each radar as a dashed outline, so you can see where one team is stronger. Each team name links to that team's profile.

When both teams are ranked, a Simulated matchup card above the team cards predicts who wins. It uses the sides the teams actually debated (the division's aff/neg split and each team's own aff and neg record) and the round's stage: a prelim is one judge, an elim a 3-judge panel and finals a 5-judge panel, so a favorite's edge grows in elims. It shows each side's win chance, the predicted winner and a 1,000-round simulation, and, when the round's decision is recorded, whether the favorite won or it was an upset. The math is the matchup simulator's, with the rating mix each team's profile recommends. It is a simulation, not a ballot. When the round label isn't recorded, the round is treated as a prelim.

Only rounds from the current season are matched, since the rankings cover this season and a team code from an earlier year belongs to other debaters. A team the rankings don't know is left out, and when neither team is found the section doesn't appear.

Controls

The toolbar above the video is the popout player's toolbar: play/pause, slow-the-spread, skip to the next queued video, captions, and picture-in-picture all mean exactly what they mean there. A page can offer three more — fullscreen, a permalink to copy, and a favourite toggle.

Two of them are about leaving:

  • Minimize hands the video back to the floating popout player and returns you to the library. Playback continues from the same second.
  • Close stops the video and returns to the library.

Only one video ever plays: opening a watch page takes playback over from the floating player, and leaving hands it back.

Under the round's details, just above the related videos, is a search box for the whole library. Press Enter (or Search) and the list underneath swaps to the library's matches, headed Results for "…" — without leaving the page, so the video above keeps playing. Clicking a team name in one of those rows searches for that team the same way. Clear brings the related videos back. It is on every watch page, including one with no related videos.

Use it to build a playlist: add matches one at a time with each row's Add to queue button, or Queue all above the list to queue every match not already queued, in the list's order. The queue panel beside the list shows what's lined up, and the next video plays when this one ends.

Underneath the player: the rest of the same tournament first, then the same debate format or lecture category, then the most recent videos in the library — enough passes to fill the row for a video with neither. Clicking one opens its watch page, so the URL always names what is playing.

Each related row shows its video's length under its action buttons, and the Related videos heading (or Results for … during a search) shows the combined length of every listed video that has one, e.g. 6h 40m total. The video's own length sits beside its date and view count under the title. Lengths come from the stored durations the admin Fetch video durations card fills; a video it hasn't reached shows none and adds nothing to the total, though the page's own video picks up the player's reading once it loads.

Up next in the popout player

A related row's popout icon does not take over from the video you are watching. It lines that video up in the floating popout player instead: the page's video keeps playing, a small Up next in popout card in the corner names the lined-up video, and the popout starts playing it as soon as you leave the page. Click the icon again, or the card's ×, to cancel. Opening the lined-up video's own watch page plays it there and clears it (popoutNext in videoPlayerStore, PopoutPlayerButton).