Transcript Keyword Index- Deterministic keyword index with timestamps
Build a deterministic keyword + phrase index from transcripts or subtitles. The tool maps exact-match tokens and phrases to timestamped occurrences with bounded context.
How it works
- 1
Provide Transcript Text, Subtitle Cues (optional), Artifact JSON (optional).
- 2
Run the tool to generate the output.
- 3
Copy or download the result for immediate use.
Examples
Transcript-only index
{
"transcript": "Fast-paced co-op speed runs demand tight teamwork. Speed matters, teamwork wins."
}{
"schemaVersion": "1.0",
"policyVersion": "transcript-index-v1",
"tokenIndex": [
{
"key": "co",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 10,
"snippetMatchEnd": 12
}
]
},
{
"key": "demand",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 27,
"snippetMatchEnd": 33
}
]
},
{
"key": "fast",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 0,
"snippetMatchEnd": 4
}
]
},
{
"key": "matters",
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 5,
"snippetMatchEnd": 12
}
]
},
{
"key": "op",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 13,
"snippetMatchEnd": 15
}
]
},
{
"key": "paced",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 4,
"snippetMatchEnd": 9
}
]
},
{
"key": "runs",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 22,
"snippetMatchEnd": 26
}
]
},
{
"key": "speed",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 16,
"snippetMatchEnd": 21
},
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 0,
"snippetMatchEnd": 5
}
]
},
{
"key": "teamwork",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 40,
"snippetMatchEnd": 48
},
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 13,
"snippetMatchEnd": 21
}
]
},
{
"key": "tight",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 34,
"snippetMatchEnd": 39
}
]
},
{
"key": "wins",
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 22,
"snippetMatchEnd": 26
}
]
}
],
"phraseIndex": [
{
"key": "co",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 10,
"snippetMatchEnd": 12
}
]
},
{
"key": "co op",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 10,
"snippetMatchEnd": 15
}
]
},
{
"key": "co op speed",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 10,
"snippetMatchEnd": 21
}
]
},
{
"key": "demand",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 27,
"snippetMatchEnd": 33
}
]
},
{
"key": "demand tight",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 27,
"snippetMatchEnd": 39
}
]
},
{
"key": "demand tight teamwork",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 27,
"snippetMatchEnd": 48
}
]
},
{
"key": "fast",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 0,
"snippetMatchEnd": 4
}
]
},
{
"key": "fast paced",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 0,
"snippetMatchEnd": 9
}
]
},
{
"key": "fast paced co",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 0,
"snippetMatchEnd": 12
}
]
},
{
"key": "matters",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 5,
"snippetMatchEnd": 12
}
]
},
{
"key": "matters teamwork",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 5,
"snippetMatchEnd": 21
}
]
},
{
"key": "matters teamwork wins",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 5,
"snippetMatchEnd": 26
}
]
},
{
"key": "op",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 13,
"snippetMatchEnd": 15
}
]
},
{
"key": "op speed",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 13,
"snippetMatchEnd": 21
}
]
},
{
"key": "op speed runs",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 13,
"snippetMatchEnd": 26
}
]
},
{
"key": "paced",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 4,
"snippetMatchEnd": 9
}
]
},
{
"key": "paced co",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 4,
"snippetMatchEnd": 12
}
]
},
{
"key": "paced co op",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 4,
"snippetMatchEnd": 15
}
]
},
{
"key": "runs",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 22,
"snippetMatchEnd": 26
}
]
},
{
"key": "runs demand",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 22,
"snippetMatchEnd": 33
}
]
},
{
"key": "runs demand tight",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 22,
"snippetMatchEnd": 39
}
]
},
{
"key": "speed",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 16,
"snippetMatchEnd": 21
},
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 0,
"snippetMatchEnd": 5
}
]
},
{
"key": "speed matters",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 0,
"snippetMatchEnd": 12
}
]
},
{
"key": "speed matters teamwork",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 0,
"snippetMatchEnd": 21
}
]
},
{
"key": "speed runs",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 16,
"snippetMatchEnd": 26
}
]
},
{
"key": "speed runs demand",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 16,
"snippetMatchEnd": 33
}
]
},
{
"key": "teamwork",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 40,
"snippetMatchEnd": 48
},
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 13,
"snippetMatchEnd": 21
}
]
},
{
"key": "teamwork wins",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 13,
"snippetMatchEnd": 26
}
]
},
{
"key": "tight",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 34,
"snippetMatchEnd": 39
}
]
},
{
"key": "tight teamwork",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Fast-paced co-op speed runs demand tight teamwork",
"snippetMatchStart": 34,
"snippetMatchEnd": 48
}
]
},
{
"key": "wins",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "Speed matters, teamwork wins",
"snippetMatchStart": 22,
"snippetMatchEnd": 26
}
]
}
],
"diagnostics": [
{
"severity": "warning",
"code": "WARN_NO_TIMESTAMPS",
"message": "No subtitle timestamps provided; occurrences use null timestamps.",
"segmentOrdinal": null,
"startMs": null,
"endMs": null
}
]
}Mixed scripts
{
"transcript": "Tokyo 東京 highlights. MixedCase tokens stay searchable."
}{
"schemaVersion": "1.0",
"policyVersion": "transcript-index-v1",
"tokenIndex": [
{
"key": "highlights",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 8,
"snippetMatchEnd": 18
}
]
},
{
"key": "mixedcase",
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 0,
"snippetMatchEnd": 9
}
]
},
{
"key": "searchable",
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 21,
"snippetMatchEnd": 31
}
]
},
{
"key": "stay",
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 16,
"snippetMatchEnd": 20
}
]
},
{
"key": "tokens",
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 9,
"snippetMatchEnd": 15
}
]
},
{
"key": "tokyo",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 0,
"snippetMatchEnd": 5
}
]
},
{
"key": "東京",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 5,
"snippetMatchEnd": 7
}
]
}
],
"phraseIndex": [
{
"key": "highlights",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 8,
"snippetMatchEnd": 18
}
]
},
{
"key": "mixedcase",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 0,
"snippetMatchEnd": 9
}
]
},
{
"key": "mixedcase tokens",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 0,
"snippetMatchEnd": 15
}
]
},
{
"key": "mixedcase tokens stay",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 0,
"snippetMatchEnd": 20
}
]
},
{
"key": "searchable",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 21,
"snippetMatchEnd": 31
}
]
},
{
"key": "stay",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 16,
"snippetMatchEnd": 20
}
]
},
{
"key": "stay searchable",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 16,
"snippetMatchEnd": 31
}
]
},
{
"key": "tokens",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 9,
"snippetMatchEnd": 15
}
]
},
{
"key": "tokens stay",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 9,
"snippetMatchEnd": 20
}
]
},
{
"key": "tokens stay searchable",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": null,
"endMs": null,
"snippet": "MixedCase tokens stay searchable",
"snippetMatchStart": 9,
"snippetMatchEnd": 31
}
]
},
{
"key": "tokyo",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 0,
"snippetMatchEnd": 5
}
]
},
{
"key": "tokyo 東京",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 0,
"snippetMatchEnd": 7
}
]
},
{
"key": "tokyo 東京 highlights",
"ngram": 3,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 0,
"snippetMatchEnd": 18
}
]
},
{
"key": "東京",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 5,
"snippetMatchEnd": 7
}
]
},
{
"key": "東京 highlights",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": null,
"endMs": null,
"snippet": "Tokyo 東京 highlights",
"snippetMatchStart": 5,
"snippetMatchEnd": 18
}
]
}
],
"diagnostics": [
{
"severity": "warning",
"code": "WARN_NO_TIMESTAMPS",
"message": "No subtitle timestamps provided; occurrences use null timestamps.",
"segmentOrdinal": null,
"startMs": null,
"endMs": null
}
]
}Subtitle cues + transcript
{
"transcript": "Intro segment. Main topic. Closing thoughts.",
"subtitles": "00:00 --> 00:05\nIntro segment\n\n00:05 --> 00:10\nMain topic"
}{
"schemaVersion": "1.0",
"policyVersion": "transcript-index-v1",
"tokenIndex": [
{
"key": "closing",
"occurrences": [
{
"segmentOrdinal": 4,
"startMs": null,
"endMs": null,
"snippet": "Closing thoughts",
"snippetMatchStart": 0,
"snippetMatchEnd": 7
}
]
},
{
"key": "intro",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": 0,
"endMs": 5000,
"snippet": "Intro segment",
"snippetMatchStart": 0,
"snippetMatchEnd": 5
},
{
"segmentOrdinal": 2,
"startMs": null,
"endMs": null,
"snippet": "Intro segment",
"snippetMatchStart": 0,
"snippetMatchEnd": 5
}
]
},
{
"key": "main",
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": 5000,
"endMs": 10000,
"snippet": "Main topic",
"snippetMatchStart": 0,
"snippetMatchEnd": 4
},
{
"segmentOrdinal": 3,
"startMs": null,
"endMs": null,
"snippet": "Main topic",
"snippetMatchStart": 0,
"snippetMatchEnd": 4
}
]
},
{
"key": "segment",
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": 0,
"endMs": 5000,
"snippet": "Intro segment",
"snippetMatchStart": 5,
"snippetMatchEnd": 12
},
{
"segmentOrdinal": 2,
"startMs": null,
"endMs": null,
"snippet": "Intro segment",
"snippetMatchStart": 5,
"snippetMatchEnd": 12
}
]
},
{
"key": "thoughts",
"occurrences": [
{
"segmentOrdinal": 4,
"startMs": null,
"endMs": null,
"snippet": "Closing thoughts",
"snippetMatchStart": 7,
"snippetMatchEnd": 15
}
]
},
{
"key": "topic",
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": 5000,
"endMs": 10000,
"snippet": "Main topic",
"snippetMatchStart": 4,
"snippetMatchEnd": 9
},
{
"segmentOrdinal": 3,
"startMs": null,
"endMs": null,
"snippet": "Main topic",
"snippetMatchStart": 4,
"snippetMatchEnd": 9
}
]
}
],
"phraseIndex": [
{
"key": "closing",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 4,
"startMs": null,
"endMs": null,
"snippet": "Closing thoughts",
"snippetMatchStart": 0,
"snippetMatchEnd": 7
}
]
},
{
"key": "closing thoughts",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 4,
"startMs": null,
"endMs": null,
"snippet": "Closing thoughts",
"snippetMatchStart": 0,
"snippetMatchEnd": 15
}
]
},
{
"key": "intro",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": 0,
"endMs": 5000,
"snippet": "Intro segment",
"snippetMatchStart": 0,
"snippetMatchEnd": 5
},
{
"segmentOrdinal": 2,
"startMs": null,
"endMs": null,
"snippet": "Intro segment",
"snippetMatchStart": 0,
"snippetMatchEnd": 5
}
]
},
{
"key": "intro segment",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": 0,
"endMs": 5000,
"snippet": "Intro segment",
"snippetMatchStart": 0,
"snippetMatchEnd": 12
},
{
"segmentOrdinal": 2,
"startMs": null,
"endMs": null,
"snippet": "Intro segment",
"snippetMatchStart": 0,
"snippetMatchEnd": 12
}
]
},
{
"key": "main",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": 5000,
"endMs": 10000,
"snippet": "Main topic",
"snippetMatchStart": 0,
"snippetMatchEnd": 4
},
{
"segmentOrdinal": 3,
"startMs": null,
"endMs": null,
"snippet": "Main topic",
"snippetMatchStart": 0,
"snippetMatchEnd": 4
}
]
},
{
"key": "main topic",
"ngram": 2,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": 5000,
"endMs": 10000,
"snippet": "Main topic",
"snippetMatchStart": 0,
"snippetMatchEnd": 9
},
{
"segmentOrdinal": 3,
"startMs": null,
"endMs": null,
"snippet": "Main topic",
"snippetMatchStart": 0,
"snippetMatchEnd": 9
}
]
},
{
"key": "segment",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 0,
"startMs": 0,
"endMs": 5000,
"snippet": "Intro segment",
"snippetMatchStart": 5,
"snippetMatchEnd": 12
},
{
"segmentOrdinal": 2,
"startMs": null,
"endMs": null,
"snippet": "Intro segment",
"snippetMatchStart": 5,
"snippetMatchEnd": 12
}
]
},
{
"key": "thoughts",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 4,
"startMs": null,
"endMs": null,
"snippet": "Closing thoughts",
"snippetMatchStart": 7,
"snippetMatchEnd": 15
}
]
},
{
"key": "topic",
"ngram": 1,
"occurrences": [
{
"segmentOrdinal": 1,
"startMs": 5000,
"endMs": 10000,
"snippet": "Main topic",
"snippetMatchStart": 4,
"snippetMatchEnd": 9
},
{
"segmentOrdinal": 3,
"startMs": null,
"endMs": null,
"snippet": "Main topic",
"snippetMatchStart": 4,
"snippetMatchEnd": 9
}
]
}
],
"diagnostics": []
}Configuration
Transcript-only inputs emit null timestamps. Add subtitles for cue-based timing.
When provided, subtitle cues supply timestamp ranges per segment.
If provided, the tool re-emits the artifact without re-indexing.
Output
Run the tool to generate output
Frequently Asked Questions
What does the index include?
Each token and phrase key includes all occurrences with timestamps (when available) and context snippets. The output is deterministic and offline-friendly.
Do I need subtitles?
No. If you only provide a transcript, all occurrences will carry null timestamps and a warning is emitted.
Does this perform semantic search?
No. The search is exact-match on normalized keys. Stemming and fuzzy matching are intentionally out of scope.