GeoGuessr Slack集成

GeoGuessr Slack集成服务,通过自动化脚本创建每日地理猜谜挑战,并将结果发布到Slack。

  • by almin1337
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 almin1337/geoguessr-slack-mcp

使用说明

GeoGuessr Slack集成

MCP服务器和GeoGuessr的日常任务:创建挑战(需要登录),发布到Slack,并显示昨天的结果。

包括什么

  • geoguessr_mcp_server.py –MCP服务器(获取每日挑战、创建挑战、发布到Slack等)。
  • 每日家庭挑战.py –日常工作:创建一个新的 私有的 挑战(需要登录才能玩),在Slack上发布标题 “GeoGuessr-Softhouse每日挑战日/月/年”,并将昨天的结果附加为 排名|名称|结果|时间.
  • create_challenge_browser.py –当API不可用时(由MCP和日常脚本使用),浏览器自动后退。

需求

  • GeoGuessr帐户(建议用于创建挑战的Pro/Unlimited)。
  • _ncfa cookie:登录geoguessr.com→ 开发者工具→ 应用→ Cookie→ copy _ncfa.
  • 带有Bot令牌和范围的Slack应用程序: channels:read, chat:write, users:read.
  • 可选: playwright 和 playwright install chromium 用于浏览器回退。

设置

  1. 依赖项

    pip install mcp requests python-dotenv playwright
    playwright install chromium   # optional, for browser fallback
    
  2. 环境 –创建 .env 在项目根目录中:

    GEOGUESSR_COOKIE=your_ncfa_cookie_value
    SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
    SLACK_CHANNEL_ID=C1234567890
    
  3. 运行MCP服务器

    python geoguessr_mcp_server.py
    

看 SETUP_GUIDE.md 和 setup_slack_app.md 用于Slack应用程序设置。

每日9:00的Softhouse挑战赛

跑 每日家庭挑战.py 每天9:00(例如使用cron)。它将:

  1. 从加载上一个挑战ID .daily_challenge_state.
  2. 获取昨天的结果(排名、名称、结果、时间)。
  3. 创建新 私有的 挑战(需要登录; accessLevel: 1).
  4. 在Slack上发布标题 “GeoGuessr-Softhouse每日挑战日/月/年” 以及昨天的结果。
  5. 保存新的挑战ID以备下次运行。

Cron示例(当地时间9:00):

crontab -e

添加:

0 9 * * * cd /path/to/geoguessr-slack-mcp && /path/to/venv/bin/python daily_softhouse_challenge.py >> /tmp/geoguessr_softhouse.log 2>&1

替换 /path/to/geoguessr-slack-mcp 和 /path/to/venv/bin/python 与你的道路。

手动运行一次:

python daily_softhouse_challenge.py

计划运行(欧洲中部时间9:00和12:00,工作日)

该作业由以下因素触发 外部cron (例如cron-job.org)调用GitHub Actions工作流。看 外部_ CRON_SETUP.md 用于设置。显示 之前的挑战结果 在每个帖子中,添加 GIST_ID 和 GH_TOKEN 关于回购秘密(见该文档)。

手动额外挑战(当天)

您还可以手动运行脚本,在当天发布额外的挑战。

当天如何应对额外的挑战

  1. 打开终端。
  2. 转到项目并运行相同的脚本:
    cd /path/to/geoguessr-slack-mcp
    ./venv/bin/python daily_softhouse_challenge.py
    
    (使用您的实际项目路径;在Windows上使用 venv\Scripts\python.exe.)

行为

  • 标题: 今天的第一个挑战没有数字。第二个得到 #2,第三 #3等等(例如。 GeoGuessr-Softhouse每日挑战赛2026年2月19日#2).
  • 结果: 每个新帖子总是显示以下结果 先前 挑战(本次跑步前的挑战)。这可能是当天早些时候或昨天。
  • 9:00的自动跑步被视为当天的第一个挑战。你当天晚些时候做的任何跑步都会得到#2、#3等。

MCP配置(光标)

示例 mcp.json:

{
  "mcpServers": {
    "geoguessr": {
      "command": "python",
      "args": ["/path/to/geoguessr_mcp_server.py"],
      "env": {
        "GEOGUESSR_COOKIE": "your_ncfa_cookie_value",
        "SLACK_BOT_TOKEN": "xoxb-...",
        "SLACK_CHANNEL_ID": "C0AFPA99VEE"
      }
    }
  }
}

挑战需要登录

日常挑战由 每日家庭挑战.py 使用 accessLevel: 1 (私人/仅限邀请),因此只有登录了GeoGuessr的用户才能玩。