
Steam 封面获取器:一键获取游戏高清封面的开源工具
文章摘要
神人GPT
有一次写游戏博文,需要一张官方封面。与其每次去搜图,不如做个工具:输入
AppID
、链接
,甚至只输名字
联想搜索,就能立刻拿到 Steam 官方封面并一键复制。于是,这个小项目就诞生了。
它能做什么
- 支持多种输入:AppID / 商店链接 / 关键词(联想)
- 一次性获取多种尺寸:header、capsule(小/中/大)、library hero、logo、页面背景等
- 点击卡片即可复制图片直链到剪贴板
- 现代化 UI:深色玻璃质感、瀑布流布局、细腻动画,移动端也很好用
- 中英双语(默认中文,?lang=en 可切换)
- 开源、免费、即开即用
在线与开源
- GitHub:https://github.com/laogou717/Steam-game-cover-gets
- 在线使用:https://steamcover.laogou717.com
- 欢迎 Issue/PR,一起把它打磨得更好
使用方法
- 输入 Steam 游戏 ID 或商店链接;也可直接输入名称,使用下拉联想定位游戏
- 点击“获取封面”,自动抓取多尺寸官方图片
- 在结果区预览并一键复制直链
技术与实现
- 框架:Next.js 15(App Router)+ TypeScript + Tailwind CSS + Framer Motion
- 数据与图片:基于公开可访问的 Steam 静态资源
- 站点图标:采用 app/icon.svg 约定,浏览器标签与收藏夹自动生效
- 分享卡片:
- /opengraph-image 与 /twitter-image 由边缘运行时(ImageResponse)动态生成分享图
- 首页与分享页自动生成 OG/Twitter 元数据,分享即带图
- SEO 多语言:在 metadata.alternates 声明了 hreflang(zh / en),并提供 /sitemap.xml 与 /robots.txt
- 广告与变现:
- 仅生产环境注入 Google AdSense 脚本,开发态显示占位,避免布局抖动
- 首页有 3 个广告位(左右矩形、底部横幅),可按需配置环境变量启用
- 交互体验:
- 联想搜索有节流、缓存与中断控制,减少无效请求、提高响应速度
- 搜索卡片与两侧广告位高度同步,尽量减少视觉抖动
环境变量(部署时可选)
- NEXT_PUBLIC_SITE_URL:站点完整地址(如 https://steamcover.laogou717.com)
- NEXT_PUBLIC_ADSENSE_CLIENT:你的 AdSense client(如 ca-pub-xxxxxxxxxxxxxxx)
- NEXT_PUBLIC_ADSENSE_SLOT_RECT:矩形广告位 ID
- NEXT_PUBLIC_ADSENSE_SLOT_BANNER:横幅广告位 ID
开发记事
- 早期一次部署编译失败,原因是分享页的类型签名与 Next.js PageProps 约束不一致;后来通过“入参标记为 unknown + 类型守卫”理清边界,并移除了 any 与不必要的宽松类型,CI/构建恢复稳定。ESLint 警告也做了集中治理,保持代码整洁。
路线图(进行中/计划)
- 广告填充优化:用 MutationObserver + 尺寸检测替代轮询,缩短首帧
- 广告懒加载:接近视口再初始化,兼顾策略与体验
- 使用 next/image 优化预览图与小图标(配置 remotePatterns)
- 联想下拉的高亮匹配与键盘可访问性(ARIA 完善)
- 为外部资源添加 preconnect/dns-prefetch,进一步优化首包
- 拆分首页为 SearchCard / Suggestions / CoversGrid 子组件
- 广告与内容区高度同步加入过渡动画
- 为交互控件补充可见标签与 aria 属性
- 为工具函数与组件补齐类型与单元测试
- 引入简单监控与统计(Vercel Analytics/Speed Insights)
- 添加基础 CSP 与 Referrer-Policy,仅白名单必要第三方
结语
它不是庞然大物,而是一个“刚好解决刚需”的小工具。如果它帮你省下哪怕几分钟找图时间,那就已经物超所值。欢迎 Star、分享与反馈,让它在细节处持续变得更好。
- 感谢您的赞赏
赞赏名单
由于您的支持,我才能够实现写作的价值。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自神烦老狗
评论 ()