Addons de Stremio¶
Kino puede instalar un addon de Stremio sin que nadie escriba un plugin de Kino: lee el
manifest.json del addon y genera, en el dispositivo, un plugin de Kino que habla con el servidor del
addon. Esta página cuenta cómo lo agrega la gente, cómo se traduce cada recurso de Stremio, qué se
rechaza y hasta dónde llega. Te sirve si mantienes un addon y quieres que funcione bien en Kino, o si
quieres saber por qué un addon se porta distinto de un plugin escrito a mano. Para escribir tu propio
plugin no necesitas nada de esto.
Cómo lo agrega la gente¶
- En Kino, Ajustes ▸ Plugins (en el televisor también con el botón "Plugins" de Inicio), "Agregar
plugin", tipo Stremio, y se pega la URL del
manifest.json("Pega la URL del manifest.json del addon de Stremio (o de una colección de addons)"). Si la dirección es claramente de un addon, Kino escoge el tipo solo. - La dirección se normaliza como lo hace Stremio:
stremio://eshttps://, una dirección sinmanifest.jsonal final lo recibe, y un nombre público conhttppasa ahttps.httpsolo se conserva para la red de la persona (una IP, un nombre de una sola parte,.local/.lan), así que un addon en su propio servidor de la casa se agrega escribiendo su dirección.localhost, las direcciones de loopback y link-local se rechazan, y también una ruta con.,..o barras codificadas. - Una dirección en
github.comoraw.githubusercontent.comse lee como un repositorio de GitHub (un plugin de Kino o un repositorio de Nuvio), nunca como un addon. Sirve tumanifest.jsondesde tu propio dominio. - Un enlace
stremio://…/manifest.jsonque la persona toca (el botón "Install" de una página de addons) abre Kino en Plugins ▸ Agregar con la dirección escrita; Kino no lee nada hasta que la persona toca "Agregar", y un enlace solo puede nombrar un host público. En Android 12 y posteriores un enlacehttps://…/manifest.jsonse abre en el navegador (Android solo le da un enlace web a la app que verificó ese dominio), así que comparte el enlacestremio://o la dirección para pegar. - Kino lee el manifiesto, genera el plugin y abre la hoja de consentimiento de siempre. Nada del addon se usa antes de que la persona acepte.
La dirección completa (que muchas veces lleva la configuración del addon, por ejemplo una clave de
debrid) nunca se escribe en el plugin generado ni en los registros: queda en dos ajustes del plugin,
"Servidor del addon" (addonUrl, el servidor) y "Configuración del addon" (addonPath, el resto de la
ruta, guardado como contraseña en el Keystore). La hoja de consentimiento lo dice: "Guarda la
configuración del addon (puede incluir tu clave) solo en tus aparatos". Esa parte puede tener máximo
2.048 caracteres ("La configuración de ese addon es demasiado larga para guardarla en Kino").
Enlaces a un título. Desde Kino 0.9.51 un enlace detail de Stremio
abre el título en Kino en vez de ignorarse: stremio:///detail/movie/<imdb> o
stremio:///detail/series/<imdb>[/<imdb>:<temporada>:<capítulo>] (el "Open in Stremio" de un servicio
de seguimiento, como el de Seenr). Kino encuentra el título con TMDB y abre sus fuentes -- la pantalla
que abre una tarjeta de Inicio, en celular y TV; un capítulo abre su serie. Solo se acepta un id de IMDb
(tt y de 5 a 10 dígitos); otro tipo o id, un segmento de más, una consulta o un enlace de más de 200
caracteres se ignora, y un título que TMDB no conoce muestra "No encontré ese título". Los enlaces de
addons (stremio://…/manifest.json) funcionan como antes.
Qué arma la conversión¶
- Un plugin por addon, con id
stremio-<nombre>-<hash>: el mismo en todos los aparatos para la misma dirección. En Plugins lleva la insignia "Stremio". version1.<revisión del convertidor>.0(hoy1.10.0),apiVersion4, o 6 cuando el addon usa algo de 6 (búsqueda dentro de una fila,meta, contenido +18).hosts:api.themoviedb.org(Kino usa TMDB para pasar de un id de TMDB a uno de IMDb) y los hosts a los que redirigen tus catálogos (abajo). El servidor del addon no es un host declarado: se llega a él como a un servidor que la persona escribió."streamHosts": "any"(y"liveStreamHosts": "any"si tiene canales): tu video puede estar en cualquier servidor público. La hoja muestra en rojo "Puede reproducir video desde cualquier servidor que indique".downloadcuando el addon reproduce películas o series, así que en el celular se pueden descargar (Descargas); los canales en vivo nunca.- El
logodel addon es el ícono del plugin (máximo 128 KB, leído en 5 s; uno que no es PNG se convierte, o se deja por fuera). - La descripción la arma Kino: "Addon de Stremio. Ofrece: catálogo, streams, subtítulos, canales en vivo." según lo que tengas.
Chips de categoría¶
En la tienda de plugins (Instalados, Recomendados, una colección) cada addon cae en los chips de
categoría según lo que declara su manifiesto: un addon con stream va a Películas (movie, o si no
dice nada), Series (series), Anime (anime, o ids kitsu, mal, anilist, anidb), En
vivo (tv, channel) y Radio (radio, o un catálogo music de radio); un addon sin stream
(listas, meta, colecciones) va a Utilidades (y a Anime si es de anime); subtitles suma
Subtítulos y adult suma +18. Declara bien tus types e idPrefixes: de ahí salen.
Los Recomendados de Kino nunca sugieren un addon que reproduce video (con stream), salvo unos pocos
canales gratis y legales revisados a mano ("Gratis y legal"). La gente agrega el tuyo con su dirección.
Cómo se traduce cada recurso¶
| Recurso de Stremio | En Kino |
|---|---|
catalog de movie, series, anime u otro tipo |
Filas de Inicio con su "Ver más" (las 20 primeras, 60 títulos por fila), con el tipo en el título: "Popular · Películas", "Popular · Series". |
catalog de tv, channel, radio (o music con "radio" en su id o nombre) |
Categorías de canales en En vivo (máximo 200), 500 canales por página. Un radio sin "radio" en el nombre se muestra como "… · Radio". |
catalog con el extra search |
La búsqueda escrita (hasta 3 catálogos, 100 resultados) y la búsqueda dentro del "Ver más" de esa fila. Uno de tv/channel responde la búsqueda de En vivo (hasta 3). |
catalog con search obligatorio |
Solo búsqueda, nunca fila. |
catalog con otro extra obligatorio (genre…) |
Se omite: Kino no sabe qué valor mandar. Un genre opcional nunca se manda. |
extra skip |
Paginación de "Ver más" y de los canales (abajo). |
meta |
Ficha y capítulos de tus títulos; además describe títulos de otras fuentes cuando TMDB y AniList no tienen nada (abajo). |
stream |
Lo que se reproduce (Streams). |
subtitles |
Subtítulos del video y la "Buscar subtítulos en línea" del reproductor (Subtítulos). |
addon_catalog |
Una colección de addons (abajo). |
Un addon reproduce exactamente donde Stremio le preguntaría: los types y los idPrefixes de su
recurso stream (los del objeto del recurso, si no los del manifiesto). Un id o un tipo por fuera nunca
se le pregunta (un kitsu: a un addon que solo acepta tt). Kino ve el anime como series, y un addon
que solo declara anime (o solo series) recibe la petición con su propia palabra.
Ids e identificación¶
Kino reconoce un título por su id de IMDb (tt…) y, si lo das, por el de TMDB (moviedb_id, como en
Cinemeta). Con eso tu título se junta con el mismo título de otras fuentes, recibe la ficha de TMDB y
puede buscar subtítulos. Un título que la persona abre desde la ficha de TMDB se le pide a tu addon
como tt… (o tt…:temporada:capítulo), así que declara tt en los idPrefixes de stream si
quieres que te pregunten por los títulos de las demás fuentes. Antes de ofrecer tu addon en esa
búsqueda, Kino confirma que tienes el título con una petición a tu /stream (máximo 3 títulos por
búsqueda).
Búsqueda¶
- Búsqueda escrita: tus catálogos con
search. Si no tienes ninguno (o no devuelven nada), Kino busca el texto en TMDB y ofrece solo lo que tustreampuede reproducir por id de IMDb. - Ficha de un título ("Ver otras fuentes"): solo si tu
streamacepta ids de IMDb para ese tipo. Un addon solo de catálogo (Cinemeta, Kitsu) o solo de canales no responde aquí. - Dentro de un "Ver más": si el catálogo de esa fila acepta
search, la búsqueda se le hace a tu addon consearch=…y se pagina conskip.
Paginación¶
Kino pide /catalog/<tipo>/<id>/skip=N.json con N = cuántos títulos ya mostró (máximo 100 por página).
Para cuando una página llega vacía, cuando un skip distinto devuelve exactamente la misma página (un
addon que ignora skip) o pasados 20.000 títulos.
meta¶
Con meta, los títulos de tu catálogo tienen ficha y capítulos (videos con season y episode
mayores que 0; temporadas hasta 999). Un addon que tiene meta también describe títulos de otras
fuentes (la capacidad meta): cuando TMDB y AniList dejan algo vacío en una
ficha, Kino te pregunta con el id que cubre tu recurso meta (tt…, tmdb:, kitsu:, mal:,
anilist:). Un addon que solo tiene meta sirve para eso y se instala igual. Desde Kino 0.9.51 el
logo de un meta, su nota de IMDb (imdbRating, o el nombre de su enlace imdb, donde lo ponen los
addons al estilo de AIOMetadata) y su reparto (app_extras.cast, si no cast, si no sus enlaces
Cast) pasan a ser el logo, las notas y el reparto de la ficha.
Canales en vivo¶
Un catálogo tv, channel o radio es una categoría de En vivo; cada meta es un canal (su logo,
o su poster). Se reproduce con el reproductor en vivo, sin barra de progreso ni descarga. No hay guía
de programación. Si una página de canales falla, la persona ve "No pude cargar los canales de este
addon".
Streams¶
Kino reproduce solo enlaces directos http(s) en el campo url. Se descartan los streams con
infoHash (P2P/torrent), nzbUrl (Usenet), rarUrls, zipUrls, tgzUrls, tarUrls, servers,
ytId (YouTube) y externalUrl.
De los que quedan, Kino ordena del mejor al peor: primero los que no tienen
behaviorHints.notWebReady; luego por la resolución que dice tu name, title o description (1080p,
720p, sin etiqueta y 2160p/4K de último, porque la mayoría de aparatos no lo decodifica); dentro de cada
nivel ganan los enlaces .m3u8/.mp4, se evita HEVC con audio DTS/Dolby y se prefiere 8 bits a 10
bits (Hi10P). Los empates conservan tu orden, así que pon primero tu mejor stream. La dirección
nunca cuenta como evidencia: solo lo que el stream dice de sí mismo.
- Copias y cambio automático. El mejor se reproduce y hasta 8 más quedan como
alternatives: si uno no se puede reproducir en el aparato, Kino pasa solo al siguiente. En el menú Servidor del reproductor aparecen como "Opción 1", "Opción 2"…: Kino no usa elnameni eltitledel stream como etiqueta. - Encabezados.
behaviorHints.proxyHeaders.requestse manda con el video (máximo 20 encabezados, solo valores de texto).proxyHeaders.responsese ignora. notWebReadyno se rechaza: Kino no necesita un servidor de streaming para reproducirlo, solo lo pone de último.- Tipo. Una dirección que termina en
.m3u8es HLS y una en.mpdes DASH; lo demás lo detecta el reproductor. - Tiempo. Tu
/streamtiene 20 s, y elresolvedel plugin generado tiene 75 s en total (como un scraper de Nuvio), contando la conversión de TMDB a IMDb y los subtítulos.
Subtítulos¶
Los subtitles de un stream y los de tu recurso subtitles (pedido con 5 s, solo para películas y
capítulos) se juntan: máximo 30, uno por dirección, con su idioma de tres letras pasado a dos (spa →
es). Un archivo .vtt o .srt se marca con su formato.
Un addon con subtitles también responde la "Buscar subtítulos en línea" del reproductor para
cualquier título que Kino conozca por IMDb o TMDB, de cualquier fuente
(subtítulos para cualquier título): primero los idiomas de la persona, con el
nombre de la versión (movieReleaseName o subtitleFileName). Desde Kino 0.9.51 el pedido lleva
lo que Kino sabe del archivo que suena como los extras propios de Stremio,
/subtitles/{type}/{id}/videoHash=…&videoSize=…&filename=….json (cada uno solo cuando se conoce,
codificado para URL; videoSize=0 junto a un filename cuyo tamaño no se conoce; nunca la URL del
video), para que el addon ponga primero la versión exacta; sin nada conocido la ruta queda la de
siempre. Un addon que solo tiene
subtitles (OpenSubtitles v3) se instala como proveedor de subtítulos: no aparece en Inicio, en la
búsqueda ni en En vivo, y su hoja dice "Agrega subtítulos a tus películas y series".
Un traductor (su nombre o descripción dice "translat" o "traduc", o el idioma trae la marca gt, como
esgt de GTSubs) muestra sus pistas de su propio servidor como "Español (traducido)". Las pistas de
aviso info: de GTSubs se saltan. Un traductor se instala con su dirección ya configurada (la que da su
página de configuración, con el idioma en la ruta).
Lo que Kino rechaza¶
| Qué | Lo que lee la persona |
|---|---|
Un addon de torrents o P2P: behaviorHints.p2p, o "torrent", "magnet" o "p2p" en su id, nombre o descripción (desde Kino 0.9.51 una descripción que los nombra solo para negarlos, "no incluye streams, torrents ni contenido P2P", no cuenta; el id y el nombre siguen estrictos). También con debrid. |
"Kino no admite addons de torrents, ni siquiera con debrid" |
Un manifiesto sin id o name, o que no es JSON |
"Esto no es un addon de Stremio (no encontré su manifest.json)" |
Un addon sin catalog, meta, stream ni subtitles |
"Este addon no ofrece nada que Kino pueda usar" |
| Una dirección que no es la de un addon | "Esa dirección no es la de un addon de Stremio" |
| Un manifiesto de más de 256 KB | "La respuesta del addon es demasiado grande: no parece un addon de Stremio" |
| Una redirección a este mismo aparato | "El addon redirige a una dirección de este mismo aparato, y Kino no la sigue" |
Kino nunca reproduce P2P, no tiene cliente BitTorrent ni servidor de streaming local, y no corre ningún
servidor en el aparato: lo que tu addon solo puede entregar a través del servidor de streaming de
Stremio no funciona aquí. Un addon de torrents instalado antes de esta regla se apaga en su siguiente
revisión de actualizaciones y queda en Instalados para que la persona lo quite. Si un título solo tiene
enlaces P2P, el reproductor dice "
Addons configurables¶
behaviorHints.configurationRequired: Kino no lo instala desde su dirección sin configurar ("… necesita configurarse en su página antes de instalarlo") y ofrece "Configurar en su página", que abre<dirección>/configureen el navegador del celular. El botón "Install" de esa página devuelve un enlacestremio://con la dirección configurada, que llena "Agregar" y se instala normal. El televisor no abre la página: le dice a la persona que lo haga desde el celular, y la configuración le llega por la sincronización.behaviorHints.configurable(o una dirección que ya trae configuración): el plugin instalado ofrece "Reconfigurar", que abre la misma página con las opciones actuales. Si la persona instala el mismo addon del mismo servidor con otra configuración, Kino actualiza ese plugin en vez de crear otro (salvo que tenga dos configuraciones instaladas, o que la nueva dirección venga sin configuración y la vieja tenga una: eso nunca borra su clave).- Para que esto funcione, tu página de configuración debe terminar en un enlace
stremio://…/manifest.jsoncon la configuración en la ruta, como lo espera Stremio. - Una llave de TMDB en la configuración (Kino 0.9.53): cuando la configuración trae un campo cuyo nombre contiene
"tmdb" con una llave de TMDB (una v3 de 32 caracteres o un token de lectura v4; en texto, JSON, base64 o codificada
en la URL), Kino le ofrece a la persona, una sola vez, usarla para
kino.tmdb("Usar la llave de TMDB de tu addon"). Solo si dice que sí, y la llave nunca sale del aparato salvo hacia TMDB. Una configuración guardada en tu servidor (solo un id opaco en la dirección) simplemente no se encuentra.
Addons +18¶
Un addon con behaviorHints.adult se instala detrás del código de 18+ de la persona (el mismo de
Ajustes): Kino lo pide antes de la hoja de consentimiento, que dice "Contenido para adultos (+18)". Todo
lo que da el addon queda marcado +18 (contenido +18): se muestra solo mientras el
código está desbloqueado en ese aparato. Mientras está bloqueado, el plugin no aparece en Plugins, en
los filtros de búsqueda ni en las ofertas de los otros aparatos. Si tu addon es para adultos, declara
adult: un addon que no lo dice se muestra como cualquier otro.
Colecciones¶
Un addon cuyo único uso es listar otros addons (addon_catalog, sin catalog, meta ni stream) es
una colección: no se instala ("… es una colección de addons: elige cuáles agregar"). Kino la guarda en
"Tus colecciones de Stremio" y muestra sus addons como tarjetas, con las mismas reglas de arriba: los de
P2P, los que no ofrecen nada y los +18 con el código bloqueado no aparecen. Cada addon se instala con
su propia hoja. Una colección se lee solo en direcciones https públicas y sin configuración en la
ruta; máximo 20 listas por colección y 300 addons por lista. Kino no trae ni agrega ninguna colección
por su cuenta.
Redirecciones de los catálogos¶
Algunos addons responden sus catálogos con una redirección a otro servidor (Cinemeta los manda a
cinemeta-catalogs.strem.io), y un plugin solo puede seguir una redirección desde el servidor de la
persona hacia ese mismo servidor o hacia un host declarado. Por eso, al instalar, Kino prueba las
direcciones de catálogo que va a usar (la primera página de cada fila y una posterior, cada catálogo de
búsqueda, cada categoría en vivo: máximo 30, unos 10 s en total) y declara cada host público https al
que redirigen; la persona los ve en la hoja de consentimiento. Una redirección a una dirección local o
por http nunca se declara.
Solo se descubren las redirecciones de los catálogos. Si tu /meta, /stream o /subtitles
redirige a otro host, esa petición falla: responde esos recursos desde el servidor del addon (el
video en sí puede estar en cualquier host público).
Qué se sincroniza¶
El plugin generado y sus ajustes van y vienen entre los aparatos conectados de la persona (sincronización): el servidor viaja en la fila de sincronización y la parte con la configuración viaja sellada de punta a punta. El otro aparato vuelve a leer el addon por su cuenta y genera el mismo plugin. "Tus colecciones de Stremio" también se sincronizan, y quitar una la quita en los dos. Así, la persona configura en el celular y el TV recibe el addon listo, y "Ver en el TV" reproduce un título del addon con la copia del propio TV.
Actualizaciones¶
La versión solo cambia con el convertidor de Kino. "Buscar actualización" (y la revisión en segundo plano) vuelve a leer el addon en la dirección guardada, repite la prueba de redirecciones, regenera el plugin y lo compara con el instalado: un cambio que solo toca lo que ya estaba aprobado se instala solo; uno que agrega hosts, canales o descargas espera la aprobación de la persona. Si la dirección ahora es de otro addon ("La dirección ahora es de otro addon") o ya no se puede leer, el plugin instalado sigue como estaba.
Límites¶
| Qué | Límite |
|---|---|
Leer manifest.json |
256 KB, 15 s en total, máximo 5 redirecciones |
| Catálogos que se conservan | 200 (además, si el script generado pasa de 1 MB, se quitan los últimos y la descripción dice "Aviso: el addon tiene demasiados catálogos; N quedaron fuera.") |
| Filas de Inicio | 20 catálogos, 60 títulos cada una |
| Una página de "Ver más" | 100 títulos; hasta skip 20.000 |
Petición a tu catálogo o tu meta |
12 s (6 s al describir títulos de otras fuentes) |
Petición a tu /stream |
20 s; resolve completo 75 s |
Petición a tu /subtitles |
5 s |
| Respuesta | 5 MB por petición, 60 peticiones por llamada (límites del motor) |
| Streams usados | el mejor + 8 alternativas |
| Subtítulos | 30 |
| Hosts de redirección declarados | 20 |
Cuando algo falla¶
| Lo que ve la persona | Qué pasa |
|---|---|
| "No encontré el addon en esa dirección" | manifest.json respondió 404. |
| "El addon tardó demasiado en responder. Intenta de nuevo en un rato." | El manifiesto no llegó en 15 s. |
| "No pude conectarme con el addon. Revisa la dirección y tu conexión." | El nombre no resuelve o el servidor no contesta. |
| "El servidor del addon respondió con un error (N)…" | Un estado de error al leer el manifiesto. |
| " |
El addon no tiene stream: es solo catálogo. |
| " |
El tipo o el id del título está por fuera de los types/idPrefixes de tu stream. |
| "Esta fuente ya no tiene este título ( |
Tu /stream respondió una lista vacía, o nada reproducible. |
| " |
Todos los streams eran P2P. |
| "Falta la dirección del addon: escríbela en Configurar" | Al buscar actualización, el ajuste "Servidor del addon" está vacío. |
Diagnóstico: el interruptor de modo debug de cada plugin, también los de Stremio, y la página Registro están en Registro y telemetría. El plugin generado escribe en el registro solo conteos (cuántos streams llegaron, cuántos eran P2P, cuántos se pueden reproducir) y el host de una redirección no aprobada, nunca tu dirección ni tus enlaces.
Cuándo escribir un plugin de Kino¶
Un addon de Stremio funciona sin escribir nada, pero un plugin de Kino puede más:
- Copias con nombre y perezosas: "Latino · Servidor 1" en el menú Servidor, y copias que se resuelven solo cuando la persona las escoge (copias con etiqueta).
- Su propio formulario de ajustes dentro de Kino, con estado y acciones, en vez de una página web externa (formulario de ajustes).
- Streams firmados por petición y cambio de servidor cuando un token vence (firma por petición).
- El navegador oculto, para servidores que arman el video con scripts (navegador oculto).
- Canales en vivo con guía, listas M3U/XMLTV y búsqueda en vivo (canales en vivo).
- Una sección propia, categorías y colores (sección, categorías y colores),
Widevine (recetario),
Stream.skippara saltar intro, tus propias frases de error (userMessage), sesiones conkino.storageykino.cookies. - Firma de autor y aparecer en "De la comunidad" (plugins firmados, aparecer en Kino).