sanaysarthak/thm-live-badge

GitHub: sanaysarthak/thm-live-badge

通过 Playwright 和 GitHub Actions 自动截图并部署 TryHackMe 实时徽章,解决 GitHub Markdown 不支持 iframe 的限制。

Stars: 1 | Forks: 0

# 🛡️🔄 TryHackMe 徽章动态更新器 thm-live-badge-readme-cover

TryHackMe 提供了一个可以嵌入网站的“徽章”。但问题在于: - **图片徽章的 URL 是静态的**(不会实时刷新)。 - **iframe 徽章是实时的**,但 **GitHub Markdown 不支持 iframe**。 因此,如果你希望 GitHub 个人资料 README 中的 TryHackMe 数据保持最新(就像其他“统计卡片”一样),你需要一种能够渲染实时徽章并将其作为图片发布的方法。 本仓库正是为此而生: - 一个定时的 **GitHub Actions** 工作流打开实时徽章页面(Playwright/Chromium) - 截图并裁剪 - 将更新后的 PNG 提交到 `docs/` - 你通过 **GitHub Pages** 提供服务,然后就可以在任何 Markdown 中嵌入该 PNG ### 你将获得 - 一个公开、对缓存友好的图片 URL,可在任何地方使用(包括 GitHub 个人资料 README) - 根据你设定的计划自动刷新 - 仓库中没有硬编码的个人 ID(使用 GitHub Secrets) ## 快速开始(推荐) **注意:** `.github/workflows/update-badge.yml` 中的工作流触发器默认是注释掉的,以防止你在首次推送仓库时自动运行。当你准备好让工作流运行(按计划或手动)时,只需取消文件顶部 `on:` 代码块的注释: ``` # on: # schedule: # - cron: '0 */2 * * *' # workflow_dispatch: ``` 将其更改为: ``` on: schedule: - cron: '0 */2 * * *' workflow_dispatch: ``` 这确保了工作流只在你希望的时候启动。 ### 1) Fork 本仓库 将其 Fork 到你的账户。 ### 2) 将你的 TryHackMe `userPublicId` 添加为 secret 在你的 Fork 中: - Settings → Secrets and variables → Actions → New repository secret - Name: `THM_USER_PUBLIC_ID` - Value: 你的 TryHackMe `userPublicId`(一串数字) 如何找到它: - 进入你的 TryHackMe 个人资料徽章嵌入选项并复制 iframe。 - 其中包含一个类似这样的 URL: `https://tryhackme.com/api/v2/badges/public-profile?userPublicId=1234567` - `userPublicId=` 后面的数字就是你要的内容。 注意:此值不会被提交到仓库;它是在运行时从 Actions secrets 中提取的。 ### 3) 启用 GitHub Pages 在你的 Fork 中: - Settings → Pages - Source: **Deploy from a branch** - Branch: `main` / folder: `docs` **重要:** 配置 GitHub Pages 时,请确保选择 **`docs` 文件夹**(而不是仓库根目录)。如果你从根目录部署,GitHub Pages 将找不到 `tryhackme_badge.png`,你的徽章 URL 将返回 404。 首次工作流运行后,生成的图片将可通过以下地址访问: - `https://<你的GitHub用户名>.github.io/thm-badge/tryhackme_badge.png` 为什么 URL 中没有 `/docs/`: - 工作流将文件提交到仓库中的 `docs/tryhackme_badge.png`。 - 当 GitHub Pages 配置为 **Branch: `main` / Folder: `docs`** 时,该文件夹将成为网站根目录。 - 因此 `docs/tryhackme_badge.png` 会以 `/tryhackme_badge.png` 的形式发布。 ### 4) 将其添加到你的 README 示例(用于 GitHub 个人资料 README 或任何仓库 README): ``` TryHackMe Badge ``` ## 自定义更新计划 编辑 [.github/workflows/update-badge.yml](.github/workflows/update-badge.yml) 中的 cron 表达式。 ## 本地运行 ``` python -m venv .venv source .venv/bin/activate pip install -r requirements.txt python -m playwright install chromium # 生成到 docs/ THM_USER_PUBLIC_ID="1234567" python update_badge.py --output docs/tryhackme_badge.png ``` ## 隐私说明 - 本工具避免了将你的 TryHackMe 标识符硬编码在仓库中。 - 你生成的徽章图片旨在公开(这正是将其嵌入 Markdown 的目的)。 ## 许可证 BSD 3-Clause 许可证 - 详见 [LICENSE](LICENSE)。
标签:Chromium, Dashboard, DNS解析, GitHub Actions, GitHub Pages, GitHub Profile, Markdown, Playwright, Profile README, TryHackMe, Web Scraping, 个人主页, 信息展示, 前端工具, 定时任务, 开源项目, 徽章, 截图, 文档生成, 特征检测, 网络安全, 网络调试, 自动化, 自动笔记, 逆向工具, 隐私保护