Frameskim Apify Store

Frames y momentos de YouTube para agentes de IA

Dale a tu agente los frames y los momentos de un video de YouTube

Frameskim es una API para extraer fotogramas de YouTube que devuelve los frames y los momentos de un video público de YouTube en los timestamps que pidas, por $0.12 por video más $0.015 por frame. Dale una URL pública de YouTube. Recibe frames en timestamps exactos, las palabras dichas entre uno y otro, y los momentos que responden tu pregunta. Por la API de Apify o por MCP.

Frameskim es una API para extraer fotogramas de YouTube que devuelve los frames y los momentos de un video público de YouTube en los timestamps que pidas, por $0.12 por video más $0.015 por frame. Dale una URL pública de YouTube. Recibe frames en timestamps exactos, las palabras dichas entre uno y otro, y los momentos que responden tu pregunta.

Desde US$0.12 por video. Una ejecución que falla no se cobra.

Una pregunta señala una tira de frames sobre una línea de tiempo; el frame que la responde se abre en grande abajo.
Cada video: frames en timestamps exactos y el momento que responde tu pregunta.

Salida real

Perseverance Rover’s Descent and Touchdown on Mars (Official NASA Video) youtu.be/4czjS9h4Fpg3:25Courtesy NASA/JPL-Caltech.

Encuentra el momento

Respuesta0:00:15

El paracaídas totalmente abierto en la vista en tiempo real, en 0:00:15. 0:00:15
 moments("when does the parachute deploy")
{ "frameTime": "0:00:15", "score": 0.95, "imageUrl": "https://api.apify.com/v2/key-value-stores/…" }

Los agentes leen texto. La respuesta muchas veces está en pantalla. Frameskim encuentra el momento, entrega el frame y dice exactamente cuándo pasa.

Un frame cada 10 segundos. En ámbar, el frame que devuelve cada pregunta.

  1. 1when does the parachute deployframe en 0:00:15
  2. 2when does the heat shield separateframe en 0:00:35

Tres modos, un video por ejecución

Pide frames, un segmento o el momento.

Frames

  1. El paracaídas abierto sobre el rover, en 0:00:15.0:00:15
  2. De nuevo el paracaídas, en 0:00:25.0:00:25
  3. El escudo térmico cayendo sobre la superficie de Marte, en 0:00:35.0:00:35
  4. La superficie de Marte desde la cámara de descenso, en 0:00:45.0:00:45

Un frame cada N segundos en el rango que elijas. Cada ítem trae su segundo, su timestamp, su tamaño y un link firmado a la imagen que abre sin token.

{
  "mode": "frames",
  "url": "https://youtu.be/4czjS9h4Fpg",
  "start": "0:15",
  "end": "0:45",
  "every": 10
}
{
  "videoId": "4czjS9h4Fpg", "t": 15.0, "ts": "0:00:15",
  "imageUrl": "https://api.apify.com/v2/key-value-stores/.../records/frame-000-15000.jpg",
  "width": 854, "height": 480, "source": "media"
}

Salida: un ítem por frame y al final un ítem de resumen

Segmento

El paracaídas totalmente abierto en la vista en tiempo real, en 0:00:15. 0:00:15

"text" dicho hasta el frame siguiente

…navigation has confirmed that the parachute has deployed…

Los mismos frames más el texto de la transcripción dicho entre cada frame y el siguiente. El ítem de resumen suma un bloque de Markdown listo para pegar: una línea por frame con su timestamp, el texto y el link a la imagen.

{
  "mode": "segment",
  "url": "https://youtu.be/4czjS9h4Fpg",
  "start": "0:15",
  "end": "0:45",
  "every": 10
}
{
  "videoId": "4czjS9h4Fpg", "t": 15.0, "ts": "0:00:15",
  "text": "...", "imageUrl": "https://...",
  "width": 854, "height": 480, "source": "media"
}

Salida, con lo que se dice hasta el frame siguiente

Momentos

query "when does the parachute deploy"

window
0:00:00 a 0:00:30
frameTime
0:00:15
score
0.95
El paracaídas totalmente abierto en la vista en tiempo real, en 0:00:15. 0:00:15

Una pregunta en lenguaje natural. Frameskim puntúa la transcripción y devuelve los mejores momentos que la responden, del mejor al peor, cada uno con su ventana y el frame del medio.

{
  "mode": "moments",
  "url": "https://youtu.be/4czjS9h4Fpg",
  "query": "when does the parachute deploy",
  "topK": 3
}
{
  "videoId": "4czjS9h4Fpg", "start": 0.0, "end": 30.0, "ts": "0:00:00",
  "frameTs": 15.0, "frameTime": "0:00:15", "score": 0.95, "text": "...",
  "imageUrl": "https://...", "width": 854, "height": 480, "source": "media"
}

Salida: un ítem por momento, valores acortados

Conectar

Dáselo a Claude, o llámalo desde cualquier lado.

Agrega una línea a tu config de MCP y Claude puede llamarlo. Desde código, un POST devuelve los frames en JSON.

{
  "mcpServers": {
    "apify": { "url": "https://mcp.apify.com/?actors=emttn/frameskim" }
  }
}

Después pide: “Usa Frameskim para encontrar dónde dice este video que se abre el paracaídas y muéstrame el frame.”

{
  "mode": "moments",
  "url": "https://youtu.be/4czjS9h4Fpg",
  "query": "when does the parachute deploy",
  "topK": 3
}
  1. Agrega el nodo oficial de Apify (@apify/n8n-nodes-apify), operación Run Actor, y elige emttn/frameskim. Pega el JSON de arriba como su input.
  2. Agrega un segundo nodo de Apify, Get Dataset Items, para leer los resultados.
  3. ¿Sin nodo de Apify? Usa un nodo HTTP Request: POST https://api.apify.com/v2/acts/emttn~frameskim/run-sync-get-dataset-items con un header Authorization: Bearer y el mismo JSON como body.
# pip install langchain-apify   (APIFY_TOKEN set in the environment)
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("emttn/frameskim")
items = tool.invoke({"run_input": {
    "mode": "moments", "url": "https://youtu.be/4czjS9h4Fpg",
    "query": "when does the parachute deploy", "topK": 3,
}})

O pásale tool a un agente de LangChain y deja que decida cuándo llamarlo.

curl -X POST "https://api.apify.com/v2/acts/emttn~frameskim/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "segment", "url": "https://youtu.be/4czjS9h4Fpg", "start": "1:00", "end": "1:30"}'
import os, requests

items = requests.post(
    "https://api.apify.com/v2/acts/emttn~frameskim/run-sync-get-dataset-items",
    headers={"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"},
    json={"mode": "moments", "url": "https://youtu.be/4czjS9h4Fpg",
          "query": "when does the parachute deploy", "topK": 3},
    timeout=300,
).json()

for item in items[:-1]:  # the last item is the run summary
    print(item["ts"], item["frameTime"], item["imageUrl"])

Precios

Pago por evento. Sin suscripción.

Apify cobra cada evento y nunca más que el límite de gasto que fijas para la ejecución.

Por video
US$0.12Una vez por ejecución que entrega frames.
Por frame
US$0.015Cada frame sacado del video.

Búsqueda de momentos US$0.02. Video HD US$0.60 en lugar de US$0.12. Frame de storyboard (cuando YouTube bloquea la descarga) US$0.002. Lista completa en Apify

hd cobra 0.60 USD por video en cuanto se intenta la descarga en resolución completa, aunque YouTube la bloquee y los frames pasen a storyboard; standard cobra 0.12 y usa storyboard cuando la resolución completa costaría demasiado.

¿Por qué algunos frames tienen baja resolución?

YouTube bloquea muchas descargas automáticas. En lugar de fallar, Frameskim usa las imágenes de storyboard de YouTube y cobra el precio menor de storyboard. quality: hd paga un intento en resolución completa.

¿Qué idiomas?

Cualquier idioma en el que el video tenga subtítulos; indica lang (por defecto en) y Frameskim vuelve al idioma original si no está.

¿Y si una ejecución falla?

El mensaje de estado dice por qué y termina con "Nothing was charged." (no se cobró nada). Reintenta más tarde si YouTube bloqueó la solicitud.

¿Dónde quedan mis frames?

Solo en el storage de Apify de tu propia ejecución, con la retención de tu plan. Frameskim no guarda copias.

¿Cuáles son los límites?

Un video por ejecución. maxFrames es 50 por defecto; un rango más largo amplía every para no superarlo. moments permite 3 búsquedas por mes en el plan gratuito de Apify y 200 por día en los planes de pago, sobre hasta 540 ventanas de transcripción (unas 3 horas de video).

Dale un video. Recibe el momento.

Ejecútalo en Apify

Corre en tu cuenta de Apify. Leer la documentación