diff --git a/.github/workflows/stars.yml b/.github/workflows/stars.yml
new file mode 100644
index 0000000..f06dcc0
--- /dev/null
+++ b/.github/workflows/stars.yml
@@ -0,0 +1,24 @@
+name: stars
+on:
+ schedule:
+ - cron: '17 * * * *'
+ workflow_dispatch:
+permissions:
+ contents: write
+concurrency: stars
+jobs:
+ render:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v7
+ - uses: actions/setup-node@v7
+ with:
+ node-version: 24
+ - run: node stars.mjs
+ env:
+ GITHUB_TOKEN: ${{ secrets.STARS_TOKEN || github.token }}
+ - run: |
+ git add dist
+ git diff --cached --quiet && exit 0
+ git -c user.name='github-actions[bot]' -c user.email='41898282+github-actions[bot]@users.noreply.github.com' commit -m 'Update star charts'
+ git push
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9c85c0f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+preview/*
+!preview/render.sh
+!preview/sim.mjs
diff --git a/dist/direct-img/vibegif.direct-img.link.svg b/dist/direct-img/vibegif.direct-img.link.svg
new file mode 100644
index 0000000..c25dd15
--- /dev/null
+++ b/dist/direct-img/vibegif.direct-img.link.svg
@@ -0,0 +1,52 @@
+
diff --git a/dist/index.html b/dist/index.html
new file mode 100644
index 0000000..5942fbb
--- /dev/null
+++ b/dist/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
gh.direct-img.link
+
+
+
+gh.direct-img.link
+GitHub star history charts. This tool is private for now.
+
diff --git a/preview/render.sh b/preview/render.sh
new file mode 100755
index 0000000..6d120a1
--- /dev/null
+++ b/preview/render.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+# render.sh