Zibll 子比主题 Steam 游戏库插件,拉取 Steam 个人游戏清单,展示游戏卡片、总游玩时长、游戏统计数据。
下载地址
https://pan.quark.cn/s/f16bea22c643
Worker 代码
/**
* Steam API 反向代理 — Cloudflare Worker 自建模板
*
* 路由:
* /ISteamUser/...、/IPlayerService/... → api.steampowered.com(Web API)
* /store/api/appdetails?... → store.steampowered.com(游戏简体中文名)
*
* 部署步骤:
* 1. Cloudflare Dashboard → Workers 和 Pages → 创建 Worker(名称随意)
* 2. 将本文件全部代码粘贴进编辑器并部署,得到地址 https://xxx.xxx.workers.dev
* 3.(推荐)Worker → 设置 → 变量和机密 → 添加「文本」变量:
* 变量名 SECRET,值为一串随机字符(如 openssl rand -hex 16 生成)
* 也可以直接写在下方 SECRET 常量里,二选一
* 4. 插件后台「Steam游戏库 → 接口配置」:
* API 反代地址 填 https://xxx.xxx.workers.dev
* Worker 鉴权密钥 填与 SECRET 相同的值
*
* 说明:Workers 免费版每天 10 万次请求。本插件在 WordPress 侧已做本地缓存,
* 玩家资料 4 个接口 + 商店中文名补全,个人博客流量绰绰有余。
* 商店 appdetails 已在 CF 边缘缓存 1 小时,重复请求不回源。
*/
//鉴权密钥:为空则不校验(不推荐公开使用);环境变量 SECRET 优先
const SECRET = '';
const AUTH_HEADER = 'x-steam-proxy-auth';
const API_ORIGIN = 'https://api.steampowered.com';
const STORE_ORIGIN = 'https://store.steampowered.com';
const STORE_PREFIX = '/store/';
export default {
async fetch(request, env) {
const url = new URL(request.url);
const jsonError = (status, msg) =>
new Response(JSON.stringify({ error: msg }), {
status,
headers: { 'content-type': 'application/json; charset=utf-8' },
});
//只开放 Steam 用到的 GET/HEAD,收窄滥用面
if (request.method !== 'GET' && request.method !== 'HEAD') {
return jsonError(405, 'method not allowed');
}
const secret = (env && env.SECRET) || SECRET;
if (secret && request.headers.get(AUTH_HEADER) !== secret) {
return jsonError(403, 'forbidden');
}
//带 /store/ 前缀的转发商店接口,其余原样转发 Web API
const isStore = url.pathname.startsWith(STORE_PREFIX);
const target = isStore
? STORE_ORIGIN + url.pathname.slice(STORE_PREFIX.length - 1) + url.search
: API_ORIGIN + url.pathname + url.search;
const init = {
method: request.method,
headers: {
'user-agent': request.headers.get('user-agent') || 'zibll-steam-proxy/1.0',
'accept-language': 'zh-CN,zh;q=0.9',
},
};
if (isStore) {
init.cf = { cacheTtl: 3600, cacheEverything: true };
}
let upstream;
try {
upstream = await fetch(target, init);
} catch (e) {
return jsonError(502, 'upstream error');
}
const resp = new Response(upstream.body, upstream);
if (!resp.headers.get('content-type')) {
resp.headers.set('content-type', 'application/json; charset=utf-8');
}
return resp;
},
};
预览图





功能特性
用户中心绑定管理
- 「Steam 游戏库」独立 Tab + 用户中心侧栏「我的服务」快捷入口
- 绑定 / 解绑 17 位 Steam64 ID,保存时做格式校验,留空即解绑
- 一键开关「主页公开展示」,不公开时仅自己可见
- 按 appid 隐藏指定游戏,隐藏后不出现在主页任何位置
- 显示当前绑定状态:Steam 头像、昵称、等级、游戏数、数据更新时间
- 支持手动「重新同步」,立即绕过缓存拉取最新数据
用户主页展示
- 玩家资料卡:头像、昵称(链接到 Steam 个人页)、等级 LVL、徽章数与经验、最近两周总时长
- 游戏封面网格:Steam 官方头图 CDN 懒加载,主源失败自动切换备用源
- 时长统计与进度条:每款游戏展示总时长 / 两周时长,进度条按库内最大时长归一化(两周进度条可后台关闭)
- 「查看全部」模态框:游戏多时分批浏览,数量上限可配,模态框内可实时切换排序(两周时长 / 总时长 / 最近游玩 / 名称)
- 隐私与容错:Steam 库为私密时给出友好提示(本人可见引导链接去调整隐私设置);同步异常仅本人可见,方便排查
- 移动端自动减少首屏展示数量,保持加载轻快
两种展示位置
- 独立卡片:显示在文章、收藏等 Tab 区块上方
- Tab 整合:作为「Steam 游戏库」Tab 与文章、收藏并列;Tab 的显隐(PC 端 / 移动端)与排序直接接入 主题设置 → 用户主页 → 栏目配置,与原生栏目一样可拖动排序
站长模式
数据来源二选一:用户绑定模式(各用户绑定各自的 SteamID)或站长模式(后台固定一个 SteamID,展示在指定用户的主页),站长模式下自动隐藏用户绑定入口。
安装
- 启用 zibll 子比主题后,将本目录放入
wp-content/plugins/并在后台启用 - 进入「设置 → Steam游戏库」填写 Steam Web API Key(https://steamcommunity.com/dev/apikey 免费申请)
- 用户在「用户中心 → Steam 游戏库」绑定自己的 SteamID;服务器无法直连 Steam 时可填写 API 反代地址
自建 Cloudflare Worker 反代
服务器在国内无法直连 Steam 时,用 Worker/steam-proxy.js 模板自建反代,同时代理 Web API 与商店中文名接口:
- Cloudflare Dashboard → Workers 和 Pages → 创建 Worker,粘贴
worker/steam-proxy.js全部代码并部署 - Worker → 设置 → 变量和机密 → 添加文本变量
SECRET,值为一串随机字符 - 插件后台「API 反代地址」填
https://xxx.xxx.workers.dev,「Worker 鉴权密钥」填同样的SECRET
Worker 按 /store/ 前缀区分上游(其余转发 api.steampowered.com),只放行 GET/HEAD,商店 appdetails 在边缘缓存 1 小时;鉴权头 x-steam-proxy-auth 不匹配时返回 403,防止被他人盗用。





没有回复内容