El formato funscript, campo por campo
El formato funscript es un objeto JSON con una clave esencial, actions: una lista de pares {"at", "pos"} que dan una posición de 0 a 100 en un momento en milisegundos. A su alrededor están version, inverted, range y metadata. Esta página define cada campo, las convenciones que siguen los archivos y exactamente qué hace AutoScript Sync cuando lee y escribe uno.
Comprobado con el código de la aplicación el 21 de septiembre de 2026. Describe las convenciones comunes, no una especificación formal.
La estructura
Un funscript es un único objeto JSON guardado como texto UTF-8 con la extensión .funscript. Un archivo pequeño completo, con la forma en que lo guarda AutoScript Sync:
{
"version": "1.0",
"inverted": false,
"range": 100,
"metadata": {
"creator": "AutoScript Sync",
"format": "funscript"
},
"actions": [
{"at": 0, "pos": 50},
{"at": 350, "pos": 95},
{"at": 720, "pos": 5},
{"at": 1080, "pos": 95},
{"at": 1500, "pos": 5},
{"at": 5500, "pos": 5}
]
}
Los dos últimos puntos mantienen la misma posición durante cuatro segundos: un reposo se escribe como dos puntos con el mismo pos, no como un hueco. En JSON el orden de las claves no importa, y los espacios en blanco son libres.
Los campos
actions- Un array de puntos, cada uno un objeto con
atypos. Es el único campo que necesita un reproductor. Un archivo sin él no es un script utilizable. at- El momento del punto en milisegundos desde el inicio del vídeo, como número entero.
1500es segundo y medio. pos- La posición en la que estar en ese momento, como número entero de 0 a 100. Lo que significan físicamente 0 y 100 depende del dispositivo y sus ajustes; el archivo solo dice "hasta aquí del rango".
version- La versión del formato como cadena, normalmente
"1.0". invertedtrueofalse. Cuando es true, las posiciones deben leerse invertidas, como100 − pos.range- Un número, normalmente
100, que describe la amplitud depos. La mayoría de los archivos lo dejan en 100. metadata- Un objeto para cualquier cosa sobre el script: el programa que lo creó, un título, notas, etiquetas. Los reproductores no lo necesitan para reproducir el archivo.
Los archivos de los editores suelen llevar claves adicionales de nivel superior, como capítulos o marcadores. Están permitidas; un lector que no las entienda debería ignorarlas y, idealmente, conservarlas.
Convenciones que sigue un archivo bien formado
ates un número entero de milisegundos, contado desde el inicio del vídeo, nunca negativo.poses un número entero de 0 a 100.- Las acciones están ordenadas por
at, de la más temprana a la más tardía. - Dos acciones nunca comparten el mismo
at. - Los números son números JSON, no cadenas:
"at": 400, no"at": "400".
Los programas difieren en cuánto toleran un archivo que incumple estas reglas. La aplicación de escritorio repara lo que puede, como se describe más abajo. Nuestra propia herramienta de navegador, Report Studio, no lo hace: da por hecho que las acciones ya están ordenadas, toma la duración de la última acción, ignora inverted y range, y rechaza un archivo cuyos valores at sean cadenas. Un archivo que sigue las cinco convenciones evita esas diferencias.
Cómo lee un archivo AutoScript Sync
Cuando abres un script con Load Funscript…, lo sueltas en la ventana o abres un vídeo con un script del mismo nombre al lado, la aplicación repara las acciones en lugar de rechazar el archivo:
- ordena las acciones por tiempo;
- fusiona las acciones que comparten tiempo y conserva la última;
- limita
posa 0–100 y los tiempos negativos a 0; - omite las entradas que no puede leer, sin decir cuántas;
- lee
rangepero nunca lo usa para reescalar, así que un archivo con un rango distinto de 100 se sigue tratando como 0–100; - conserva
versiontal como la encuentra ("1.0"si falta).
La próxima actualización (2.121.2, ya compilada pero aún no publicada) hace que el lector acepte más archivos y conserve más de lo que contienen:
- los archivos guardados con marca de orden de bytes (BOM), o en UTF-16, se cargan en lugar de rechazarse;
inverted: truese aplica una vez al cargar (100 − pos), con un aviso para ti, y el archivo se vuelve a guardar coninverted: false, de modo que cualquier otro reproductor vea el mismo movimiento. La aplicación publicada ignora el indicador, así que un archivo invertido se reproduce al revés;- los valores fraccionarios de
atyposse redondean al número entero más cercano, y los valores NaN o infinitos se omiten; - las claves de nivel superior desconocidas, como capítulos o marcadores, se conservan y se vuelven a escribir al guardar; la aplicación publicada las elimina al guardar;
- un archivo que no es texto, no es JSON, no es un objeto o no tiene lista
actionsrecibe un mensaje en lenguaje claro, y un script sin acciones utilizables no se asocia al vídeo.
Cómo escribe un archivo AutoScript Sync
Cada script que guarda la aplicación, generado o editado, sigue las convenciones anteriores, pase lo que pase en el editor:
- Las acciones se escriben en orden de tiempo ascendente, con tiempos únicos,
atcomo número entero no negativo de milisegundos yposcomo número entero de 0 a 100. Si dos puntos se redondean al mismo milisegundo, gana el posterior. - Cabecera:
version,invertedyrangese escriben tal como están; un script generado recibe"1.0",falsey100. - Metadatos:
creatorsiempre se establece en"AutoScript Sync"yformaten"funscript". Guardar encima del script de otra herramienta sustituye su creador. - Detalles del análisis en los scripts generados: generador, resumen del reconocimiento, tiempos, ruta de seguimiento y un bloque
aicon la etiqueta de tipo de escena de cada ventana de dos segundos, la región seguida, cuánto se rellenó en lugar de medirse y las puntuaciones de la elección de ancla. - Guardado seguro: el JSON se escribe, con sangría, en un archivo temporal y luego se intercambia, así que un fallo a mitad del guardado no puede corromper el script existente.
- Copia de seguridad: cuando Generate guarda junto al vídeo, cualquier script existente se copia primero a
<name>.funscript.bak. Solo se conserva una copia; el siguiente Generate la sobrescribe.
El archivo en disco nunca se ajusta a un dispositivo. Cuando la aplicación envía un script al Autoblow AI Ultra, ajusta una copia a los límites del dispositivo y quita los metadatos del análisis, conservando solo el movimiento y unos pocos campos de cabecera (generator, creator, format, version, range, stroke_expansion y un id si lo hay).
Errores comunes y cómo encontrarlos
El validador de funscripts comprueba cada uno de ellos en tu navegador, sin subir el archivo, y enumera los problemas que encuentra.
- JSON no válido
- Falta una coma o un corchete, o sobra una coma tras la última acción. Nada puede leer el archivo hasta que se corrija.
- Acciones ausentes o mal formadas
- No hay clave
actions, o hay entradas sinatyposnuméricos. - Tiempos desordenados
- Suele ocurrir al unir dos scripts o al editar a mano. Los programas que dan por hecho que las acciones están ordenadas muestran una duración errónea o la reproducción da saltos.
- Tiempos repetidos
- Dos puntos en el mismo
atcon posiciones distintas: un reproductor no puede estar en dos sitios a la vez. - Posiciones fuera de 0–100
- Un
pospor debajo de 0 o por encima de 100 apunta fuera del rango que un reproductor asigna al dispositivo. - Movimientos demasiado rápidos para el dispositivo
- No es un error de formato, pero un salto grande en poco tiempo pide más de lo que un dispositivo puede hacer. El validador señala los tramos que superan un límite de velocidad que tú fijas, 400 unidades por segundo por defecto.
Cuando el archivo es JSON válido con una lista actions, el validador ofrece una copia reparada: ordenada por tiempo, con los tiempos duplicados fusionados, las posiciones limitadas a 0–100 y los valores redondeados, conservando todo lo demás del archivo. No puede reparar un JSON roto ni una lista actions ausente, y no ralentiza los movimientos demasiado rápidos.
Preguntas
¿Existe una especificación oficial de funscript?
Esta página describe las convenciones que siguen los archivos en circulación y lo que AutoScript Sync lee y escribe. No es un estándar formal, y no describimos cómo gestionan otros reproductores los casos límite.
¿Cuántos puntos por segundo debe tener un script?
El formato no fija ninguna frecuencia. Los puntos van donde el movimiento cambia de sentido. Los scripts generados por AutoScript Sync ponen un punto en cada inversión del movimiento medido, así que una escena lenta tiene pocos y una rápida, muchos.
¿Por qué mi script dice "creator": "AutoScript Sync" si lo hizo otra persona?
La aplicación estampa su nombre como creador en cada guardado, incluido un guardado encima del script de otra herramienta. Vuelve a poner el nombre del autor original en los metadatos, o en tu publicación, cuando lo compartas.
¿AutoScript Sync conserva los capítulos y otras claves adicionales?
En la próxima actualización (2.121.2), sí: las claves de nivel superior desconocidas se conservan y se vuelven a escribir. La versión publicada 2.121.1 las elimina al guardar, así que guarda una copia del original.
Sigue leyendo
- Comprueba un archivo con el validadorEncuentra en tu navegador los errores de esta página y ofrece una copia reparada.
- Una introducción en lenguaje claroQué es un funscript y cómo lo usa un dispositivo, sin el detalle de los campos.
- Cómo hacer un script, a mano o generadoEl proceso desde el vídeo hasta un archivo guardado y comprobado.
- El centro de aprendizajeLas cuatro páginas de referencia.
Genera scripts bien formados a partir de tus vídeos
AutoScript Sync escribe funscripts estándar junto a tus vídeos; la prueba es la aplicación completa durante un día.