Actualiza la web de tu cliente desde el móvil: Claude + GitHub + deploy automático
main, y (3) la app de Claude para pedir el cambio en lenguaje natural. Claude edita el código, abre un pull request; tú lo fusionas desde el teléfono y la Action publica en el servidor en segundos. Es exactamente el sistema con el que se despliega este sitio.
Las 3 piezas del sistema
Mientras la gente normal a tu alrededor se drena el alma viendo Reels en la fila del banco, tú puedes estar enviándole cambios en vivo a un cliente desde el bus. No es magia: es una tubería sencilla con tres componentes.
- Tu servidor (cPanel / hosting con FTP). Donde vive la web del cliente, en
public_html. Solo necesita aceptar conexiones FTP o, mejor, FTPS. - GitHub. Un repositorio con el código de todos tus proyectos en desarrollo. Cada cliente, su carpeta. Es la fuente de la verdad y el historial de todo lo que cambia.
- Claude. Conectado a ese repositorio. Le pides los cambios en lenguaje natural y él escribe el código, hace commit y abre el pull request por ti.
Cómo se conecta: la GitHub Action de deploy
El pegamento es una GitHub Action: un pequeño archivo YAML en .github/workflows/ que se dispara cada vez que llega un cambio a la rama main y sube los archivos por FTP a tu servidor. La acción más usada para esto es SamKirkland/FTP-Deploy-Action. Este es, casi literal, el workflow con el que se despliega c6n.eu:
name: Deploy website
on:
push:
branches: [main] # se dispara al fusionar en main
paths:
- "site/**" # solo si cambió la carpeta del sitio
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy por FTPS a cPanel
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
protocol: ftps # FTP sobre TLS, nunca plano
local-dir: site/
server-dir: ./
dangerous-clean-slate: false # no borra lo que no esté en el repo
exclude: |
api/config.php # protege archivos sensibles del server
Traducción: cada vez que un cambio aterriza en main, GitHub levanta una máquina, coge tu carpeta y la sube al servidor. dangerous-clean-slate: false garantiza que nunca borra archivos que no estén en el repo (como el config.php que subiste a mano), y exclude protege lo que no debe tocarse. Lo configuras una vez por proyecto y se olvida.
El flujo desde el móvil, paso a paso
La magia real pasa cuando estás apretado en el metro y el cliente te escribe: «Oye, cámbiame el texto de los precios y arregla el botón de pago que se ve raro». En vez de estresarte o sacar el portátil en medio de la calle:
- Abres la app de Claude en el móvil.
- Le pones el encargo: «Claude, entra a la carpeta de este cliente, cambia el texto de precios por este y arregla el diseño del botón de pago».
- Claude hace el cambio de código, hace commit y abre un pull request a
main. - Fusionas el pull request desde el propio móvil. Ese merge dispara la GitHub Action y el servidor se actualiza solo en segundos.
- Le respondes al cliente: «Listo, revisa la web».
| Momento | Lo que haces tú | Lo que pasa solo |
|---|---|---|
| El cliente escribe | Abres Claude en el móvil | — |
| Pides el cambio | Lo describes en una frase | Claude edita el código y abre el PR |
| Revisas y apruebas | Fusionas el PR a main | La GitHub Action arranca |
| Deploy | Nada | Subida por FTPS al servidor en segundos |
| Cierras | «Listo, revisa la web» | Cambio en vivo y registrado en el historial |
¿Por qué pull request a main y no editar en producción?
Podrías editar el archivo directo en el servidor por FTP, sí. Pero entonces no tienes historial, ni revisión, ni vuelta atrás. Pasar siempre por un pull request a main te da tres seguros: ves el diff exacto antes de publicar, queda registrado quién cambió qué y cuándo, y si algo sale mal reviertes el commit y el servidor vuelve al estado anterior en el siguiente deploy. La rama main es, por definición, lo que está publicado.
Buenas prácticas y errores comunes
- Credenciales en GitHub Secrets, nunca en el repo. Servidor, usuario y contraseña van en Settings → Secrets and variables → Actions, cifrados y fuera de los logs.
- FTPS, no FTP plano. El FTP sin cifrar manda tus credenciales en texto claro. Usa
protocol: ftpssiempre que el hosting lo permita. - Excluye lo sensible y lo ajeno. Con
excludeprotegeconfig.php, claves y subdirectorios que gestione otra cuenta o pipeline. - Filtra por
paths. Que la Action solo se dispare cuando cambia la carpeta relevante evita deploys innecesarios y minutos gastados. - Un repo, muchas carpetas de cliente. Centralizar los proyectos en desarrollo facilita que Claude «entre a la carpeta de este cliente» sin perderse.
"La próxima vez que te toque perder la mañana en un trámite o atrapado en el tráfico, no llores: pon a Claude a trabajar desde el bolsillo. El servidor se actualiza solo mientras tú haces la fila." — Juan, founder de c6n
¿Quieres este flujo montado en tus proyectos?
Montamos la tubería completa —GitHub, deploy automático por FTP/FTPS y Claude conectado a tus repos— para que publiques cambios de cliente desde el móvil en segundos. Pídenos el diagnóstico gratuito.
Hablar con CA.IA — gratisDiagnóstico en 48h · Máximo 4 clientes activos · c6n.eu
Fuentes
- SamKirkland — "FTP Deploy Action", GitHub Marketplace: deploy por FTP/FTPS desde GitHub Actions y opción
dangerous-clean-slate. - GitHub Docs — Workflows de Actions: disparadores
on: push, filtros porpathsy gestión de secrets cifrados. - GitHub Docs — Facturación de Actions: 2.000 minutos/mes gratis en repositorios privados (uso ilimitado en repositorios públicos).
- Documentación de despliegue GitHub → cPanel vía FTP (guías de hosting con cPanel, 2025-2026).