This badge updates every 12 hours with my latest TryHackMe progress – rank, rooms completed, and badges.
Click the badge to visit my profile!
- ⏱️ Updates every 12 hours – Always shows current stats.
- 🎨 Exact replica – Uses the official TryHackMe badge design (background, icons, avatar).
- 🤖 Fully automated – Powered by GitHub Actions and Puppeteer.
- 🔗 Clickable – Takes you straight to my TryHackMe profile.
- A GitHub Action runs every 12 hours (or can be triggered manually).
- It fetches my latest stats from TryHackMe via ScraperAPI.
- Puppeteer renders the official badge HTML with my stats, avatar, and exact THM icons.
- A PNG screenshot is saved to
assets/uploadme.png. - If the image changed (i.e., stats updated), it’s committed back to the repo.
Want an automatically updating TryHackMe badge for your own profile?
Fork this repository and update the userPublicId in index.js with your own ID (find it in the iframe embed code from TryHackMe).
Then enable GitHub Actions – that’s it!
To run this in GitHub Actions, you need to set up a ScraperAPI key:
- Get a free ScraperAPI key from scraperapi.com (free tier: 5,000 requests/month)
- In your forked repository, go to Settings → Secrets → Actions
- Create a new secret named
SCRAPER_API_KEYwith your key value - Enable GitHub Actions - the workflow will automatically run every 12 hours
Without SCRAPER_API_KEY, the action falls back to direct HTTPS fetch (works only on non-blocked IPs).
This project is open source under the MIT License.
The TryHackMe badge design and assets are property of TryHackMe.
- TryHackMe for the awesome platform.
- Puppeteer for headless browser rendering.
- GitHub Actions for the automation.