Documentación

Proyectos: comandos CLI

Cree, seleccione, renombre, mueva y exporte proyectos, inicie y cierre sesión, invite a personas, lea los límites del plan y los importes de publicidad, y ejecute doctor.

Cada comando se ejecuta como describe la referencia de la CLI: banderas globales, salida JSON, códigos de salida, revisiones y reintentos.

Ciclo de vida del proyecto y la organización

El proyecto actual es el último usado. Cada sobre JSON incluye contexto de organización y proyecto; la salida humana nombra ambos. Las credenciales de identidad están limitadas por la membresía del proyecto seleccionado. El estado de reintento se mantiene separado por proyecto.

project list
project token --projects IDS
project use ID
project create NAME [--organization-id ID | --organization NAME]
project moves
project move --organization-id ID
project transfer-owner --user-id ID
project deletion-preview
project delete --name NAME --revision N --yes
organization list
organization rename ID NAME
project export DIR [--no-media] [--since YYYY-MM-DD]
agent disconnect --yes [--allow-lockout]
agent revoke-identity --yes

project list verifica las membresías accesibles. project token --projects IDS reemplaza los proyectos que cubre el token de este inicio de sesión por de 1 a 64 ID de proyecto con consentimiento, separados por comas o espacios. project use selecciona uno. La creación requiere un nombre único en su organización y toma por defecto la organización del proyecto actual, luego la organización que usted administra; cuando no se nombra ninguna, primero va la organización que tiene el dominio de correo electrónico verificado del propietario. La persona responsable pasa a ser el propietario. Cada plan limita cuántos proyectos puede tener una organización; cada persona tiene una organización Standard gratuita, y una segunda requiere Plus, Premium o Enterprise. Sin proyecto actual ni organización indicada, el servidor ubica el proyecto del mismo modo. --organization NAME inicia una organización nueva solo para una persona que no tenga una gratuita; de lo contrario, la creación se rechaza con free_organization_limit, cuyo detalle nombra la organización que debe usarse. La inscripción está sujeta a límites de tasa.

El propietario puede mover el proyecto a un destino devuelto por project moves, o transferir la propiedad a un miembro verificado existente. Un movimiento lleva consigo las pantallas, y una organización de destino que ya tiene tantos proyectos como permite su plan lo rechaza con project_limit_reached. La eliminación usa el nombre actual exacto y la revisión positiva de su vista previa. Requiere cero pantallas no archivadas, ningún plan propio y ninguna publicidad activa. Solo el propietario del proyecto o un administrador de su organización puede eliminarlo; un agente elimina en nombre de su persona responsable, o por sí solo únicamente el proyecto que inscribió mientras ninguna persona haya aceptado esa inscripción. Envía un correo a los miembros y conserva una lápida.

Los nombres de organización pueden repetirse; use ID explícitos al renombrar una organización que administra. Una organización tiene administradores designados y miembros propios; los administradores invitan a otros administradores y miembros por correo desde el panel. organization list marca las organizaciones free y plan_required, informa new_organization_allowed y nombra el proyecto de biblioteca de una organización en library_project_id cuando lo tiene. Su lista de proyectos no concede acceso al contenido de los proyectos. Paga la organización: su plan, su almacenamiento y su límite de solicitudes de agentes son compartidos por sus proyectos.

login --project ID solicita ese proyecto con la misma identidad. Solo la aprobación explícita de esta solicitud concede la membresía. agent disconnect --yes revoca una membresía (--allow-lockout también permite revocar el último agente del proyecto); agent revoke-identity --yes revoca por separado la identidad y todas las membresías. Una respuesta ambigua conserva las credenciales locales y el estado de reintento para reconciliación.

Los informes publicitarios conservan datos de liquidación más allá de la retención de eventos. Lea sus metadatos de cobertura: reproducciones históricas faltantes o duración aprobada desconocida son desconocidas, nunca cero. Un informe puede tener totales financieros completos e historial de resultados incompleto.

Proyectos, invitaciones y diagnósticos

Los comandos de proyecto listan membresías, seleccionan un proyecto, crean proyectos y gestionan sus nombres, propietarios, movimientos y eliminación. Las invitaciones incorporan personas a proyectos o redes publicitarias.

project show#

Leer el registro del proyecto.

project show

Sin parámetros.

screenrig project show

project rename#

Establecer el nombre que las personas ven en el conmutador de proyectos del panel.

project rename NAME

project token#

Reemplazar los proyectos que cubre el token de este inicio de sesión.

project token --projects IDS
ParámetroTipoRequeridoPredeterminadoNotas
--projects IDSstringsíningunoDe 1 a 64 ids de proyecto prj_ distintos, separados por comas o espacios, cada uno con el consentimiento de esta identidad.
screenrig project token --projects prj_01EXAMPLEPROJECT0000,prj_01EXAMPLEOTHER000000

Reemplaza el subconjunto completo; project list por sí solo no concede acceso. Una respuesta perdida conserva el id de solicitud de rotación para un reintento idéntico.

project capabilities#

Leer el plan del proyecto, las banderas de función independientes screens y advertiser y el conjunto de capacidades efectivas. Una denegación de ruta prevalece sobre una lectura de capacidad obsoleta.

project capabilities

project uptime#

Leer la disponibilidad diaria de pantallas del proyecto durante días UTC.

project uptime [--day-from YYYY-MM-DD] [--day-to YYYY-MM-DD] [--format json|csv|xlsx|pdf] [--output FILE]
ParámetroTipoRequeridoPredeterminadoNotas
--day-from YYYY-MM-DDstringno29 días antes de --day-toPrimer día UTC, inclusive.
--day-to YYYY-MM-DDstringnohoyÚltimo día UTC, inclusive. Como máximo 366 días después de --day-from.
--format FORMATstringnojsonjson es la respuesta del comando. csv, xlsx o pdf escribe todas las filas en --output y responde con su path, bytes, sha256, content_type y format.
--output FILErutano./project-uptime.FORMATEl archivo para csv, xlsx o pdf: una ruta de archivo, no un directorio, y no -. Un archivo existente se reemplaza. No con json.
screenrig project uptime
screenrig project uptime --day-from 2026-09-01 --day-to 2026-09-30

El rango y los valores predeterminados son los de screen uptime. data.items lista una fila por día UTC, del más antiguo al más reciente: online_s y offline_s sumados sobre las pantallas con estado registrado ese día, availability, coverage (la proporción del día de esas pantallas con estado registrado) y screens (cuántas tenían estado registrado). La fila de hoy cubre intervalos que terminaron hasta ahora; screen list muestra quién está en línea ahora.

project health-trend#

Leer la salud de la flota por hora UTC: pantallas reportando, calientes, pantalla desconectada, fallando.

project health-trend [--from TIME] [--to TIME] [--format json|csv|xlsx|pdf] [--output FILE]
ParámetroTipoRequeridoPredeterminadoNotas
--from TIMEstringno24 horas antes de --toInicio inclusivo de la hora: un instante RFC 3339 con segundos y un desplazamiento (normalizado a UTC), now, o una antigüedad como 7d, 12h o 30m.
--to TIMEstringnoahoraFin exclusivo, en las mismas formas. Máximo 93 días después de --from.
--format FORMATstringnojsonjson es la respuesta del comando. csv, xlsx o pdf escribe todas las filas en --output y responde con su path, bytes, sha256, content_type y format.
--output FILErutano./health-trend.FORMATEl archivo para csv, xlsx o pdf: una ruta de archivo, no un directorio, y no -. Un archivo existente se reemplaza. No con json.
screenrig project health-trend
screenrig project health-trend --from 7d

data.items lista la salud de la flota por hora UTC: hour, screens_reporting, hot (temperatura máxima igual o superior a 80 °C), display_disconnected, y crashing (3 o más fallos en 24 horas). La CLI sigue next_cursor hasta el final y responde cada hora con next_cursor null. Las horas siguen a los informes con hasta unos 5 minutos de retraso.

project export#

Escribir los datos de este proyecto en un directorio en formatos abiertos.

project export <DIR> [--no-media] [--since YYYY-MM-DD]
ParámetroTipoRequeridoPredeterminadoNotas
<DIR>rutasíningunoEl directorio en el que escribir. Se crea si hace falta, y una nueva ejecución lo continúa y lo actualiza.
--no-mediabooleannoapagadoOmitir los archivos multimedia originales; el manifiesto los sigue listando con sus hashes.
--since YYYY-MM-DDstringnohasta donde el plan conserve los datosPrimer día UTC de los CSV de reproducciones, tiempo activo y reproducción, y del registro de eventos.
screenrig project export ./export
screenrig project export ./export --no-media --since 2026-01-01

DIR obtiene JSON del proyecto, las pantallas, las carpetas de pantallas, las etiquetas, las programaciones por pantalla, las listas de reproducción con todas sus revisiones, las campañas, las campañas directas, las tarjetas y sus datos, las fuentes (nunca sus credenciales), las notificaciones, los webhooks (sin secretos de firma ni URL de receptor), los silenciamientos, los metadatos de aplicación, los activadores y las suscripciones a informes; los archivos multimedia originales en media/files, con media/manifest.json que contiene el SHA-256 de cada archivo; CSV de reproducciones, reproducción, tiempo activo y alertas en data/; y el registro de eventos en log/events.jsonl. export.json se escribe al final y lista cada archivo con su tamaño y su SHA-256, y el resultado de cada sección (ok, skipped o failed). Una nueva ejecución conserva los archivos multimedia completos y continúa los parciales. Una sección que la credencial no puede leer es skipped; la advertencia export_section_failed significa que la copia está incompleta, así que ejecute de nuevo el mismo comando. Los archivos de aplicación se informan como omitidos con complete: false y la advertencia export_application_content_omitted, también con --no-media: conserve los archivos originales de las aplicaciones para la recuperación. Cada solicitud es una solicitud de API facturada, y las descargas multimedia son salida de datos.

invitations#

Crear, listar o revocar invitaciones para miembros del proyecto, usuarios de carga y compradores de anuncios.

invitations create (--email ADDRESS[,ADDRESS] | --link) [--kind member|uploader|ad-buyer]
    [--screen-id IDS] [--screen-folder-id IDS] [--slot-id IDS] [--policy trusted|review_required]
    [--folder-id IDS] [--playlist-id IDS] [--access propose|manage]
invitations list [--kind member|ad-buyer] [--status STATUS]
invitations revoke ID

--kind predetermina a member. La entrega por correo electrónico es la predeterminada y expira después de siete días. --email acepta destinatarios separados por comas, hasta cincuenta por solicitud. --link es solo para miembros, no nombra ningún destinatario y devuelve una sola vez una URL de invitación de veinticuatro horas para entrega directa a la persona prevista. Nunca ponga esa URL en registros, notas o una transcripción compartida. Las listas nunca la devuelven. Puede haber como máximo 50 invitaciones pendientes por organización.

Los compradores de anuncios usan solo correo electrónico y necesitan un alcance de pantalla o espacio propio (o ambos). --screen-id y --slot-id aceptan IDs separados por comas; --policy selecciona trusted o review_required. Los filtros de estado son queued, sent, issued, accepted, revoked, expired y failed.

--kind uploader invita a una persona que trabaja solo en las carpetas multimedia indicadas con --folder-id (al menos una) y en las listas de reproducción indicadas con --playlist-id: sube contenido a esas carpetas y agrega, reemplaza y elimina páginas de esas listas, y nada más. Sus cambios quedan a la espera de revisión salvo que --access manage, lo cual solo puede conceder quien puede aprobar revisiones. Una invitación --kind member con --screen-folder-id (cada carpeta incluye todas las carpetas que contiene) o --screen-id limita a la persona que la acepta a esas pantallas. --folder-id, --playlist-id y --access requieren --kind uploader, y --slot-id y --policy requieren --kind ad-buyer. Véase Autenticación.

screenrig invitations create --email teammate@example.com
screenrig invitations create --kind ad-buyer --email buyer@example.com --screen-id scr_LOBBY --policy review_required

Los agentes no aceptan invitaciones. La persona invitada abre el correo, inicia sesión o crea una passkey, y acepta en el panel. El registro por enlace verifica primero su correo. Revocar una invitación aceptada no anula una membresía; use los controles de membresía de comprador para revocar el acceso publicitario.

agent status#

Reportar si esta instalación tiene una credencial usable.

agent status

Sin parámetros.

screenrig agent status

Solo lectura. Nunca cambia el estado local ni el del servidor, y no cuesta nada. El resultado lleva el access de la sesión, su effective_access y, cuando la configuración de revisión del proyecto o un miembro sin aprobación lo mantiene bajo, access_limited_by (project o person). Cuando el proyecto limita a este agente a carpetas de pantallas y pantallas, screen_scope las enumera (folder_ids, cada una con todas las carpetas que contiene, y screen_ids) y person_screen_scope es el alcance de la persona responsable del agente; el agente actúa solo en las pantallas que ambos permiten, y ambos están ausentes para un agente de todo el proyecto. Fuera del alcance, un comando responde outside_screen_scope (código de salida 3). Las notas nuevas del proyecto, o las notas pendientes de revisión, añaden la advertencia notes_waiting.

agent disconnect#

Revocar la membresía de este agente en el proyecto actual.

agent disconnect --yes [--allow-lockout]
ParámetroTipoRequeridoPredeterminadoNotas
--yesbooleansíapagadoConfirmar la revocación. Sin ella no se envía nada.
--allow-lockoutbooleannoapagadoPermitir desconectar al último agente del proyecto. Sin ello, el servidor se niega con agent_lockout_risk.
screenrig agent disconnect --yes

Revoca solo la membresía del proyecto actual: la identidad, las demás membresías, el proyecto y sus pantallas permanecen. Las credenciales locales y el estado de reintento se conservan cuando la respuesta es ambigua, por lo que volver a ejecutar es seguro.

agent revoke-identity#

Revocar esta identidad y todas sus membresías de proyecto.

agent revoke-identity --yes
ParámetroTipoRequeridoPredeterminadoNotas
--yesbooleansíapagadoConfirmar la revocación en todos los proyectos.
screenrig agent revoke-identity --yes

Una revocación confirmada borra las credenciales locales y el trabajo pendiente de cada proyecto en caché. Un fallo ambiguo los conserva.

login#

Inicie sesión en esta instalación con una cuenta existente, con la aprobación de una persona en el panel, o como un cliente de servicio.

login [--project ID] [--access read|propose|manage] [--name NAME] [--no-wait] [--resume ID]
login --client-id ID (--client-key-file PATH | --client-secret-file PATH)
ParámetroTipoRequeridoPredeterminadoNotas
--project IDstringnoningunoSugiera el proyecto prj_ que la persona aprueba.
--access LEVELstringnoadministrarread, propose o manage. La persona toma la decisión final.
--name NAMEstringnoningunoNombre de esta instalación, máximo 80 caracteres.
--no-waitbooleannoapagadoDevolver status: pending con la dirección, el código y un identificador login_.
--resume IDstringnoningunoEspere el inicio de sesión pendiente que --no-wait inició.
--client-id IDstringnoningunoInicie sesión con esta configuración como un cliente de servicio (scl_…) en lugar de una persona, sin aprobación. No con --no-wait, --project, --access ni --name.
--client-key-file PATHrutacon --client-idningunoLa clave privada del cliente, un JWK o PEM. Exactamente uno entre el archivo de clave y el archivo de secreto.
--client-secret-file PATHrutacon --client-idningunoUn archivo que contiene el secreto del cliente.
screenrig login --access read
screenrig --config ci.json login --client-id scl_01EXAMPLECLIENT0000 --client-key-file ci-key.pem

Imprime la dirección del panel y un código de ocho letras en stderr, luego espera hasta 24 horas. La persona verifica que el código coincida y presiona Conectar una vez, sin segunda solicitud de passkey tras un inicio de sesión en el panel en la última hora. El sobre informa status: signed_in, el proyecto, la organización y access. Ejecutarlo de nuevo en una instalación con sesión iniciada añade un proyecto o eleva un proyecto de Solo lectura o Proponer a Gestionar. La denegación es login_denied y la expiración es login_expired.

La configuración de un cliente de servicio debe ser su propio archivo: cada comando posterior con ese --config inicia sesión como el cliente, lee el archivo de clave o secreto cada vez y mantiene el token en memoria.

logout#

Finalizar la sesión de esta instalación y eliminar sus tokens.

logout

Sin parámetros.

screenrig logout

Revoca el inicio de sesión en el servidor, luego elimina los tokens almacenados e informa status: signed_out. En la configuración de un cliente de servicio elimina el cliente guardado y deja su archivo de clave o secreto. Un fallo que podría no haber llegado al servidor los mantiene, por lo que volver a ejecutar es seguro. Ejecute screenrig login para iniciar sesión nuevamente.

dashboard#

Abra la URL ordinaria del panel. Este comando no genera un enlace de inicio de sesión, crea una sesión ni necesita credencial de agente.

dashboard [open]
screenrig dashboard

El dashboard muestra los proyectos de la persona después de iniciar sesión. La selección de proyecto en el navegador no cambia el proyecto vinculado a un agente.

dashboard reset-sign-in#

Solicitar un correo electrónico de restablecimiento de inicio de sesión sin credencial de agente.

dashboard reset-sign-in --email ADDRESS

El acuse no revela si el correo tiene inicio de sesión. El restablecimiento enviado por correo expira en una hora; la persona crea una nueva passkey. La finalización reemplaza sus credenciales de inicio de sesión y revoca otras sesiones. Mientras la propiedad del proyecto siga pendiente desde la inscripción, --email con la dirección de inscripción original también envía por correo una nueva invitación de inscripción de siete días; la persona la abre y acepta con su inicio de sesión para reclamar la propiedad.

doctor#

Verifique esta instalación e informe cada verificación por nombre.

doctor [--repair-config]
ParámetroTipoRequeridoPredeterminadoNotas
--repair-configbooleannoapagadoRestringa los permisos en un archivo de configuración existente que sea legible por grupo u otros.
screenrig doctor

data.checks nombra cada verificación y su estado (pass, warn o fail): el runtime de Node, la ruta de configuración resuelta y sus permisos, la credencial almacenada y el fin del inicio de sesión, el origen del plano de control y sus rutas de servicio, la capacidad feedback anunciada, y la cadena de herramientas multimedia opcional (ffmpeg, ffprobe, encoder_libx264, encoder_libx265, encoder_libwebp, cwebp, filter_hdr_tonemap).

Cualquier verificación fallida hace que doctor salga con código distinto de cero, y un warn no, así que lea los nombres individuales antes de marcar la instalación como no saludable. Una cadena de herramientas de medios faltante afecta solo a los comandos que convierten medios: media upload, media upload-batch, media replace y playlist init.

version#

Imprima la versión del CLI incluida y su adaptador de protocolo.

version

Sin parámetros.

screenrig version

Ejecute esto primero en una sesión. Un sobre exitoso prueba que el lanzador resolvió la CLI incluida. --version y -V hacen lo mismo desde cualquier línea de comandos.

Facturación

Límites del plan e importes de publicidad del proyecto. Las solicitudes, el almacenamiento, la reproducción y todo lo demás que hace un proyecto nunca se cobran; los importes de aquí son solo de publicidad. Los tres comandos son gratuitos, y las lecturas de /api/billing no cuentan para el límite por hora de solicitudes de agentes.

billing usage#

Leer los límites de almacenamiento y de solicitudes de agentes del plan.

billing usage

Sin parámetros.

screenrig billing usage

data.stored_bytes es el almacenamiento usado y data.allowance.storage_bytes el límite de almacenamiento del plan; una subida que lo supere se rechaza con quota_exceeded. data.allowance.requests_per_hour es el límite por hora de solicitudes de agentes (agent_requests_per_hour en la salida para personas). Las solicitudes que quedan en esta hora están en el encabezado RateLimit de cada respuesta contada.

billing balance#

Leer los importes de publicidad en dólares estadounidenses: restante, reservado, disponible y ganancias pagables.

billing balance

Sin parámetros.

screenrig billing balance

Los anunciantes pagan con tarjeta o con un pago de máquina x402, los precios y las ganancias son en dólares estadounidenses y los pagos empiezan el 1 de enero de 2027. La salida para personas muestra dólares; el JSON conserva los miembros decimales mcr, donde 10,000,000 mcr son US$1.

billing statement#

Leer las entradas publicadas del libro mayor.

billing statement [--cursor CURSOR] [--limit COUNT]
ParámetroTipoRequeridoPredeterminadoNotas
--cursor CURSORstringnoprimera páginaEl next_cursor de un estado de cuenta anterior.
--limit COUNTintegernopredeterminado del servidorEl máximo de entradas que devolver.
screenrig billing statement --limit 20

Las entradas son filas del libro mayor ya contabilizadas, en dólares estadounidenses y en un orden estable. Las reservas aparecen como retenciones, no como ganancias o gastos contabilizados, y una corrección enlaza con la entrada original en lugar de reescribirla. Un cargo de publicidad lo ve el comprador; un vendedor ve su importe bruto, la comisión de servicio y el neto.

Otros grupos de comandos