Skip to content

About

Steam to Notion Game Library Sync

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

SteamShelf icon

SteamShelf

把你的 Steam 游戏库同步到 Notion。 Steam to Notion Game Library Sync SteamShelf 会定时读取 Steam 游戏、游玩时间、成就、商店信息和封面,并同步到一个可筛选、可评分、可写评价的 Notion 游戏库。

功能

  • 同步 Steam 游戏名、AppID、游玩时间、最后游玩日期和成就进度。
  • 自动写入商店链接、封面、开发商、发行商、发售日期、商店标签和游戏简介。
  • 自动创建 Notion 缺失字段。
  • 已存在的游戏会更新,不存在的游戏会新增。
  • 支持多个 Steam 账号写入同一个 Notion 数据库。
  • 支持 GitHub Actions 每天自动同步,也支持本地手动运行。
  • 保留你的手工内容:评分、页面正文里的评价、备注等不会被覆盖。

预览

Notion preview1 Notion preview2 Notion preview3

快速开始

  1. 创建一个 Notion 数据库。
  2. 把数据库分享给你的 Notion integration。
  3. 准备 Steam API Key、Steam 用户 ID、Notion API Key 和 Notion Database ID。
  4. 在本地 .env 或 GitHub Secrets 中配置这些值。
  5. 运行 python main.py --debug,或启用 GitHub Actions 自动同步。

Notion 字段

SteamShelf 会在运行时自动创建缺失的同步字段。你只需要先有一个 Notion 数据库,且数据库里存在一个 title 类型字段;脚本会把它当作 游戏名称 使用。

字段 类型 说明
游戏名称 title 使用数据库已有的 title 字段
游戏封面 files Steam 封面图
游戏ID number Steam AppID,用于稳定匹配
商店链接 url Steam 商店页面
游玩时间 text 适合阅读的时长,例如 2.5 小时
总时长/h number 小时数,适合排序和统计
完成度 number 建议在 Notion 设置成 percent;0.25 表示 25%
成就总数 number Steam 成就总数
已解锁成就 number 已解锁成就数
首个成就解锁于 date 第一次解锁成就的日期
最后游玩日期 date Steam 记录的最后游玩日期
游玩状态 status 自动粗判:未开始、游玩中、暂搁置、已弃坑、全成就
开发商 text 来自 Steam 商店
发行商 text 来自 Steam 商店
发售日期 date 来自 Steam 商店
商店标签 multi-select 默认抓取前 5 个标签
内容类型 select 游戏本体、DLC、试玩版、原声音轨、其它
数据源 select 固定写入 Steam,方便未来混合管理其它平台
抓取来源 select API / 网页 / 两者都有
所属账户 select 多账号时用于区分账号
游戏简介 text 优先抓简体中文商店页简介
评分 number 手工填写,建议 1-5
已上传 checkbox 同步成功标记

SteamShelf 只更新页面属性、封面和图标,不会改页面正文。你可以把自己的评价写在 Notion 页面正文里,也可以继续添加 备注、个人状态 等自定义字段。

游玩状态规则

默认规则:

  • 30 天内玩过:游玩中
  • 31-180 天没玩:暂搁置
  • 超过 180 天没玩:已弃坑
  • 没有游玩时长且没有成就进度:未开始
  • 成就全解锁:全成就

已通关 太依赖游戏本身,Steam 成就百分比不一定能代表通关,所以脚本不会再自动写入这个状态。

阈值可以通过 ABANDONED_DAYS 调整,默认是 180。

本地运行

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

在项目根目录创建 .env:

STEAM_API_KEY=你的 Steam API Key
STEAM_USER_ID=你的 SteamID64、自定义短链接名或 Steam 个人主页 URL
NOTION_API_KEY=secret_xxx
NOTION_DATABASE_ID=你的 Notion database id
NOTION_SCHEMA=cn

运行同步:

python main.py --debug

只抓数据、不写 Notion:

python main.py --dry-run --export-csv steam_games.csv

导出 Excel:

python main.py --dry-run --export-xlsx "Steam Data.xlsx"

GitHub Actions

工作流文件位于:

.github/workflows/steam-to-notion.yml

默认每天 12:00 UTC 自动运行,也可以在 GitHub 的 Actions 页面手动触发。

Actions 每次运行都会先读取 Notion 已有页面,并把已有的开发商、发行商、标签、简介、内容类型、封面当作缓存复用。已有元数据的游戏不会再请求 Steam 商店;如果缺少封面、商店标签、开发商/发行商、简介或内容类型,脚本会自动补查商店信息。日常同步主要更新游玩时长、最后游玩日期、成就进度和游玩状态。

如果你想重新刷新已有的商店元数据,可以手动运行 workflow,并勾选 refresh_store_metadata。

需要配置这些 Secrets:

Secret 说明
STEAM_API_KEY Steam Web API Key
STEAM_USER_ID SteamID64、自定义短链接名或 Steam 个人主页 URL
NOTION_API_KEY Notion Integration Token
NOTION_DATABASE_ID Notion 数据库 ID

配置

名称 默认值 说明
NOTION_SCHEMA cn 字段预设;一般保持 cn
STEAM_PROFILE_ID STEAM_USER_ID Steam XML 游戏库 profile,一般不用单独填
STEAM_ACCOUNT_NAME STEAM_PROFILE_ID 写入 所属账户 的名字
STEAM_ACCOUNTS 空 多账号 JSON 数组
INCLUDE_PLAYED_FREE_GAMES true 是否包含玩过的免费游戏
ENABLE_ITEM_UPDATE true 已存在的 Notion 页面是否更新
ENABLE_FILTER false 是否过滤短时长且无成就的记录
FETCH_WEB_LIBRARY false 是否抓取 Steam XML 游戏库补充网页来源游戏
FETCH_STORE_METADATA true 是否抓取缺失的商店开发商、发行商、标签、简介、内容类型等
REFRESH_STORE_METADATA false 是否忽略 Notion 已有元数据并强制重新抓取
SYNC_MAIN_GAMES_ONLY true 是否跳过 DLC、试玩版、原声音轨
SKIP_PLAYTIME_WEB true 网页来源记录不更新游玩时间类字段
USE_ACCOUNT_FIELD 多账号时为 true 用 游戏ID + 所属账户 作为匹配 key
TOP_TAGS 5 抓取前几个商店标签
VERIFY_COVER_URLS false 是否额外检查封面 URL 是否可访问
STORE_FAILURE_LIMIT 3 Steam 商店接口连续失败几次后,本次运行跳过后续商店元数据
ABANDONED_DAYS 180 最后游玩超过多少天后标为 已弃坑
HTTP_TIMEOUT 15 单次 HTTP 请求超时秒数
HTTP_RETRIES 2 单个请求最大尝试次数
REQUEST_DELAY 0.4 每条记录之间的等待秒数;Actions 默认传入 0.25

多账号示例:

[
  {"steam_id": "7656119xxxxxxxxxx", "account": "主号"},
  {"steam_id": "my_custom_id", "account": "小号"}
]

网络提示

如果本地访问 Steam 商店经常超时或 SSL 断流,可以先关闭商店元数据,跑通核心同步:

FETCH_STORE_METADATA=false
FETCH_WEB_LIBRARY=false

如果你有本地代理,可以在 .env 里加:

HTTPS_PROXY=http://127.0.0.1:7890
HTTP_PROXY=http://127.0.0.1:7890

项目结构

.
├── assets/icon.png
├── main.py
├── sync.py
├── requirements.txt
├── README.md
└── .github/workflows/steam-to-notion.yml

参考

About

Steam to Notion Game Library Sync

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages