# Shipcast v0.3.0: lanza desde una GitHub Action, tu blog en tus idiomas y una app que se instala

> Shipcast v0.3.0 redacta tus lanzamientos desde una GitHub Action sin nada que alojar, escribe tu blog en los idiomas que elijas y trae una app rediseñada que puedes instalar.

- URL: https://josegarrido.dev/es/shipcast-github-action-app-instalable/
- Author: José Antonio Garrido
- Published: 2026-11-03
- Language: es
- Project: [shipcast](https://github.com/yeyo11/shipcast) v0.3.0
- Tags: shipcast, github-actions, open-source, release-automation, pwa, ai
- English version: https://josegarrido.dev/en/shipcast-github-action-installable-app/

Shipcast convierte una release de GitHub en un lanzamiento: lee el código en la etiqueta, redacta el artículo y un post para cada canal, y los publica cuando los apruebas. La versión 0.3.0 te deja ejecutarlo desde una GitHub Action en tus propios repos sin alojar nada, escribe tu blog en los idiomas que elijas y trae una app rediseñada que puedes instalar en el móvil o en el escritorio.

Si ya usas Shipcast, aquí tienes lo que ha cambiado y qué hacer al actualizar.

![La app de Shipcast: los borradores de una release, aprobados y publicados](https://josegarrido.dev/launches/shipcast/v0.3.0/tour.gif)

## ¿Por qué una GitHub Action?

Hasta ahora necesitabas un servidor para usar Shipcast. A mí me vale, pero es mucho pedir a quien solo quiere anunciar su próxima release. Con la v0.3.0 todo el flujo corre en GitHub Actions: publicas una release, llega un pull request de borradores a tu repo de lanzamientos con el artículo y un post por canal, y al hacer merge cada canal se publica una vez.

## ¿Cómo configuro la Action?

En el repo de tu proyecto, con Node 24:

```bash
npx @yeyo11/shipcast init
```

`init` escribe el workflow de lanzamiento que usa `yeyo11/shipcast-action@v1`, `.github/launch.yml` y, para tu repo de lanzamientos, `brand.yml` y un workflow de publicación. Después imprime todos los secretos que tienes que configurar. Puedes pasarle las opciones de entrada:

```bash
npx @yeyo11/shipcast init --launches-repo tu-usuario/launches --ai openai --tone "Directo, práctico, en primera persona."
```

Los borradores se escriben con tu propia clave. `--ai` acepta `anthropic` (por defecto) u `openai`, y la entrada `ai-base-url` de la action lo apunta a cualquier servidor compatible con OpenAI. Para probar la configuración sin publicar nada, pon la variable del repositorio `SHIPCAST_DRY_RUN=true`: la ejecución de publicación lista lo que publicaría.

Cada enlace a tu blog sale con `utm_source`, `utm_medium` y `utm_campaign`, así tu analítica muestra de qué canal llegó cada visita. dev.to y Hashnode mantienen la URL canónica limpia.

## ¿Y si el cron de GitHub llega tarde?

Los posts programados y los reintentos se ejecutan en una «ronda». GitHub retrasa o descarta las ejecuciones `schedule`, así que el workflow de publicación tiene tres líneas de cron solo como respaldo y acepta `workflow_dispatch`. Para que las rondas lleguen a tiempo, lánzalo cada 15 minutos desde fuera de GitHub: un Cloudflare Worker, cron-job.org o tu propio servidor. `init` imprime la llamada exacta:

```bash
curl -fsS -X POST \
  -H "Authorization: Bearer $SHIPCAST_DISPATCH_TOKEN" \
  -H "Accept: application/vnd.github+json" \
  https://api.github.com/repos/<tu-usuario>/launches/actions/workflows/shipcast-publish.yml/dispatches \
  -d '{"ref":"main"}'
```

El token es uno de grano fino solo para el repo de lanzamientos, con permiso de lectura y escritura en Actions. Una ronda tardía solo retrasa un post; no pierde ninguno.

## ¿Cómo elijo los idiomas de mi blog?

Lístalos en `brand.yml` con cualquier código ISO 639-1. El primero es el idioma principal:

```yaml
# brand.yml
languages:
  blog: [en, es]
```

El artículo, el número de la newsletter y los posts siguen esa lista, igual que los selectores de idioma de la app. dev.to y Hashnode republican la versión en inglés si existe; si no, la del primer idioma. Ojo al actualizar: sin `languages.blog`, Shipcast ahora escribe solo en inglés.

## ¿Qué ha cambiado en la app?

Todas las pantallas se han rehecho. Los lanzamientos te esperan y los apruebas en la app. Cada borrador se abre en un editor con modos Markdown y Visual, y su barra de herramientas se ajusta a lo que el canal sabe formatear. Las estadísticas muestran cada canal y cada lanzamiento, una paleta de búsqueda te lleva a cualquier lanzamiento, cuenta o página, y **Sync all** actualiza todas las cuentas en Channels.

La app además se instala. En el móvil o en el escritorio se abre como aplicación independiente, muestra su propia página sin conexión cuando se cae la red y ofrece **Reload** cuando hay versión nueva, así nada se recarga a mitad de una edición.

## ¿Cómo funcionan las notificaciones?

Shipcast avisa a tu móvil o a tu escritorio cuando una respuesta a un comentario o un lanzamiento espera tu aprobación, cuando algo falla y cuando un lanzamiento sale. Actívalo en cada dispositivo en Settings → Notifications, con un interruptor por evento. En iPhone, añade antes Shipcast a la pantalla de inicio. Una notificación nunca muestra el texto de un comentario ni de un borrador. En tu propio servidor, define `SHIPCAST_VAPID_PUBLIC_KEY` y `SHIPCAST_VAPID_PRIVATE_KEY` (mira `docs/push.md`).

## ¿Cómo actualizo una instalación propia?

```bash
git pull
pnpm install
pnpm app          # las migraciones de la base de datos se ejecutan al arrancar
```

Dos cosas que revisar:

- claudio arranca ahora con su propio perfil de Compose: `docker compose --profile claudio up -d`, o `COMPOSE_PROFILES=claudio` en `.env`. Sin ninguno de los dos, `docker compose up -d` solo arranca Postgres.
- Si tu blog tiene más idiomas que el inglés, lístalos en `languages.blog`.

## ¿Y ahora qué?

La guía paso a paso de la Action está en [docs/getting-started.md](https://github.com/yeyo11/shipcast/blob/main/docs/getting-started.md), y la lista completa de cambios en el [changelog](https://github.com/yeyo11/shipcast/blob/main/CHANGELOG.md). Si aún no tienes blog, [`yeyo11/shipcast-blog`](https://github.com/yeyo11/shipcast-blog) es una plantilla con Astro y Tailwind que ya lee los artículos de Shipcast y se despliega en GitHub Pages.

Si Shipcast te ahorra escribir el mismo anuncio diez veces, una estrella en [el repositorio](https://github.com/yeyo11/shipcast) ayuda a que otros desarrolladores lo encuentren.
