使用开源项目skland-daily-attendance实现森空岛自动化签到,使用GithubAction实现云托管,使用statocysts+QQbot实现通知推送。

GitHub Actions 部署

以下内容摘自skland-daily-attendance的README.md

通过 GitHub Actions 可以实现自动定时签到,无需额外的服务器资源。

  1. Fork 本仓库

    点击页面右上角的 Fork 按钮,将仓库 fork 到你的账号下。

  2. 配置 GitHub Secrets

    进入你 fork 的仓库,依次点击 Settings → Secrets and variables → Actions → New repository secret,添加以下必要的密钥:

    Secret名称

    说明

    是否必填

    SKLAND_TOKENS

    森空岛凭据,多个账号用逗号分隔

    必填

    SKLAND_NOTIFICATION_URLS

    通知 URL,多个 URL 用逗号分隔

    可选

    SKLAND_MAX_RETRIES

    最大重试次数,默认为 3

    可选

    SKLAND_ANONYMOUS

    隐藏角色名,设置任意值即可开启(推荐使用 true 或 1),默认关闭

    可选

    关于 SKLAND_ANONYMOUS 配置

    作用:隐藏角色名,设置任意值即可开启(推荐使用 true 或 1),默认关闭

    效果:

     开始处理...
     【明日方舟】官服角色 博士 #[数字占位符] 今天已经签到过了
     【明日方舟:终末地】官服角色 管理员 lv.[等级占位符] 今天已经签到过了
  3. 配置说明

    • 配置凭据

      登录 森空岛网页版 后,打开 https://web-api.skland.com/account/info/hg 记下 content 字段的值。

      或者登录 鹰角网络通行证 后,打开 https://web-api.hypergryph.com/account/info/hg 记下 content 字段的值(推荐)。

      将获取的凭据设置到环境变量 SKLAND_TOKENS 中,多个凭据用逗号分隔。

       SKLAND_TOKENS=your-token-1,your-token-2
    • 配置消息通知(可选)

      通过 Statocysts 支持多种通知方式,将对应格式的通知 URL 设置到环境变量 SKLAND_NOTIFICATION_URLS 中,多个 URL 用逗号分隔。

       SKLAND_NOTIFICATION_URLS="Statocysts 格式通知 URL"
    • 其他配置

      重试次数

      可以通过环境变量 SKLAND_MAX_RETRIES 设置签到失败时的最大重试次数,默认为 3 次。

       SKLAND_MAX_RETRIES=5

      隐藏角色名

      可以通过环境变量 SKLAND_ANONYMOUS 隐藏角色名,设置任意值即可开启(推荐使用 true 或 1),默认关闭。

       SKLAND_ANONYMOUS=true
  4. 启用 GitHub Actions

    进入仓库的 Actions 标签页,如果看到提示,点击 I understand my workflows, go ahead and enable them 启用工作流。

  5. 执行签到

    GitHub Actions 会在每天 16:00 (UTC) 自动执行签到任务。你也可以手动触发:

    • 进入 Actions 标签页

    • 选择 attendance 工作流

    • 点击右侧的 Run workflow 按钮

    • 点击绿色的 Run workflow 确认执行

工作流说明

  • attendance(.github/workflows/schedule.yml)

    • 自动签到工作流,每天 16:00 (UTC) 定时执行

    • 支持手动触发和通过 workflow_call 被其他工作流调用

    • 定时执行时会自动调用 liskin/gh-workflow-keepalive@v1 防止仓库长期无活动导致 GitHub Actions 被自动停用

注意事项

  • GitHub Actions 免费额度为每月 2000 分钟,本项目的签到任务约消耗 1-2 分钟/次

  • 确保仓库为 Public 或拥有 GitHub Actions 的私有仓库配额

  • 如果长时间(60天)没有任何提交,GitHub 会自动停用 Actions,workflow-keepalive 会在每次定时执行时通过 GitHub API 重新启用工作流,无需产生额外的 commit

消息推送(可选)

参考文档:Statocysts官方文档、QQ 机器人官方文档

  1. 了解必要参数

    根据Statocysts官方文档可知,若使用 QQbot 进行消息推送则推送URL如下:

     qqbot://<app-id>:<client-secret>@user/<user-openid>

    其中qqbot://为机器人识别器;<app-id>为 QQbot 的 AppID ;<client-secret>为 QQbot 的 AppSecret ;@user为消息对象识别器;<user-openid>为该QQbot针对某一发送对象的QQ用户产生的识别ID,注意并非发送对象的QQ号。

    了解各个参数意义后就好获取正确的参数了。

  2. 获取相应参数

    为了获取AppID 以及 AppSecret,需要根据QQ 机器人官方文档注册 QQbot 。

    在我的机器人->选择相应的机器人->开发设置中可以获取到 QQbot 的 AppID 以及 AppSecret。

    为了获取<user-openid>,需要为 QQbot 添加 Agent 。

    在高级设置->设置机器人服务->LightVela中按照LightVela的官方文档配置接入 QQbot 。

    成功接入QQbot后回到QQ,使用注册QQbot的QQ号向QQbot发送命令/whoami,会获取到类似如下信息:

     You — qqbot (DM)
     User ID: 
     Tier: 
     Slash commands: 

    其中User ID后的信息就是<user-openid>。

  3. 配置 GitHub Secrets

    获取到全部参数的信息后按照qqbot://<app-id>:<client-secret>@user/<user-openid>将URL添加到 GitHub Secrets 即可。

  4. 效果展示

    2a2b54e1-7141-4061-a668-87f9329fb7e0.webp