Communitygithub.com

texopub-publish

Publica o actualiza un sitio web HTML estático o sube un archivo independiente al espacio TexoPub del usuario mediante herramientas MCP conectadas a la nube.

¿Qué es texopub-publish?

Esta habilidad permite a los agentes de IA publicar, actualizar y administrar contenido en la plataforma TexoPub a través de herramientas MCP en la nube. Está diseñada para agentes como Claude Code, Cursor, Codex y otros que soporten el protocolo MCP. La habilidad maneja la publicación de sitios web estáticos completos (incluyendo HTML, CSS, JS, imágenes), la subida de archivos individuales, la catalogación de sitios externos, la gestión de perfiles de creador y tarjetas de socios de IA, así como el control de visibilidad y la eliminación permanente de contenido. Utiliza operaciones idempotentes, verificación de versiones y manejo de conflictos para garantizar la integridad de las publicaciones. No requiere que el usuario comparta claves API, contraseñas ni códigos de verificación, ya que la conexión se realiza mediante OAuth. La habilidad también incluye pautas para la elección de listado (público, solo perfil, no listado) y la eliminación segura de borradores y publicaciones de prueba.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/ivanliyuanning/texopub/tree/main/service/plugin/skills/texopub-publish

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Instrucciones en español: https://texopub.com/for-ai/es/SKILL.md · Interfaz en español: https://texopub.com/?lang=es

Publicación en la nube de TexoPub

Usa las herramientas MCP de TexoPub. Se ejecutan en la nube y no pueden leer una ruta del sistema de archivos local. La conexión del plugin usa la cuenta de TexoPub del usuario; instalar el paquete no autoriza por sí mismo la publicación.

Elegir la operación

SolicitudLeer primeroHerramienta de escritura/acción
Buscar categorías o obras públicaslist_categories; catálogo público vía HTTPNo se necesita publicación
Identificar propio espacio/contenidoget_my_space, list_my_works, get_work, list_my_materialsNo se necesita mutación
Cambiar nombre humano/avatar/biografíaget_my_profileupdate_my_profile
Registrar/cambiar una tarjeta de socio IAget_my_profileupsert_ai_partner
Publicar/actualizar un sitio estático alojadolist_categories; get_work para actualizacionespublish_website
Catalogar/actualizar un sitio externo existentelist_categories; get_work para actualizacionessubmit_website
Subir/actualizar un archivo independienteget_work para actualizacionesupload_asset
Publicar un sitio completo más grandeinspect_files en lotesprepare_upload → upload_file → commit_upload
Cambiar el listado de un sitio web existenteget_workset_work_listing
Cambiar el listado predeterminado futuroget_my_spaceset_publish_preferences
Cambiar el acceso a un activo independienteget_workset_asset_visibility
Cerrar acceso / eliminar permanentementeget_workarchive_work / delete_work respectivamente

get_work solo lee contenido propio, incluidos borradores/archivados. No es un lector arbitrario de obras públicas. Un plugin conectado usa OAuth; no solicites una clave API separada ni pidas un código de verificación/cookie. El sitio web es una comunidad de lectura/visualización con inicio de sesión humano, aceptación de página de inicio y gestión de credenciales; la edición de contenido pertenece a la IA.

Elección de listado y eliminación permanente

Antes de cada publicación de sitio web pregunta: "¿Dónde mostrarlo? No mostrar / Solo página de inicio personal / Mostrar públicamente (predeterminado)". Lee get_my_space.default_listing para la sugerencia predeterminada. Si el usuario ya eligió en la solicitud o dio una instrucción permanente aplicable, síguela sin preguntar de nuevo. Un valor predeterminado sugerido no es una respuesta; cuando se necesita una respuesta, espera a que llegue. El valor predeterminado inicial es public; el usuario puede solicitar cambiarlo usando set_publish_preferences(default_listing) sin cambiar obras existentes ni abrir su página de inicio. Cambiar solo el valor predeterminado no suprime la pregunta de publicación.

listing: unlisted = No mostrar (solo en la colección de gestión del propietario); profile = Solo página de inicio personal (solo en su página de inicio personal habilitada); public = Mostrar públicamente (página de inicio y descubrimiento de TexoPub). Los tres modos mantienen la URL y las dependencias accesibles para cualquier persona con el enlace. Estos son controles de listado, no autenticación privada. Los activos independientes mantienen sus propias reglas de acceso privado/público separadas. No habilites una página de inicio personal automáticamente.

Pasa el listing a publish_website o prepare_upload. Las actualizaciones que lo omiten conservan el valor existente de la obra. Para cambiarlo sin subir archivos, lee get_work, luego llama a set_work_listing(work_id, expected_version, expected_revision, listing).

Cuando se solicite explícitamente eliminar permanentemente, lee get_work y luego llama a delete_work(work_id, expected_version, confirm=true). La versión de un borrador puede ser nula. La eliminación es irreversible: cierra el acceso, elimina cada versión histórica y archivos no utilizados por otro contenido, y libera cuota después de completarse. Si deleted=false, continúa usando exactamente los mismos parámetros hasta que deleted=true; reintenta errores usando esos mismos parámetros. No informes éxito prematuramente. La pequeña lápida de dirección permanece para que las URL antiguas no puedan apuntar al trabajo futuro de otra persona. archive_work solo cierra el acceso y conserva el historial/cuota, por lo que no es una eliminación permanente. Limpia las publicaciones de prueba desechables con delete_work después de la aceptación.

Publicar un sitio web

  1. Confirma que el contenido solicitado es un sitio web estático y que el usuario solicitó la publicación. Crear una página por sí solo no es permiso para publicarla. No subas credenciales, investigación de fuentes ni archivos no relacionados.
  2. Lee list_categories para elegir un category_id de segundo nivel válido y un format apropiado. Usa la ruta completa group.id/child.id, por ejemplo technology/software, nunca el ID hijo software solo.
  3. Para un sitio web nuevo, crea un icono SVG dedicado y autocontenido que coincida con su tema y pásalo como icon_svg. Un icono de plataforma genérico no es un icono específico de la obra.
  4. Usa publish_website. Envía una pequeña página autocontenida como html, páginas de texto adicionales/CSS/JS como text_files, y archivos de conversación autorizados como attachments con attachment_paths coincidentes. Los valores de los archivos deben pasarse a través del mecanismo de archivos del host, no una URL sandbox: ni una ruta local. Las rutas relativas preservan los enlaces de páginas e imágenes. Proporciona el conjunto completo de archivos, incluidas todas las dependencias de la página.
  5. Usa una idempotency_key estable para reintentos de exactamente la misma versión. Una nueva versión prevista necesita una nueva clave. El servidor valida los bytes del archivo y confirma solo después de que todo el paquete esté listo.
  6. Devuelve la URL del servicio real más work_id/versión para actualizaciones de seguimiento. No afirmes aceptación de navegador móvil o interacción sin probarlo.

publish_website de una sola llamada acepta hasta 8 archivos, incluido el icono/portada, 25 MiB cada uno y 32 MiB combinados; HTML está limitado a 2 MiB. El JSON completo de la solicitud MCP está limitado a 3 MiB, por lo que el texto en línea grande también necesita publicación por etapas. Para sitios web más grandes, usa inspect_files en lotes de hasta 8 para obtener el recuento exacto de bytes y los hashes SHA256, combina el manifiesto, llama a prepare_upload, luego upload_file una vez por archivo y finalmente commit_upload. La publicación por etapas admite el límite existente de 250 archivos / 100 MiB por paquete y mantiene el borrador privado hasta que todos los archivos estén listos. Usa el mismo upload_id al reintentar. Acepta archivos estáticos extraídos, no un ZIP que requiera extracción del lado del servidor ni un proyecto fuente de framework que requiera compilación. Primero, compila/exporta dicho proyecto en el entorno de ejecución disponible. Si no se puede entregar un archivo referenciado al plugin, conserva la obra y explica el problema específico de entrega del archivo; nunca afirmes que la publicación se realizó con éxito.

La plataforma agrega su propia barra de título/inicio y favicon. La obra controla su propia interfaz de lectura; no agregues una barra de plataforma duplicada ni reserves un desplazamiento de encabezado de plataforma.

Actualizar un sitio web existente

Usa list_my_works y get_work para encontrar la obra prevista y la versión actual. Pasa su slug original, work_id y la versión actual como expected_version. Las actualizaciones conservan la URL pública. Solo para publish_website, el icono específico de la obra anterior se puede reutilizar omitiendo icon_svg e icon; el icono reutilizado aún cuenta para el límite de 8 archivos. submit_website siempre requiere icon_svg, incluidas las actualizaciones. prepare_upload requiere un manifiesto completo explícito con un archivo de icono y su ruta empaquetada. En caso de conflicto de versión, recupera el estado actual antes de continuar; no crees un duplicado ni sobrescribas cambios silenciosamente.

Las actualizaciones envían una nueva versión completa, no un parche. Incluye todas las páginas/dependencias y metadatos conservados. listing y ai_partners omitidos conservan sus valores antiguos; ai_partners: [] borra los créditos. No asumas que otros campos omitidos se conservan: resumen/etiquetas/formato pueden volver a los valores predeterminados, y una cover omitida usa el respaldo tipográfico. Incluye la imagen de portada original y su ruta nuevamente para mantenerla. Una herramienta no acepta todos los campos disponibles en la CLI/REST; submit_website, por ejemplo, no tiene parámetros de etiquetas/licencia. No inventes parámetros ni afirmes que los campos no admitidos se conservaron.

Archivos independientes

Usa upload_asset con un archivo de conversación autorizado. Omite visibility para almacenamiento privado. Establece visibility: public solo cuando el usuario autorice el acceso público; una URL de activo privado requiere autenticación del propietario y no es una URL de imagen anónima o de descarga. Las imágenes necesarias para una página web pública deben incluirse en el paquete de archivos de esa página web. Al subir una versión de reemplazo, envía explícitamente el visibility previsto; omitirlo usa privado, en lugar de garantizar el permiso anterior. Para cambiar solo el permiso, usa set_asset_visibility sin volver a subir.

Cuenta y eliminación

get_my_space identifica el espacio conectado; list_my_materials lista sus archivos. archive_work cierra el acceso y mantiene el uso de almacenamiento histórico; úsalo solo ante la solicitud de eliminación del usuario, después de leer la versión actual. No puede eliminar obras de otros editores.

Si se requiere conexión, permite que el host inicie OAuth y que el usuario inicie sesión en texopub.com. Nunca le pidas que pegue una contraseña, código de verificación, clave de publicación o cookie en la conversación. Las conexiones se pueden revocar en https://texopub.com/api/oauth/connections.

Identidad del creador y socios de IA (v0.3.0)

TexoPub es una comunidad de co-creación humana y de IA. Su sitio web muestra contenido; la edición la realiza la IA. El inicio de sesión humano, la aceptación de la página de inicio, la emisión de claves API y la aprobación de OAuth permanecen en el sitio web.

Usa get_my_profile antes de update_my_profile. Proporciona el expected_revision actual, cambia solo los campos que el usuario solicitó y vuelve a leer en caso de conflicto. name: null restaura el nombre generado estable; avatar_url: "" restaura el avatar generado; bio: "" borra la biografía. Agrega una biografía solo cuando el usuario la proporcione o la confirme. Los avatares personalizados deben ser imágenes HTTPS públicas, nunca URL de archivos autenticados privados. Las herramientas de perfil no pueden habilitar la página de inicio.

Lee primero get_my_profile y reutiliza la clave de socio existente del cliente coincidente. Usa upsert_ai_partner para registrar o actualizar un socio propio: key estable, un nombre de application confirmado y el expected_revision actual de ese socio (0 para nuevos), no la revisión del perfil humano. El nombre omitido por defecto es el de la aplicación. Solo establece un apodo, biografía, avatar personalizado o show_on_profile cuando esté cubierto por la solicitud del usuario. Esta es una identidad autoinformada, no una atribución de modelo verificada.

Pasa ai_partners a publish_website / prepare_upload para los participantes reales en esta obra: [{"key":"codex","application":"Codex","contribution":"Implementó el diseño y la interacción"}]. Informa model solo cuando se conozca del cliente actual. Omite modelo y biografía desconocidos. Simplemente subir no es autoría. No infieras créditos de obras antiguas. La participación histórica confirmada por el usuario se puede usar, pero registrar un socio nunca agrega créditos a obras antiguas y no existe una herramienta de crédito solo de metadatos separada. Usa una actualización de obra autorizada completa cuando el paquete fuente completo esté disponible; de lo contrario, conserva la obra y explica la capacidad/fuente faltante. Una matriz omitida conserva los créditos existentes al actualizar; una matriz vacía los borra explícitamente. model y contribution pertenecen a cada declaración de obra, no a upsert_ai_partner. Actualiza el nombre/avatar de visualización de un socio existente a través de la herramienta de socio; una declaración de publicación no renombra una tarjeta registrada. Un socio aparece en una página de inicio habilitada a través de créditos de perfil/obra pública o una solicitud explícita show_on_profile: true. Establecerlo en false solo cancela la visualización independiente; no oculta los créditos en obras visibles. No existe una herramienta de eliminación de identidad de socio.

La generación de portada es opcional. Pasa una ruta de imagen empaquetada como cover, o permite el diseño alternativo de título/categoría/icono de la plataforma. No obligues a los usuarios a generar imágenes solo para publicar.

Sitios web existentes y permisos de activos

Usa submit_website para un sitio web HTTPS público existente. Proporciona su URL, categoría e icono dedicado; no copies los archivos del sitio original ni cambies su alojamiento. Las actualizaciones usan la identidad de obra original y la versión actual.

Usa set_asset_visibility solo para un activo independiente propio, después de get_work; pasa la versión/revisión actual. El acceso público requiere la solicitud explícita del usuario. Esto cambia los permisos sin reemplazar bytes. No se aplica a las dependencias de una página web.

Límites de capacidad actuales y verificación

No existe una herramienta pública para cambiar solo el título/resumen/portada/créditos de IA de una obra existente sin enviar una nueva versión completa. El mantenimiento de la base de datos del propietario de la plataforma no es una capacidad general del plugin. No crees un reemplazo HTML vacío ni pierdas dependencias solo para cambiar metadatos. El perfil humano/tarjetas de socio, el listado y la visibilidad de activos independientes sí tienen herramientas de actualización directa.

Los borradores de carga caducados no se pueden confirmar después de 24 horas y aún ocupan almacenamiento. Una obra nueva no utilizada con una versión nula se puede eliminar permanentemente; no existe una operación pública para eliminar solo una versión de borrador abandonada de una obra que de otro modo está publicada. No elimines toda la obra publicada para limpiar un borrador.

Después de las escrituras, vuelve a leer el perfil/obra real y verifica solo los cambios solicitados, versión, URL, alcance y créditos. Verifica no listado en contenido propio, perfil en una página de inicio habilitada, público en descubrimiento; verifica el acceso al activo, así como sus metadatos. Una respuesta exitosa de la herramienta o un HTTP 200 no es evidencia de aceptación móvil o de interacción. En caso de 409, vuelve a leer el estado actual; en caso de 401/403, restaura la conexión/permisos previstos. Reintenta fallos transitorios con la misma clave de idempotencia/parámetros de operación; los fallos repetidos necesitan un informe concreto, no un bucle infinito.

Skills relacionados