XooCode(){

SeekToAction

SeekToAction is an Action subtype used as a potentialAction on a VideoObject to declare seek-to points for named moments. It adds one property: startOffset-input (wire name startOffset-input with a hyphen), a templated input representing the seconds offset to seek to. Google uses this alongside hasPart Clip objects to power the Key Moments rich result under a video in search.

The pattern is: declare hasPart Clips on the VideoObject with startOffset and name, plus a single potentialAction SeekToAction describing the URL template with {seek_to_second_number}. Google matches the Clip names to the templated URL so each moment becomes a clickable timestamp in the rich result.

Full example of schema.org/SeekToAction json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/SeekToAction
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "XooStructured Product Tour",
  "description": "10-minute walkthrough of the XooStructured schema IDE.",
  "uploadDate": "2026-02-14",
  "contentUrl": "https://xoocode.com/videos/xoostructured-tour.mp4",
  "thumbnailUrl": "https://xoocode.com/videos/xoostructured-tour-thumb.jpg",
  "duration": "PT10M32S",
  "hasPart": [
    { "@type": "Clip", "name": "Schema tree navigation", "startOffset": 32, "url": "https://xoocode.com/videos/xoostructured-tour?t=32" },
    { "@type": "Clip", "name": "Live validation panel", "startOffset": 187, "url": "https://xoocode.com/videos/xoostructured-tour?t=187" },
    { "@type": "Clip", "name": "Exporting JSON-LD", "startOffset": 410, "url": "https://xoocode.com/videos/xoostructured-tour?t=410" }
  ],
  "potentialAction": {
    "@type": "SeekToAction",
    "target": "https://xoocode.com/videos/xoostructured-tour?t={seek_to_second_number}",
    "startOffset-input": "required name=seek_to_second_number"
  }
}
</script>

Minimal valid version

The smallest markup that still produces a valid SeekToAction entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/SeekToAction (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "XooStructured Product Tour",
  "potentialAction": {
    "@type": "SeekToAction",
    "target": "https://xoocode.com/videos/xoostructured-tour?t={seek_to_second_number}",
    "startOffset-input": "required name=seek_to_second_number"
  }
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

Common SeekToAction mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    SeekToAction without matching Clip hasPart entries

    Wrong
    SeekToAction on a VideoObject with no hasPart Clips
    Right
    Pair SeekToAction with hasPart Clip objects carrying startOffset and name

    The Key Moments rich result reads Clip names and startOffsets. SeekToAction alone describes the seek URL template; without Clips Google has no moments to show.

  2. 02

    Hard-coded timestamp instead of templated placeholder

    Wrong
    "target": "https://example.com/video?t=32"
    Right
    "target": "https://example.com/video?t={seek_to_second_number}"

    SeekToAction.target must be a URL template with the {seek_to_second_number} placeholder so Google can substitute the startOffset from each Clip.

About the example data

Key moments on the XooStructured product tour video, referenced from the VideoObject example.

Comments

Loading comments...

Leave a comment