はじめに
-
AtCoderの問題の復習をする際に「どう間違えた?」や「私は~の解答なんだけどよりよい解法はある?」をAIにレビューしてもらうために問題を抽出(スクレイピング)したい。
-
既存のAtcoderをスクレイピングツールはあるんだけど、PythonやNodeをインストールする前提であり、環境に依存しないお手軽でシンプルな問題抽出をしたい
これらの課題を解決するために、OSや環境に依存しない単一実行ファイルのツール「atcs」を作成しました。
GitHub:
このツールは単一の実行ファイルで動作するため、PythonやNode.jsなどの環境構築が不要です。
主な特徴
- ✅ 環境依存なし: 単一の実行ファイルで動作(Python/Node.js不要)
- ✅ 簡単操作: URLを指定するだけで問題を抽出
- ✅ 画像対応: 問題文に含まれる画像も自動ダウンロード
- ✅ JSON形式: 構造化されたデータで保存
- ✅ クロスプラットフォーム: Windows、Linux、macOS対応
インストール方法
Releasesページから、お使いのOSとアーキテクチャに合ったバイナリをダウンロードしてください。
-
Windows (amd64):
atcs-windows-amd64.exe -
Windows (arm64):
atcs-windows-arm64.exe -
Linux (amd64):
atcs-linux-amd64 -
Linux (arm64):
atcs-linux-arm64 -
macOS (amd64):
atcs-darwin-amd64 -
macOS (arm64):
atcs-darwin-arm64
Windowsの場合
ダウンロードしたファイル名をatcs.exeに変更して、環境変数PATHに追加してください。
Linux/macOSの場合
# 最新バージョンをダウンロード(Linux amd64の場合)
curl -L https://github.com/tomyou666/atcoder-scraper/releases/latest/download/atcs-linux-amd64 -o atc
# 実行可能にする
chmod +x atc
# PATHに追加(例:/usr/local/bin/)
sudo mv atcs /usr/local/bin/
# インストール確認
atcs --help
使用方法
基本的な使用方法は非常にシンプルです:
atcs <AtCoderの問題URL> [出力ディレクトリ名/ファイル名]
使用例
1. 標準出力にJSONを表示
atcs https://atcoder.jp/contests/abc123/tasks/abc123_a
2. ディレクトリに保存(画像も自動ダウンロード)
atcs https://atcoder.jp/contests/abc123/tasks/abc123_a problem_data
このコマンドを実行すると、problem_dataディレクトリが作成され、以下のファイルが保存されます:
-
problem_data/problem.json- 問題データ(JSON形式) -
problem_data/*.png- 問題文に含まれる画像(複数ある場合は自動的にダウンロード)
3. ファイル名を指定して保存
atcs https://atcoder.jp/contests/abc123/tasks/abc123_a output.json
出力形式
問題データは以下のようなJSON形式で保存されます:
{
"problem": "問題文の内容",
"constraints": "制約の内容",
"input": "入力形式の説明",
"images": ["画像URL1", "画像URL2"]
}
画像は自動的にダウンロードされ、JSONファイルと同じディレクトリに保存されます。
実際の使用例
例:ABC431のE問題(画像付き)を抽出
atcs https://atcoder.jp/contests/abc431/tasks/abc431_e abc431_e
保存されたファイル構造:
abc431_e
|-- 1aeac5f2fecf4319d369b8cc3067959a.png
|-- 283ea6eabada389e76e89518fcb9fb18.png
|-- 9410773fd7615321f27f070d5f0b1844.png
|-- 9a3821cb76d936b95b6979e084d56994.png
|-- f66a190627b09b9e6c4cbacb84b6d9bd.png
`-- problem.json
補足
本プロジェクトはコンテスト終了後や練習問題をAIにレビューを行ってもらうために、問題文を抽出することを目的としたツールであり、本番中の利用は想定していません。
⇒なので、「A~Eを一括して問題文をスクレイピングする」などのコンテスト単位での機能はありません。
もちろんですが、本番での生成AI利用は AtCoderの利用規約 で原則禁止されています。
本ツールを利用して「スクレイピング ⇒ 本番コンテストの問題をAIに読み込ませる」は絶対にやめてください。