NSeek-checkin — GitHub Actionsで動く自動チェックインツール

Tool

概要

NSeek-checkinは、Web上の「チェックイン」操作を自動で行うことを目的とした小さな自動化プロジェクトです。Pythonスクリプト(nodeseek_checkin_fixed.py)とGitHub Actionsのワークフローを組み合わせ、複数アカウントの情報をSecretsにJSONで登録して定期実行できます。要素探索を6種類で行う堅牢な探索ロジックや、通常クリックが効かない場合に備えたJavaScriptクリックの二重化、通知用のTelegram連携が特徴で、実行前にActionsの有効化とプライベート化を推奨しています。

GitHub

リポジトリの統計情報

  • スター数: 5
  • フォーク数: 0
  • ウォッチャー数: 5
  • コミット数: 4
  • ファイル数: 3
  • メインの言語: Python

主な特徴

  • GitHub Actionsでの自動実行ワークフロー(手動実行/スケジュール可能)
  • 6種類の要素探索手段による堅牢なボタン検出
  • クリックの二重化(通常クリック + JavaScriptクリック)で失敗を回避
  • ACCOUNTS Secretsによる複数アカウント対応とTelegram通知オプション

技術的なポイント

このリポジトリの中核は、Web操作を自動化するPythonスクリプトとそれをCI環境(GitHub Actions)上で動かす仕組みです。スクリプト側では「6種の要素探索」を用意しており、一般的には id, name, class_name, tag_name, css_selector, xpath といった複数のセレクタ手段を順番に試すことで、DOM構造の変化に対して柔軟に対応します。また、クリック操作に対しては“単純クリック”で反応しない場合を想定して、WebDriverのclick()で試した後に execute_script(“arguments[0].click()”) のようなJavaScriptによるクリックを行う二重化(フォールバック)を実装しています。これにより、遮蔽された要素やイベントハンドラの違いによる失敗を低減できます。

実行環境はGitHub Actionsのubuntuランナーを想定し、ヘッドレスブラウザ(Chromium/Chrome + chromedriver)で動かすのが一般的です。Actions側ではSecretsに ACCOUNTS を登録し、値はJSON配列で複数アカウントを渡します(例: [{“email”:”…”,“password”:”…”}])。オプションで TELEGRAM_BOT_TOKEN と TELEGRAM_CHAT_ID を登録すれば、各アカウントの実行結果をTelegramに送る仕組みが用意されています。ワークフローは手動での「Run workflow」による確認やスケジュール実行が可能で、READMEでもActionsの有効化とテスト実行、さらにプライベートリポジトリ化を推奨しています。

実装上の注意点として、Web操作は要素の待ち合わせ(WebDriverWait)や例外処理(NoSuchElementExceptionやTimeoutException)を適切に扱う必要があります。CIで安定して動かすには、ブラウザドライバのインストール方法(webdriver-manager等)や、ローカルとCIでの差(ヘッドレスモードや画面サイズなど)を考慮することが重要です。セキュリティ面では、アカウント情報をActions Secretsに保存する点を明記しているものの、可能なら最小権限の専用アカウントを使い、ログや出力にパスワードが漏れないようマスクや暗号化を徹底するべきです。将来的な改善案としては、ログの整備、リトライポリシーの導入、並列実行時のスロットリング、さらにPlaywrightなどのより堅牢な自動化フレームワークへの移行が考えられます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .github: dir
  • README.md: file
  • nodeseek_checkin_fixed.py: file

まとめ

GitHub Actionsで手軽に使えるチェックイン自動化の実装例。実運用向けの工夫がある点が評価できる。

リポジトリ情報:

READMEの抜粋:

NSeek-checkin

第1步:Fork 仓库

GitHub 右上角点击 Fork 按钮

第2步:配置 Secrets

进入 Settings → Secrets and variables → Actions

点击 New repository secret

添加以下内容:

必填:ACCOUNTS

json [ {“email”: “123456@abc.com”, “password”: “abc123”} ] 可选:TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID(用于接收签到通知)

第3步:启用 Actions

进入 Actions 标签

点击 I understand my workflows, go ahead and enable them

点击 Run workflow 测试

第4步:设置为私有仓库

Settings → 下拉到 Danger Zone → Change to private

✨ 核心修复内容 ✅ 6种元素定位方式 - 确保找到按钮

✅ 双重点击机制 - 普通+JavaScript备选 …