PAYATHON 2026

如何通过 Steam API 判断游戏是否有 AI 内容披露?

架构老王

结论

不能仅凭 appdetails 的返回数据判断游戏是否有 AI Generated Content Disclosure。示例 AppID 1808500 的接口响应没有提供对应的披露字段,但商店页面展示了该披露区块。接口响应、游戏商店页面

目前尚无法从 Steamworks 公开文档确认是否有专用 API 可以直接查询这项披露。需要自动检查时,可以读取公开商店页面并识别披露区块。不过,页面解析依赖页面结构,不能视为稳定的 API 契约。

为什么接口没有返回披露信息?

商店页面展示的信息与 appdetails 返回的字段并不完全相同。示例响应中的 content_descriptors 为:

{
  "ids": [],
  "notes": null
}

该游戏的商店页面仍然包含 AI Generated Content Disclosure。至少在这个示例中,不能根据 content_descriptors.ids 是否为空,或 content_descriptors.notes 是否为 null,判断 AI 内容披露是否存在。接口响应、游戏商店页面

也不要把自行假设的 ai_generated_content 等字段当成既有接口规范。

如何通过商店页面检查?

可以请求英文商店页面,检查是否存在标题为 AI Generated Content Disclosure 的 h2 元素。示例页面目前使用这一标题。游戏商店页面

下面的 Python 示例需要安装 requests 和 beautifulsoup4:

pip install requests beautifulsoup4
import requests
from bs4 import BeautifulSoup


def check_ai_disclosure(appid: int) -> dict:
    response = requests.get(
        f"https://store.steampowered.com/app/{appid}/",
        params={"l": "english"},
        timeout=20,
    )
    response.raise_for_status()

    soup = BeautifulSoup(response.text, "html.parser")
    heading = next(
        (
            node
            for node in soup.find_all("h2")
            if node.get_text(" ", strip=True)
            == "AI Generated Content Disclosure"
        ),
        None,
    )

    return {
        "appid": appid,
        "status": "found" if heading is not None else "not_confirmed",
        "source_url": response.url,
    }


print(check_ai_disclosure(1808500))

示例将未匹配的结果记为 not_confirmed,表示本次页面响应中没有找到目标标题,并不代表已经确认游戏没有披露。HTTP 请求失败会抛出异常,调用方应将其记录为查询失败,不能转换为“没有披露”。

使用时需要注意什么?

  • 固定请求语言,避免因标题本地化而匹配失败。
  • 年龄验证、登录提示、地区限制或页面结构变化都可能影响检查结果。出现未确认结果时,应检查实际响应页面。
  • 批量查询时,缓存结果并控制请求频率,同时保留查询时间和来源地址,方便复查。
  • 如果业务要求使用有明确文档保证的 API,应向 Steamworks 支持确认可用接口。页面解析只能作为当前的替代方案。

还要区分“页面存在披露”和“游戏实际使用了哪些 AI 技术”。Steamworks 的 Content Survey 要求开发者说明相关生成式 AI 内容,但页面检查只能识别公开披露,无法独立核实游戏的全部开发过程。没有找到披露,也不能据此断言游戏没有使用 AI。Steamworks Content Survey

备注:内容仅供参考。