Get Started

Generate SVG cards via CI/CD and store them directly in your repository.

1

Add a GitHub Actions workflow

Create .github/workflows/stats.yml in your profile repository (username/username).

.github/workflows/stats.yml
name: Generate Stats

on:
  schedule:
    - cron: '0 */6 * * *'
  workflow_dispatch:
  push:
    branches: [main]

jobs:
  generate:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4

      - uses: mikhailkhorokhorin/profile-graphics@v1
        with:
          username: ${{ github.actor }}
          token: ${{ secrets.GITHUB_TOKEN }}
          charts: activity,langs,streak,summary
          theme: tokyo-night
          output_dir: dist

      - uses: stefanzweifel/git-auto-commit-action@v5
        with:
          commit_message: 'chore: update stats [skip ci]'
          file_pattern: 'dist/*.svg'
2

Run the workflow manually

Go to Actions → Generate Stats → Run workflow for the first run. Files dist/*.svg will be committed automatically.

For public repositories GITHUB_TOKEN is sufficient. For private stats, create a Personal Access Token with repo scope.
3

Add cards to README

Add <img> tags to your profile README.md:

README.md
## Stats

<div align="left">
  <img height="160" src="https://raw.githubusercontent.com/YOUR_USERNAME/YOUR_USERNAME/main/dist/activity.svg"/>
  <img height="160" src="https://raw.githubusercontent.com/YOUR_USERNAME/YOUR_USERNAME/main/dist/langs.svg"/>
  <img height="130" src="https://raw.githubusercontent.com/YOUR_USERNAME/YOUR_USERNAME/main/dist/streak.svg"/>
  <img height="120" src="https://raw.githubusercontent.com/YOUR_USERNAME/YOUR_USERNAME/main/dist/summary.svg"/>
</div>
Replace YOUR_USERNAME with your GitHub username.

Additional inputs

Input Default Description
username GitHub/GitLab username
token GITHUB_TOKEN API token for requests
provider github github or gitlab
charts activity,langs,streak,summary List of charts to generate
theme github-dark Theme name (40 options)
output_dir dist Output directory for SVG files
timezone UTC Timezone for streak/productive-time
gitlab_url https://gitlab.com URL for self-hosted GitLab
config Path to YAML config file

Config file (advanced)

For full control, use a YAML config file:

profile-graphics.yml
provider:
  type: github
  user: your-username
  token: ${GITHUB_TOKEN}
  include_private: false

output:
  dir: dist
  prefix: ""

charts:
  - activity
  - langs
  - streak
  - summary
  - productive-time

theme:
  preset: tokyo-night

chart_options:
  activity:
    days: 90
    show_average: true
    fill_opacity: 0.15
  langs:
    top_n: 6
    style: bar
    exclude:
      - Markdown
      - HTML
  streak:
    timezone: Europe/Moscow
  summary:
    metrics:
      - stars
      - commits
      - prs
      - issues
Themes → Playground → Configuration →