automate-this について
繰り返し行う手作業の画面録画から自動化案を作り、選んだ方法の構築とテストを支援するスキルです。映像や任意の音声から手順を復元し、利用可能な環境に合わせて案を調整します。
主な機能
- 01動画フレームと音声の抽出
- 02手順の復元と確認
- 03利用可能なツールと環境の確認
- 04段階別の自動化案の提示
- 05構築、テスト、後片付け
活用シーン
- 01繰り返すブラウザー作業の自動化
- 02手作業の表計算処理の置き換え
- 03ファイル操作やCLI手順のスクリプト化
- 04録画した作業から自動化を計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill automate-thisインストール後、Claude Code で/automate-thisを入力して読み込まれたか確認します。
詳細
これを自動化しましょう
手作業の画面録画を分析し、実際に動作する自動化を構築します。
ユーザーが繰り返しの多い作業や面倒な作業をしている様子を録画し、動画ファイルを渡します。そこで、何をしているのか、なぜしているのか、そしてスクリプトでどう自動化できるのかを判断します。
前提条件の確認
録画を分析する前に、必要なツールが利用可能か確認します。これらの確認は目立たないように実行し、問題がある場合のみ伝えてください。
command -v ffmpeg >/dev/null 2>&1 && ffmpeg -version 2>/dev/null | head -1 || echo "NO_FFMPEG"
command -v whisper >/dev/null 2>&1 || command -v whisper-cpp >/dev/null 2>&1 || echo "NO_WHISPER"
- ffmpeg は必須です。 インストールされていない場合は、ユーザーに
brew install ffmpeg(macOS の場合)、または使用している OS に応じた同等の方法を伝えてください。 - Whisper は任意です。 録画にナレーションがある場合のみ必要です。インストールされておらず、録画に音声トラックがある場合は、
pip install openai-whisperまたはbrew install whisper-cppを提案してください。ユーザーが希望しない場合は、映像のみで分析を進めてください。
フェーズ 1:録画からコンテンツを抽出する
動画ファイルのパス(通常は ~/Desktop/ にあります)が指定されたら、映像フレームと音声の両方を抽出します。
フレームの抽出
2 秒ごとに 1 フレームを抽出します。これにより、カバレッジとコンテキストウィンドウの制限とのバランスが取れます。
WORK_DIR=$(mktemp -d "${TMPDIR:-/tmp}/automate-this-XXXXXX")
chmod 700 "$WORK_DIR"
mkdir -p "$WORK_DIR/frames"
ffmpeg -y -i "<VIDEO_PATH>" -vf "fps=0.5" -q:v 2 -loglevel warning "$WORK_DIR/frames/frame_%04d.jpg"
ls "$WORK_DIR/frames/" | wc -l
このセッションで以降の一時ファイルパスには $WORK_DIR を使用します。実行ごとに作成するディレクトリのモードは 0700 で、抽出したフレームを読み取れるのは現在のユーザーだけです。
録画が 5 分を超える場合(150 フレームを超える場合)は、コンテキストの制限内に収めるため、抽出間隔を 4 秒ごとに 1 フレームに変更します。長い録画ではサンプリング頻度を下げることをユーザーに伝えてください。
音声の抽出と文字起こし
動画に音声トラックがあるか確認します。
ffprobe -i "<VIDEO_PATH>" -show_streams -select_streams a -loglevel error | head -5
音声がある場合:
ffmpeg -y -i "<VIDEO_PATH>" -ac 1 -ar 16000 -loglevel warning "$WORK_DIR/audio.wav"
# Use whichever whisper binary is available
if command -v whisper >/dev/null 2>&1; then
whisper "$WORK_DIR/audio.wav" --model small --language en --output_format txt --output_dir "$WORK_DIR/"
cat "$WORK_DIR/audio.txt"
elif command -v whisper-cpp >/dev/null 2>&1; then
whisper-cpp -m "$(brew --prefix 2>/dev/null)/share/whisper-cpp/models/ggml-small.bin" -l en -f "$WORK_DIR/audio.wav" -otxt -of "$WORK_DIR/audio"
cat "$WORK_DIR/audio.txt"
else
echo "NO_WHISPER"
fi
Whisper のバイナリがどちらも利用できず、録画に音声がある場合は、ナレーションのコンテキストが得られないことをユーザーに伝え、Whisper をインストールする(pip install openai-whisper または brew install whisper-cpp)か、映像のみで分析を進めるかを尋ねてください。
フェーズ 2:プロセスを再構成する
抽出したフレーム(および利用可能な場合は文字起こし)を分析し、ユーザーが行った作業を構造的に把握します。フレームを順番に確認し、以下を特定してください。
- 使用したアプリケーション — 録画にはどのアプリが表示されていますか?(ブラウザー、ターミナル、Finder、メールクライアント、スプレッドシート、IDE など)
- 操作の順序 — ユーザーはどのような順序で操作しましたか?クリックごと、手順ごとに確認します。
- データの流れ — 手順間でどのような情報が移動しましたか?(コピーしたテキスト、ダウンロードしたファイル、フォームへの入力など)
- 判断が必要な箇所 — ユーザーが一時停止して何かを確認したり、選択したりする場面はありましたか?
- 反復パターン — 入力を変えて同じ操作を複数回行っていましたか?
- 問題点 — 遅い、間違えやすい、面倒に見えるのはどの部分ですか?ナレーションから直接わかることもよくあります(「この部分は本当に嫌です」「いつも時間がかかります」「毎回これをしなければなりません」など)。
この再構成を番号付きの手順リストとしてユーザーに提示し、正確かどうかを確認してください。これは非常に重要です。理解が間違っていると、役に立たない自動化につながります。
形式:
Here's what I see you doing in this recording:
1. Open Chrome and navigate to [specific URL]
2. Log in with credentials
3. Click through to the reporting dashboard
4. Download a CSV export
5. Open the CSV in Excel
6. Filter rows where column B is "pending"
7. Copy those rows into a new spreadsheet
8. Email the new spreadsheet to [recipient]
You repeated steps 3-8 three times for different report types.
[If narration was present]: You mentioned that the export step is the slowest
part and that you do this every Monday morning.
Does this match what you were doing? Anything I got wrong or missed?
ユーザーが再構成の正確さを確認するまで、フェーズ 3 に進まないでください。
フェーズ 3:環境の把握
自動化を提案する前に、ユーザーが実際に利用できる環境を把握します。次の確認を実行してください。
echo "=== OS ===" && uname -a
echo "=== Shell ===" && echo $SHELL
echo "=== Python ===" && { command -v python3 && python3 --version 2>&1; } || echo "not installed"
echo "=== Node ===" && { command -v node && node --version 2>&1; } || echo "not installed"
echo "=== Homebrew ===" && { command -v brew && echo "installed"; } || echo "not installed"
echo "=== Common Tools ===" && for cmd in curl jq playwright selenium osascript automator crontab; do command -v $cmd >/dev/null 2>&1 && echo "$cmd: yes" || echo "$cmd: no"; done
これをもとに、すでにユーザーが利用できるツールに提案を絞り込みます。より簡単な方法が本当に機能しない場合を除き、新しいものを 5 つもインストールする必要がある自動化は、決して提案しないでください。
フェーズ 4:自動化を提案する
再構成したプロセスとユーザーの環境に基づいて、最大 3 段階の自動化を提案します。すべてのプロセスに 3 段階が必要とは限りません。状況に応じて判断してください。
ティア構成
ティア 1 — クイックウィン(セットアップに 5 分未満) 最小限で役立つ自動化です。シェルエイリアス、ワンライナー、キーボードショートカット、AppleScript のスニペットなどです。プロセス全体ではなく、最も手間のかかる単一のステップを自動化します。
ティア 2 — スクリプト(セットアップに 30 分未満) ユーザーが利用できるもの(bash、Python、Node)のいずれかで作成する、単独で動作するスクリプトです。プロセス全体を最初から最後まで自動化し、よくあるエラーにも対処します。必要なときに手動で実行できます。
ティア 3 — 完全自動化(セットアップに 2 時間未満) ティア 2 のスクリプトに加えて、定期実行(cron、launchd、GitHub Actions)、ログ記録、エラー通知、および必要な統合の準備(API キー、認証トークンなど)を行います。
提案の形式
各ティアについて、以下を提示します。
## Tier [N]: [Name]
**What it automates:** [Which steps from the reconstruction]
**What stays manual:** [Which steps still need a human]
**Time savings:** [Estimated time saved per run, based on the recording length and repetition count]
**Prerequisites:** [Anything needed that isn't already installed — ideally nothing]
**How it works:**
[2-3 sentence plain-English explanation]
**The code:**
[Complete, working, commented code — not pseudocode]
**How to test it:**
[Exact steps to verify it works, starting with a dry run if possible]
**How to undo:**
[How to reverse any changes if something goes wrong]
アプリケーション固有の自動化戦略
録画に登場するアプリケーションに応じて、以下の戦略を使用します。
ブラウザーを使ったワークフロー:
- 第一候補:ウェブサイトに公開 API があるか確認します。API 呼び出しはブラウザー自動化より 10 倍信頼性が高いため、API ドキュメントを探します。
- 第二候補:エンドポイントが分かっている簡単な HTTP リクエストには、
curlまたはwgetを使います。 - 第三候補:UI をクリックして進む必要のあるワークフローには、Playwright または Selenium を使います。より高速で不安定になりにくい Playwright を優先します。
- パターンを探します。ユーザーがダッシュボードから同じレポートを繰り返しダウンロードしている場合、ほぼ間違いなく API またはクエリパラメーター付きの直接 URL から取得できます。
スプレッドシートとデータのワークフロー:
- データのフィルタリング、変換、集計には pandas を使う Python を使用します。
- ユーザーが Excel で簡単な列操作をしている場合、5 行の Python スクリプトで手作業をすべて置き換えられます。
- コードを書かずにコマンドラインで手早く CSV を操作するには、
csvkitを使います。 - 出力を Excel 形式のままにする必要がある場合は、openpyxl を使います。
メールのワークフロー:
- macOS:
osascriptを使って Mail.app を操作し、添付ファイル付きメールを送信できます。 - クロスプラットフォーム:送信には Python の
smtplib、受信にはimaplibを使います。 - メールがテンプレートに沿っている場合は、変数を置換してテンプレートファイルから本文を生成します。
ファイル管理のワークフロー:
- 移動、コピー、名前変更のパターンにはシェルスクリプトを使います。
- 一括処理には
findとxargsを使います。 - 変更をトリガーとする自動化には
fswatchまたはwatchmanを使います。 - ユーザーが日付や種類ごとにフォルダーへファイルを整理している場合、3 行のシェルスクリプトで実現できます。
ターミナル/CLI のワークフロー:
- 頻繁に入力するコマンドにはシェルエイリアスを使います。
- 複数ステップの処理にはシェル関数を使います。
- プロジェクト固有のタスク群には Makefile を使います。
- ユーザーが同じコマンドを異なる引数で実行している場合は、ループで実行できます。
macOS 固有のワークフロー:
- 標準アプリ(Mail、Calendar、Finder、Preview など)の操作には AppleScript/JXA を使います。
- コードを必要としない、複数アプリにまたがる簡単なワークフローには Shortcuts.app を使います。
- ファイルを扱うワークフローには
automatorを使います。 - 定期タスクには
launchdの plist ファイルを使います(macOS では cron より優先します)。
アプリケーション間のワークフロー(アプリ間でデータを移動する):
- データの転送ポイントを特定します。転送のたびに、自動化できる機会があります。
- 録画でクリップボードを使った転送が行われている場合、アプリ同士が連携していないことを示しています。代わりに API、ファイルベースの受け渡し、または直接統合を探します。
- ユーザーがアプリ A からコピーしてアプリ B に貼り付けている場合、自動化では A のデータソースから読み取り、B の入力形式へ直接書き込むようにします。
提案を的確にする
すべての提案に、次の原則を適用してください。
-
まずボトルネックを自動化します。 録画のナレーションとタイミングから、実際にどの手順が負担になっているかを把握できます。最も負担の大きい手順を30秒で自動化するほうが、プロセス全体を2時間かけて自動化するより効果的です。
-
ユーザーのスキルレベルに合わせます。 録画でターミナルに慣れている様子が見られたら、シェルスクリプトを提案します。GUIを操作している様子が見られたら、簡単な操作で実行できるものを提案します(スクリプトをダブルクリックする、ショートカットを実行する、コマンドを1つ入力するなど)。
-
実際の時間短縮を見積もります。 録画時間を確認し、実行頻度を掛け合わせます。「この録画は4分です。毎日行うとおっしゃっていました。年間で17時間かかっています。Tier 1では毎回30秒に短縮できます。つまり、16時間を取り戻せます。」
-
80%のケースに対応します。 自動化の最初のバージョンでは、一般的なケースを確実に処理できるようにします。例外的なケースはTier 3で対応するか、手動での対応が必要なものとして明示します。
-
人による確認ポイントを維持します。 プロセスの途中でユーザーが内容を確認または承認している様子が録画にある場合、その手順は手動のままにします。判断が必要な作業は自動化しないでください。
-
ドライランを提案します。 すべてのスクリプトに、実際には処理を行わず、実行した場合の内容を表示するモードを用意します。
--dry-runフラグ、プレビュー出力、破壊的な操作の前の確認プロンプトなどを使用します。 -
認証とシークレットを考慮します。 プロセスにログインや認証情報の使用が含まれる場合、それらをハードコードしないでください。環境変数、キーチェーンへのアクセス(macOS の
securityコマンド)、または実行時の入力を使用します。 -
障害時の動作を考慮します。 ウェブサイトが停止している場合はどうなるでしょうか。ファイルが存在しない場合はどうでしょうか。形式が変わった場合はどうでしょうか。優れた提案では、こうした状況に言及し、対処方法を用意します。
フェーズ5:構築とテスト
ユーザーがティアを選んだら、次の手順を行います。
- 自動化コードをすべてファイルに書き込みます(適切な保存場所を提案します。既存のプロジェクトがあればユーザーのプロジェクトディレクトリ、なければ
~/Desktop/を使用します)。 - ユーザーに確認してもらいながら、ドライランまたはテストを行います。
- テストが成功したら、実際に実行する方法を示します。
- 失敗したら、原因を特定して修正します。一度試しただけで諦めないでください。
クリーンアップ
分析が完了したら(結果にかかわらず)、抽出したフレームと音声をクリーンアップします。
rm -rf "$WORK_DIR"
一時ファイルをクリーンアップしていることをユーザーに伝え、ファイルが残らないことを知らせます。