entit.ai

// DOCS · RESPONSE SCHEMA

Job results.

When status is success, result is typed by the format you submitted. Omit format for VideoAnalysis, or set one of 24 workflow slugs — content-screening, creator-brief, and recipe ship with rich field tables below, and the full JSON Schema for every format (auto-generated from the Gemini contract in internal/gemini/formats) is listed in the schema reference. Responses echo format when set. Caches are isolated per format.

Shapes mirror internal/configs/formats.go and openapi.json. Submit and poll details: POST /v1/jobs.

VideoAnalysis (default)

Nested under result when format is omitted.

FieldTypeDescription
platformstringSource platform: tiktok, instagram, or youtube.
urlstringCanonical resolved video URL.
titlestring?Video title when available.
authorstring?Creator display name.
authorHandlestring?Creator handle (e.g. @username).
transcriptionstringSpoken-word transcript from the audio track.
languagestring?Detected spoken language (ISO 639-1 code).
onScreenTextstring?Text visible on screen (overlays, captions).
visualDescriptionstringNarrative summary of visual content.
scenesScene[]?Timestamped scene breakdowns.
processedAtstring (RFC3339)When the analysis was completed.

Scene

Entries in the scenes array.

FieldTypeDescription
timestampstring?Scene start time (e.g. 0:08).
descriptionstringWhat happens in this scene.

Example

VIDEOANALYSIS.JSONjson
{
  "platform": "tiktok",
  "url": "https://www.tiktok.com/@janecreates/video/7123456789",
  "title": "How I grew my account in 30 days",
  "author": "Jane Creator",
  "authorHandle": "@janecreates",
  "transcription": "Here's how I grew my account in 30 days...",
  "language": "en",
  "onScreenText": "Day 1 · Follow for more",
  "visualDescription": "Creator speaking to camera in a home office, cuts to screen recording of analytics dashboard.",
  "scenes": [
    {
      "timestamp": "0:00",
      "description": "Talking head, direct to camera"
    },
    {
      "timestamp": "0:08",
      "description": "Screen recording of analytics dashboard"
    }
  ],
  "processedAt": "2026-05-20T12:34:56Z"
}

Workflow formats

Same price as default analysis at launch. Each format uses its own Firestore cache key; switching format on the same URL requires a new paid job. The three formats below ship with full field tables. The full schema reference lower on this page lists the JSON Schema for every one of 24 formats. Full slug list: API workflow formats.

content-screening

Submit with "format": "content-screening". Brand-safety / UGC compliance for repost decisions.

FieldTypeDescription
safebooleanOverall brand-safety boolean.
riskLevelstringlow | medium | high.
flagsstring[]?Short labels for concerns (empty when none).
summarystringReviewer-facing summary.
recommendationstringapprove | review | reject.

Example

CONTENT-SCREENING.JSONjson
{
  "safe": true,
  "riskLevel": "low",
  "flags": [],
  "summary": "Talking-head creator tips video with no violence, nudity, or substance use. Mild competitive language only.",
  "recommendation": "approve",
  "adPlacement": {
    "suitable": true,
    "riskLevel": "low",
    "categories": [
      "family_friendly"
    ],
    "blocklistMatches": [],
    "notes": "Suitable for broad programmatic placement."
  }
}

JSON Schema

CONTENT-SCREENING.SCHEMA.JSONjson
{
  "properties": {
    "adPlacement": {
      "properties": {
        "blocklistMatches": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "categories": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "notes": {
          "type": "string"
        },
        "riskLevel": {
          "enum": [
            "low",
            "medium",
            "high"
          ],
          "type": "string"
        },
        "suitable": {
          "type": "boolean"
        }
      },
      "required": [
        "suitable",
        "riskLevel",
        "notes"
      ],
      "type": "object"
    },
    "flags": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "recommendation": {
      "enum": [
        "approve",
        "review",
        "reject"
      ],
      "type": "string"
    },
    "riskLevel": {
      "enum": [
        "low",
        "medium",
        "high"
      ],
      "type": "string"
    },
    "safe": {
      "type": "boolean"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "safe",
    "riskLevel",
    "summary",
    "recommendation",
    "adPlacement"
  ],
  "type": "object"
}

creator-brief

Submit with "format": "creator-brief". Hooks, angle, and key moments for creator intelligence workflows.

FieldTypeDescription
hookstringOpening hook or headline angle.
anglestringContent positioning / theme.
summarystringShort narrative summary.
keyMomentsBriefKeyMoment[]?Timestamped beats worth citing.
ctastring?Call to action if present.
transcriptExcerptstring?Representative spoken excerpt.

BriefKeyMoment

FieldTypeDescription
timestampstring?Moment time (e.g. 0:22).
notestringWhy this moment matters.

Example

CREATOR-BRIEF.JSONjson
{
  "hook": "I grew 50k followers in 30 days without paid ads.",
  "angle": "Organic growth through consistent short-form hooks",
  "summary": "Creator walks through a three-step content system: hook formula, posting cadence, and analytics review.",
  "keyMoments": [
    {
      "timestamp": "0:03",
      "note": "States the 30-day growth claim"
    },
    {
      "timestamp": "0:22",
      "note": "Shows analytics dashboard spike"
    }
  ],
  "cta": "Follow for the full playbook",
  "transcriptExcerpt": "Here's how I grew my account in 30 days without spending on ads.",
  "vetting": {
    "contentThemes": [
      "creator growth",
      "social media"
    ],
    "tone": "energetic, instructional",
    "audienceFit": "aspiring creators and marketers",
    "brandRiskFlags": [],
    "partnershipRecommendation": "approve"
  }
}

JSON Schema

CREATOR-BRIEF.SCHEMA.JSONjson
{
  "properties": {
    "angle": {
      "type": "string"
    },
    "cta": {
      "type": "string"
    },
    "hook": {
      "type": "string"
    },
    "keyMoments": {
      "items": {
        "properties": {
          "note": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "note"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "summary": {
      "type": "string"
    },
    "transcriptExcerpt": {
      "type": "string"
    },
    "vetting": {
      "properties": {
        "audienceFit": {
          "type": "string"
        },
        "brandRiskFlags": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "contentThemes": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "partnershipRecommendation": {
          "enum": [
            "approve",
            "review",
            "reject"
          ],
          "type": "string"
        },
        "tone": {
          "type": "string"
        }
      },
      "required": [
        "contentThemes",
        "tone",
        "audienceFit",
        "partnershipRecommendation"
      ],
      "type": "object"
    }
  },
  "required": [
    "hook",
    "angle",
    "summary",
    "vetting"
  ],
  "type": "object"
}

recipe

Submit with "format": "recipe". Structured ingredients and steps when the short is a cooking video.

FieldTypeDescription
titlestringRecipe title.
errorstring | nullSet when the video is not a recipe (otherwise null).
ingredientsRecipeIngredient[]item, amount, unit per ingredient.
instructionsRecipeInstruction[]step number and text.
metadataRecipeMetadataprep/cook time, yield, cuisine, temperature, etc.

Example

RECIPE.JSONjson
{
  "title": "30-second pasta carbonara",
  "error": null,
  "ingredients": [
    {
      "item": "spaghetti",
      "amount": "200",
      "unit": "g"
    },
    {
      "item": "guanciale",
      "amount": "100",
      "unit": "g"
    },
    {
      "item": "egg yolks",
      "amount": "3",
      "unit": null
    },
    {
      "item": "pecorino",
      "amount": "50",
      "unit": "g"
    }
  ],
  "instructions": [
    {
      "step": 1,
      "text": "Boil pasta in salted water until al dente."
    },
    {
      "step": 2,
      "text": "Crisp guanciale in a pan; reserve fat."
    },
    {
      "step": 3,
      "text": "Toss hot pasta with egg-pecorino mixture off heat."
    }
  ],
  "metadata": {
    "prepTime": "10 minutes",
    "cookTime": "15 minutes",
    "temperature": {
      "value": null,
      "unit": "C",
      "fanAdjusted": false
    },
    "yield": "2 servings",
    "mealType": "dinner",
    "dishType": "main",
    "cuisine": "Italian",
    "dietaryPreferences": null,
    "cookingMethod": "stovetop",
    "isQuickAndEasy": true
  }
}

JSON Schema

RECIPE.SCHEMA.JSONjson
{
  "properties": {
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "ingredients": {
      "items": {
        "properties": {
          "amount": {
            "type": [
              "string",
              "null"
            ]
          },
          "item": {
            "type": "string"
          },
          "unit": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "item"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "instructions": {
      "items": {
        "properties": {
          "step": {
            "type": "integer"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "step",
          "text"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "metadata": {
      "properties": {
        "cookTime": {
          "type": [
            "string",
            "null"
          ]
        },
        "cookingMethod": {
          "type": [
            "string",
            "null"
          ]
        },
        "cuisine": {
          "type": [
            "string",
            "null"
          ]
        },
        "dietaryPreferences": {
          "type": [
            "string",
            "null"
          ]
        },
        "dishType": {
          "type": [
            "string",
            "null"
          ]
        },
        "isQuickAndEasy": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "mealType": {
          "type": [
            "string",
            "null"
          ]
        },
        "prepTime": {
          "type": [
            "string",
            "null"
          ]
        },
        "temperature": {
          "properties": {
            "fanAdjusted": {
              "type": "boolean"
            },
            "unit": {
              "enum": [
                "C",
                "F"
              ],
              "type": "string"
            },
            "value": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "unit",
            "fanAdjusted"
          ],
          "type": "object"
        },
        "yield": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "temperature"
      ],
      "type": "object"
    },
    "title": {
      "type": "string"
    }
  },
  "required": [
    "title",
    "error",
    "ingredients",
    "instructions",
    "metadata"
  ],
  "type": "object"
}

Full schema reference

JSON Schema for every workflow format, grouped by vertical and auto-generated from internal/gemini/formats — the same schema Gemini is constrained to via responseJsonSchema. Regenerate with task export-format-schemas. The three formats above are repeated here for completeness; scroll up for their richer field tables.

Verticals: Brand (2) · Food (1) · Content (2) · E-commerce (3) · Health (2) · Education (3) · News (3) · Music (3) · Sports (3) · Travel (2).

Brand(2)

Brand

content-screening

"format": "content-screening"

Brand safety, UGC compliance, ad-placement suitability

CONTENT-SCREENING.SCHEMA.JSONjson
{
  "properties": {
    "adPlacement": {
      "properties": {
        "blocklistMatches": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "categories": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "notes": {
          "type": "string"
        },
        "riskLevel": {
          "enum": [
            "low",
            "medium",
            "high"
          ],
          "type": "string"
        },
        "suitable": {
          "type": "boolean"
        }
      },
      "required": [
        "suitable",
        "riskLevel",
        "notes"
      ],
      "type": "object"
    },
    "flags": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "recommendation": {
      "enum": [
        "approve",
        "review",
        "reject"
      ],
      "type": "string"
    },
    "riskLevel": {
      "enum": [
        "low",
        "medium",
        "high"
      ],
      "type": "string"
    },
    "safe": {
      "type": "boolean"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "safe",
    "riskLevel",
    "summary",
    "recommendation",
    "adPlacement"
  ],
  "type": "object"
}
Brand

creator-brief

"format": "creator-brief"

Hooks, angle, key moments, influencer vetting

CREATOR-BRIEF.SCHEMA.JSONjson
{
  "properties": {
    "angle": {
      "type": "string"
    },
    "cta": {
      "type": "string"
    },
    "hook": {
      "type": "string"
    },
    "keyMoments": {
      "items": {
        "properties": {
          "note": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "note"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "summary": {
      "type": "string"
    },
    "transcriptExcerpt": {
      "type": "string"
    },
    "vetting": {
      "properties": {
        "audienceFit": {
          "type": "string"
        },
        "brandRiskFlags": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "contentThemes": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "partnershipRecommendation": {
          "enum": [
            "approve",
            "review",
            "reject"
          ],
          "type": "string"
        },
        "tone": {
          "type": "string"
        }
      },
      "required": [
        "contentThemes",
        "tone",
        "audienceFit",
        "partnershipRecommendation"
      ],
      "type": "object"
    }
  },
  "required": [
    "hook",
    "angle",
    "summary",
    "vetting"
  ],
  "type": "object"
}

Food(1)

Food

recipe

"format": "recipe"

Ingredients and steps from cooking clips

Note: the worker strips reasoning from the Gemini output before persisting, so it never appears in result.

RECIPE.SCHEMA.JSONjson
{
  "properties": {
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "ingredients": {
      "items": {
        "properties": {
          "amount": {
            "type": [
              "string",
              "null"
            ]
          },
          "item": {
            "type": "string"
          },
          "unit": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "item"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "instructions": {
      "items": {
        "properties": {
          "step": {
            "type": "integer"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "step",
          "text"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "metadata": {
      "properties": {
        "cookTime": {
          "type": [
            "string",
            "null"
          ]
        },
        "cookingMethod": {
          "type": [
            "string",
            "null"
          ]
        },
        "cuisine": {
          "type": [
            "string",
            "null"
          ]
        },
        "dietaryPreferences": {
          "type": [
            "string",
            "null"
          ]
        },
        "dishType": {
          "type": [
            "string",
            "null"
          ]
        },
        "isQuickAndEasy": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "mealType": {
          "type": [
            "string",
            "null"
          ]
        },
        "prepTime": {
          "type": [
            "string",
            "null"
          ]
        },
        "temperature": {
          "properties": {
            "fanAdjusted": {
              "type": "boolean"
            },
            "unit": {
              "enum": [
                "C",
                "F"
              ],
              "type": "string"
            },
            "value": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "unit",
            "fanAdjusted"
          ],
          "type": "object"
        },
        "yield": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "temperature"
      ],
      "type": "object"
    },
    "title": {
      "type": "string"
    }
  },
  "required": [
    "title",
    "error",
    "ingredients",
    "instructions",
    "metadata"
  ],
  "type": "object"
}

Content(2)

Content

tutorial-guide

"format": "tutorial-guide"

How-to videos → written guide / FAQ

Note: the worker strips reasoning from the Gemini output before persisting, so it never appears in result.

TUTORIAL-GUIDE.SCHEMA.JSONjson
{
  "properties": {
    "faq": {
      "items": {
        "properties": {
          "answer": {
            "type": "string"
          },
          "question": {
            "type": "string"
          }
        },
        "required": [
          "question",
          "answer"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "sections": {
      "items": {
        "properties": {
          "body": {
            "type": "string"
          },
          "heading": {
            "type": "string"
          },
          "steps": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "heading",
          "body"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "summary": {
      "type": "string"
    },
    "title": {
      "type": "string"
    }
  },
  "required": [
    "title",
    "summary",
    "sections"
  ],
  "type": "object"
}
Content

quote-highlights

"format": "quote-highlights"

Shareable quotes and highlight moments

QUOTE-HIGHLIGHTS.SCHEMA.JSONjson
{
  "properties": {
    "highlights": {
      "items": {
        "properties": {
          "context": {
            "type": "string"
          },
          "quote": {
            "type": "string"
          },
          "shareability": {
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "quote",
          "shareability"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "highlights",
    "summary"
  ],
  "type": "object"
}

E-commerce(3)

E-commerce

product-tagging

"format": "product-tagging"

Products shown with search queries

PRODUCT-TAGGING.SCHEMA.JSONjson
{
  "properties": {
    "products": {
      "items": {
        "properties": {
          "brandGuess": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": "string"
          },
          "confidence": {
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "productDescription": {
            "type": "string"
          },
          "searchQuery": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "category",
          "searchQuery",
          "confidence"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "summary",
    "products"
  ],
  "type": "object"
}
E-commerce

shop-the-look

"format": "shop-the-look"

Fashion items and outfit search queries

SHOP-THE-LOOK.SCHEMA.JSONjson
{
  "properties": {
    "outfitItems": {
      "items": {
        "properties": {
          "brandGuess": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": "string"
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "item": {
            "type": "string"
          },
          "searchQuery": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "item",
          "category",
          "searchQuery"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "searchQueries": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "styleNotes": {
      "type": "string"
    }
  },
  "required": [
    "styleNotes",
    "searchQueries",
    "outfitItems"
  ],
  "type": "object"
}
E-commerce

review-summary

"format": "review-summary"

Pros/cons from product review videos

REVIEW-SUMMARY.SCHEMA.JSONjson
{
  "properties": {
    "cons": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "productName": {
      "type": [
        "string",
        "null"
      ]
    },
    "pros": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "ratingGuess": {
      "type": [
        "string",
        "null"
      ]
    },
    "verdict": {
      "type": "string"
    }
  },
  "required": [
    "pros",
    "cons",
    "verdict"
  ],
  "type": "object"
}

Health(2)

Health

workout-plan

"format": "workout-plan"

Exercises with sets, reps, rest

Note: the worker strips reasoning from the Gemini output before persisting, so it never appears in result.

WORKOUT-PLAN.SCHEMA.JSONjson
{
  "properties": {
    "exercises": {
      "items": {
        "properties": {
          "name": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "reps": {
            "type": "string"
          },
          "rest": {
            "type": "string"
          },
          "sets": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "title": {
      "type": "string"
    }
  },
  "required": [
    "title",
    "exercises"
  ],
  "type": "object"
}
Health

health-claims

"format": "health-claims"

Medical claims flagged for fact-checking

HEALTH-CLAIMS.SCHEMA.JSONjson
{
  "properties": {
    "claims": {
      "items": {
        "properties": {
          "category": {
            "type": "string"
          },
          "needsFactCheck": {
            "type": "boolean"
          },
          "suggestedChecks": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "text": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "text",
          "category",
          "needsFactCheck"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "overallRisk": {
      "enum": [
        "low",
        "medium",
        "high"
      ],
      "type": "string"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "summary",
    "overallRisk",
    "claims"
  ],
  "type": "object"
}

Education(3)

Education

flashcards

"format": "flashcards"

Study flashcards from educational content

FLASHCARDS.SCHEMA.JSONjson
{
  "properties": {
    "cards": {
      "items": {
        "properties": {
          "back": {
            "type": "string"
          },
          "front": {
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "front",
          "back"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "deckTitle": {
      "type": "string"
    }
  },
  "required": [
    "deckTitle",
    "cards"
  ],
  "type": "object"
}
Education

curriculum-tags

"format": "curriculum-tags"

Subject, difficulty, learning objectives

CURRICULUM-TAGS.SCHEMA.JSONjson
{
  "properties": {
    "difficulty": {
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ],
      "type": "string"
    },
    "objectives": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "subject": {
      "type": "string"
    },
    "topics": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "subject",
    "difficulty",
    "objectives",
    "topics"
  ],
  "type": "object"
}
Education

language-learning

"format": "language-learning"

Phrases, vocabulary, grammar patterns

LANGUAGE-LEARNING.SCHEMA.JSONjson
{
  "properties": {
    "grammarNotes": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "phrases": {
      "items": {
        "properties": {
          "text": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          },
          "translation": {
            "type": "string"
          }
        },
        "required": [
          "text",
          "translation"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "targetLanguage": {
      "type": "string"
    },
    "vocabulary": {
      "items": {
        "properties": {
          "meaning": {
            "type": "string"
          },
          "partOfSpeech": {
            "type": "string"
          },
          "word": {
            "type": "string"
          }
        },
        "required": [
          "word",
          "meaning"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "phrases",
    "vocabulary",
    "grammarNotes"
  ],
  "type": "object"
}

News(3)

News

ugc-verification

"format": "ugc-verification"

Scene/location hints for citizen journalism checks

UGC-VERIFICATION.SCHEMA.JSONjson
{
  "properties": {
    "eventHints": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "locationHints": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "sceneDescription": {
      "type": "string"
    },
    "verificationSteps": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "sceneDescription",
    "locationHints",
    "eventHints",
    "verificationSteps"
  ],
  "type": "object"
}
News

breaking-news-signal

"format": "breaking-news-signal"

Newsworthiness signal from one clip

BREAKING-NEWS-SIGNAL.SCHEMA.JSONjson
{
  "properties": {
    "needsFactCheck": {
      "type": "boolean"
    },
    "newsworthiness": {
      "enum": [
        "low",
        "medium",
        "high"
      ],
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "topics": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "urgency": {
      "enum": [
        "low",
        "medium",
        "high"
      ],
      "type": "string"
    }
  },
  "required": [
    "newsworthiness",
    "urgency",
    "topics",
    "summary",
    "needsFactCheck"
  ],
  "type": "object"
}
News

eyewitness-timeline

"format": "eyewitness-timeline"

Structured timeline of factual claims

EYEWITNESS-TIMELINE.SCHEMA.JSONjson
{
  "properties": {
    "events": {
      "items": {
        "properties": {
          "category": {
            "type": "string"
          },
          "claim": {
            "type": "string"
          },
          "source": {
            "enum": [
              "visual",
              "speech",
              "both"
            ],
            "type": "string"
          },
          "time": {
            "type": "string"
          }
        },
        "required": [
          "claim",
          "category",
          "source"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "events"
  ],
  "type": "object"
}

Music(3)

Music

song-context

"format": "song-context"

Background music / performance for licensing

SONG-CONTEXT.SCHEMA.JSONjson
{
  "properties": {
    "detectedAudio": {
      "items": {
        "properties": {
          "description": {
            "type": "string"
          },
          "licensingNotes": {
            "type": "string"
          },
          "role": {
            "enum": [
              "background",
              "performance",
              "unknown"
            ],
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "role",
          "description"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "detectedAudio"
  ],
  "type": "object"
}
Music

lyric-hook

"format": "lyric-hook"

Lip-sync, hooks, rights notes

LYRIC-HOOK.SCHEMA.JSONjson
{
  "properties": {
    "hooks": {
      "items": {
        "properties": {
          "description": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "label",
          "description"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "lyricExcerpt": {
      "type": [
        "string",
        "null"
      ]
    },
    "performanceType": {
      "enum": [
        "lip_sync",
        "live_performance",
        "background_track",
        "unknown"
      ],
      "type": "string"
    },
    "rightsNotes": {
      "type": "string"
    }
  },
  "required": [
    "performanceType",
    "hooks",
    "rightsNotes"
  ],
  "type": "object"
}
Music

sound-trend

"format": "sound-trend"

Audio description and viral potential

SOUND-TREND.SCHEMA.JSONjson
{
  "properties": {
    "audioDescription": {
      "type": "string"
    },
    "trendTags": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "viralPotential": {
      "enum": [
        "low",
        "medium",
        "high"
      ],
      "type": "string"
    }
  },
  "required": [
    "audioDescription",
    "viralPotential",
    "trendTags"
  ],
  "type": "object"
}

Sports(3)

Sports

technique-analysis

"format": "technique-analysis"

Coaching cues for technique clips

Note: the worker strips reasoning from the Gemini output before persisting, so it never appears in result.

TECHNIQUE-ANALYSIS.SCHEMA.JSONjson
{
  "properties": {
    "cues": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "improvements": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "sport": {
      "type": "string"
    },
    "strengths": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "technique": {
      "type": "string"
    }
  },
  "required": [
    "sport",
    "technique",
    "cues",
    "strengths",
    "improvements"
  ],
  "type": "object"
}
Sports

highlight-reel

"format": "highlight-reel"

Action-dense clip timestamps

HIGHLIGHT-REEL.SCHEMA.JSONjson
{
  "properties": {
    "clips": {
      "items": {
        "properties": {
          "actionScore": {
            "type": "integer"
          },
          "end": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "start": {
            "type": "string"
          }
        },
        "required": [
          "start",
          "end",
          "actionScore",
          "label"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "clips"
  ],
  "type": "object"
}
Sports

scouting-report

"format": "scouting-report"

Athlete performance notes for coaches

SCOUTING-REPORT.SCHEMA.JSONjson
{
  "properties": {
    "athlete": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "items": {
        "properties": {
          "name": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "recommendation": {
      "enum": [
        "follow_up",
        "pass",
        "highlight"
      ],
      "type": "string"
    },
    "sport": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "sport",
    "metrics",
    "summary",
    "recommendation"
  ],
  "type": "object"
}

Travel(2)

Travel

destination-guide

"format": "destination-guide"

Itinerary, tips, costs from travel vlogs

DESTINATION-GUIDE.SCHEMA.JSONjson
{
  "properties": {
    "costMentions": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "destination": {
      "type": "string"
    },
    "itinerary": {
      "items": {
        "properties": {
          "activity": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "place": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "place",
          "activity"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "tips": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "destination",
    "itinerary",
    "tips",
    "costMentions"
  ],
  "type": "object"
}
Travel

restaurant-discovery

"format": "restaurant-discovery"

Dishes, prices, atmosphere from food reviews

RESTAURANT-DISCOVERY.SCHEMA.JSONjson
{
  "properties": {
    "atmosphere": {
      "type": "string"
    },
    "dishes": {
      "items": {
        "properties": {
          "description": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "priceMention": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "priceMentions": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "venueName": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "dishes",
    "priceMentions",
    "atmosphere"
  ],
  "type": "object"
}

// LIMITATIONS

Formats analyse a single short-form video. E-commerce formats return searchQuery strings, not purchase URLs. Health, news, and verification formats flag claims for review — they do not assert that claims are true. Feed-scale monitoring is achieved by orchestrating many jobs.