Curso de Git y GitHub

Toma las primeras clases gratis

Tutorial: Actividad reciente automática en tu README de GitHub

Cómo mostrar tus últimas actividades (commits, issues, PRs) en el perfil de GitHub usando una GitHub Action, y cómo arreglar los errores más comunes.

Probado y funcionando en octubre de 2026.

¿Qué vamos a lograr?

Al final de este tutorial, la sección Recent Activity de tu README de perfil se actualizará sola cada 12 horas con tus últimas actividades públicas de GitHub, así:

- 💪 Opened PR #12 in usuario/proyecto
- ❗️ Opened issue #3 in usuario/otro-repo
- 🗣 Commented on #8 in usuario/proyecto

¿Cómo funciona? (la idea general)

Antes de copiar código, conviene entender las tres piezas:

  1. El README tiene dos comentarios HTML invisibles que marcan dónde se escribirá la actividad.
  2. Un workflow (archivo .yml) le dice a GitHub cuándo ejecutar la tarea (cada 12 horas o manualmente).
  3. Una Action de terceros hace el trabajo: consulta tu actividad pública, reescribe lo que hay entre los comentarios y hace un commit con el cambio.

Es la misma idea que instalar un paquete con npm install o composer require: tú no escribes el código, solo lo usas y lo configuras.

Requisitos previos

  • Una cuenta de GitHub.
  • Tu repositorio de perfil: un repo público con exactamente el mismo nombre que tu usuario. Por ejemplo, si tu usuario es maria-dev, el repo debe llamarse maria-dev. Su README.md es el que aparece en tu perfil.
  • Tener al menos algo de actividad pública reciente (la Action solo muestra eventos públicos).

Importante: si tu repo de perfil no tiene el mismo nombre que tu usuario, GitHub no mostrará ese README en tu perfil.

Paso 1: Agregar los marcadores en tu README

Abre el README.md de tu repo de perfil y busca (o crea) el lugar donde quieres mostrar la actividad. Agrega estos dos comentarios:

### :zap: Recent Activity

<!--START_SECTION:activity-->
<!--END_SECTION:activity-->

¿Por qué dos comentarios? La Action reemplaza todo lo que esté entre ellos y deja intacto el resto del README. Por eso los nombres deben escribirse exactamente igual: START_SECTION:activity y END_SECTION:activity.

Guarda el cambio con un commit.

Paso 2: Crear el archivo del workflow

Los workflows de GitHub Actions deben vivir en una carpeta específica: .github/workflows/.

  1. En tu repo de perfil, haz clic en Add file → Create new file.
  2. En el nombre del archivo escribe exactamente:
.github/workflows/update_readme.yml

Al escribir las /, GitHub crea las carpetas automáticamente.

  1. Pega este contenido:
name: Update README

on:
  schedule:
    - cron: "0 */12 * * *"   # cada 12 horas
  workflow_dispatch:          # permite ejecutarlo manualmente

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: write         # necesario para que la Action pueda hacer commit
    steps:
      - uses: actions/checkout@v4
      - uses: jamesgeorge007/github-activity-readme@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  1. Haz clic en Commit changes.

Explicación línea por línea

Línea ¿Qué hace?
on: schedule: cron Ejecuta el workflow automáticamente según un horario.
workflow_dispatch Agrega el botón Run workflow para ejecutarlo a mano (ideal para probar).
runs-on: ubuntu-latest Usa una máquina virtual Linux que GitHub te presta gratis.
permissions: contents: write Da permiso de escritura al token, para poder hacer git push del README actualizado.
actions/checkout@v4 Descarga tu repo dentro de la máquina virtual.
jamesgeorge007/github-activity-readme@master La Action que hace el trabajo (ver siguiente sección).
GITHUB_TOKEN Token temporal que GitHub genera automáticamente. No tienes que crearlo.

Entendiendo uses:

La sintaxis es dueño/repositorio@versión, y significa "descarga y ejecuta el código de este repositorio".

Error muy común: poner tu usuario en uses:. Ahí va el usuario del autor de la Action, no el tuyo. Esta Action fue creada por jamesgeorge007, por eso su nombre aparece ahí. Si pones tu-usuario/github-activity-readme, GitHub dirá repository not found.

Entendiendo el cron

El formato es minuto hora día-del-mes mes día-de-la-semana:

0 */12 * * *
│  │    │ │ │
│  │    │ │ └─ cualquier día de la semana
│  │    │ └─── cualquier mes
│  │    └───── cualquier día del mes
│  └────────── cada 12 horas
└───────────── en el minuto 0

Cuidado: "* */12 * * *" (con un asterisco en el primer campo) significa "cada minuto, pero solo en las horas 0 y 12". Son 120 ejecuciones al día. Es un error frecuente al copiar tutoriales.

Paso 3: Dar permisos de escritura al workflow

Aunque ya pusimos permissions: contents: write en el archivo, conviene verificar la configuración del repositorio:

  1. Ve a Settings (del repo de perfil).
  2. En el menú izquierdo: Actions → General.
  3. Baja hasta Workflow permissions.
  4. Selecciona Read and write permissions.
  5. Haz clic en Save.

¿Por qué? Desde hace un tiempo, el token por defecto de los repos nuevos es de solo lectura. Si la Action no puede escribir, falla al hacer el commit con un error 403 o Permission denied. Es probablemente la razón por la que un código de hace 2 años "funcionaba" en un video y hoy no.

Paso 4: Ejecutarlo manualmente para probar

No hace falta esperar 12 horas:

  1. Ve a la pestaña Actions de tu repo.
  2. En el menú izquierdo, selecciona Update README.
  3. Haz clic en Run workflow → Run workflow.
  4. Espera unos segundos y recarga la página.

Si todo salió bien verás un círculo verde ✅ junto a la ejecución.

Paso 5: Verificar el resultado

Vuelve a la pestaña Code y abre tu README.md. Entre los dos comentarios debería haber una lista con tu actividad reciente.

También verás un nuevo commit hecho por github-actions[bot] con el mensaje por defecto de la Action.

Si la sección queda vacía aunque el workflow salió en verde, normalmente es porque no tienes actividad pública reciente de los tipos que la Action soporta (issues, comentarios, pull requests, releases). Haz alguna actividad real, por ejemplo abre un issue en uno de tus repos públicos, y vuelve a ejecutarlo.

¿Y la advertencia de Node.js?

Es posible que veas algo como:

Node.js 20 is deprecated. The following actions target Node.js 20 but are being
forced to run on Node.js 24: actions/checkout@v4, jamesgeorge007/github-activity-readme@master

No es un error, es solo un aviso (warning). Significa que GitHub está retirando Node.js 20 de sus servidores y ejecuta las acciones con Node.js 24 aunque estén hechas para la 20. Tu workflow sigue terminando en verde.

No tienes que hacer nada ahora. Con el tiempo, los autores de las Actions publicarán versiones actualizadas y el aviso desaparecerá. Revisa de vez en cuando si hay versiones nuevas de actions/checkout.

Otro aviso que podrías ver es que ubuntu-latest migrará a Ubuntu 26 a partir del 19 de octubre de 2026. Tampoco es un error. Si quieres evitar sorpresas, puedes fijar la versión así:

runs-on: ubuntu-24.04

Solución de problemas

Síntoma Causa probable Solución
Unable to resolve action ..., repository not found Pusiste tu usuario en uses: o escribiste mal el nombre de la Action. Usa exactamente jamesgeorge007/github-activity-readme@master.
Permission denied o error 403 al hacer push El token no tiene permiso de escritura. Agrega permissions: contents: write y activa Read and write permissions (Paso 3).
El workflow no aparece en la pestaña Actions El archivo está en la carpeta equivocada. Debe estar en .github/workflows/ y tener extensión .yml o .yaml.
El botón Run workflow no aparece Falta workflow_dispatch: en el archivo. Agrégalo debajo de on:.
Verde, pero la sección está vacía No hay actividad pública reciente, o los marcadores están mal escritos. Revisa que sean <!--START_SECTION:activity--> y <!--END_SECTION:activity--> exactos.
Se ejecuta demasiadas veces Cron mal escrito (* */12 * * *). Usa 0 */12 * * *.
Error de sintaxis YAML Indentación incorrecta. YAML usa espacios (nunca tabs) y la indentación importa.

Personalización opcional

La Action acepta parámetros extra con la clave with:. Por ejemplo:

      - uses: jamesgeorge007/github-activity-readme@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          COMMIT_MSG: "docs: update recent activity"
          MAX_LINES: 5
          COMMIT_NAME: GitHub Activity Readme
Parámetro Para qué sirve
COMMIT_MSG Mensaje del commit que hace la Action.
MAX_LINES Cuántas líneas de actividad se muestran (por defecto 5).
COMMIT_NAME Nombre del autor del commit.

Buena práctica de seguridad

Cuando usas una Action de terceros, ese código se ejecuta con acceso de escritura a tu repo. Algunos hábitos útiles:

  • Usa Actions con muchos usuarios y código abierto que puedas revisar.
  • Considera fijar una versión (un tag como @v0.4.4) en lugar de @master, porque @master ejecuta lo que esté en esa rama en el momento.
  • Si quieres control total, haz un fork de la Action a tu cuenta y úsala desde ahí: tu-usuario/github-activity-readme@master.

Resumen rápido

  1. Agrega <!--START_SECTION:activity--> y <!--END_SECTION:activity--> a tu README.
  2. Crea .github/workflows/update_readme.yml con el código del Paso 2.
  3. Activa Read and write permissions en Settings → Actions → General.
  4. Ejecuta el workflow desde Actions → Run workflow.
  5. Revisa tu README.

Créditos

Curso de Git y GitHub

Toma las primeras clases gratis

0 Comentarios

para escribir tu comentario

Artículos relacionados