Construire un profil GitHub qui attire l'attention — badges dynamiques, stats en temps réel, mise en page soignée et automatisation via GitHub Actions.
GitHub Actions peut mettre à jour votre README automatiquement : snake animation, derniers articles de blog, activité récente. On déclenche un workflow sur schedule et il commit le résultat dans le repo.
williamloree/
├── README.md
└── .github/
└── workflows/
├── snake.yml ← génère l'animation serpent
└── blog-posts.yml ← récupère les derniers articlesL'animation serpent qui mange les cases de la grille de contribution :
name: Generate Snake
on:
schedule:
- cron: '0 12 * * *' # tous les jours à midi UTC
workflow_dispatch: # déclenchement manuel possible
jobs:
generate:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: Platane/snk/svg-only@v3
with:
github_user_name: ${{ github.repository_owner }}
outputs: |
dist/github-contribution-grid-snake.svg
dist/github-contribution-grid-snake-dark.svg?palette=github-dark
- name: Push output
uses: crazy-max/ghaction-github-pages@v3
with:
target_branch: output
build_dir: dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Ce workflow :
output du repoLe README.md les référence via une URL raw :
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/williamloree/williamloree/output/github-contribution-grid-snake-dark.svg" />
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/williamloree/williamloree/output/github-contribution-grid-snake.svg" />
<img src="https://raw.githubusercontent.com/williamloree/williamloree/output/github-contribution-grid-snake.svg" width="100%" />
</picture>GITHUB_TOKEN est disponible automatiquement dans tous les workflows — pas besoin de le configurer.
Si vous publiez sur iducation.fr, le RSS peut alimenter automatiquement une section du README :
name: Latest Blog Posts
on:
schedule:
- cron: '0 8 * * *' # tous les jours à 8h UTC
workflow_dispatch:
jobs:
update-readme:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: gautamkrishnar/blog-post-workflow@master
with:
feed_list: "https://iducation.fr/rss.xml"
max_post_count: 5
readme_path: README.md
gh_token: ${{ secrets.GITHUB_TOKEN }}Dans README.md, ajouter des marqueurs commentaires là où les articles doivent apparaître :
### ✍️ Derniers articles
<!-- BLOG-POST-LIST:START -->
<!-- BLOG-POST-LIST:END -->Le workflow remplace le contenu entre les marqueurs par les titres des 5 derniers articles avec leurs liens. À chaque run, la liste est rafraîchie.
Cela nécessite que iducation.fr expose un flux RSS à /rss.xml — voir l'article sur OpenRSS avec Next.js.
name: Recent Activity
on:
schedule:
- cron: '*/30 * * * *' # toutes les 30 minutes
workflow_dispatch:
jobs:
update-readme:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: Readme-Workflows/recent-activity@v2.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
MAX_LINES: 5Marqueurs dans le README :
### ⚡ Activité récente
<!--RECENT_ACTIVITY:start-->
<!--RECENT_ACTIVITY:end-->Le workflow remplace le contenu par les 5 derniers événements GitHub : commits, PRs, issues, stars de repos.
Dans l'onglet Actions du repo → sélectionner le workflow → bouton "Run workflow". Utile pour tester avant d'attendre le prochain run automatique.
Pour que les workflows puissent commiter dans le repo, aller dans Settings → Actions → General → Workflow permissions et sélectionner "Read and write permissions".
Sans ça, le git push du workflow échoue avec une erreur 403.
| Workflow | Fréquence | Raison |
|---|---|---|
| Snake animation | 0 12 * * * (quotidien) | La grille de contribution change une fois par jour |
| Articles de blog | 0 8 * * * (quotidien) | Suffisant pour les nouveaux articles |
| Activité récente | */30 * * * * (30 min) | Activité GitHub peut changer souvent |
GitHub Actions sur les repos publics est gratuit sans limite de minutes — pas de contrainte budgétaire pour ces workflows.