開発メモ
概要
Windows環境のClaude Codeでは、標準ではクリップボードの画像を直接貼り付けられない。この設定により、Ctrl+Shift+V でスクリーンショットをファイルとして保存し、そのパスを自動的に貼り付けることで画像を参照できるようになる。
仕組み
1. Shift+Win+S でスクリーンショット撮影(Windows標準)
↓ 画像がクリップボードにコピーされる
2. Ctrl+Shift+V を押す(AutoHotKeyが発動)
↓
3. PowerShellスクリプトが実行される
- クリップボードの画像を PNG ファイルとして保存
- 保存先: %USERPROFILE%\Pictures\ClipboardImages
- ファイル名: clip_yyyyMMdd_HHmmss.png
↓
4. 保存したファイルパスをクリップボードにコピー
↓
5. 通常の Ctrl+V でパスが貼り付けられる
↓
6. Claude Code が Read ツールで画像を読み込む
ファイル配置
3つのスクリプトファイルを任意のディレクトリに配置:
C:\Users\<ユーザー名>\<任意のディレクトリ>\claude-image-paste\
├── PasteSavedPath.ahk # AutoHotKey スクリプト
├── run_save_clip.bat # バッチファイル
└── SaveImageToClipboardPath.ps1 # PowerShell スクリプト
例: C:\Users\numbe\Git_repo\AutoHotkey\claude-image-paste\
各ファイルの内容
1. SaveImageToClipboardPath.ps1
クリップボードの画像をファイルに保存し、パスをクリップボードにコピーする。
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$folder = "$env:USERPROFILE\Pictures\ClipboardImages"
if (!(Test-Path $folder)) { New-Item -ItemType Directory -Path $folder | Out-Null }
$image = [Windows.Forms.Clipboard]::GetImage()
if ($image -ne $null) {
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$filepath = Join-Path $folder "clip_$timestamp.png"
$image.Save($filepath, [System.Drawing.Imaging.ImageFormat]::Png)
Set-Clipboard -Value $filepath
}
2. run_save_clip.bat
PowerShell スクリプトを実行するバッチファイル。パスは自分の環境に合わせて変更すること。
@echo off
powershell -ExecutionPolicy Bypass -File "C:\Users\<ユーザー名>\<任意のディレクトリ>\claude-image-paste\SaveImageToClipboardPath.ps1"
3. PasteSavedPath.ahk
キーボードショートカットを設定する AutoHotKey v2 スクリプト。パスは自分の環境に合わせて変更すること。
#Requires AutoHotkey v2.0
; 起動時の通知
A_IconTip := "Claude Image Paste (Ctrl+Shift+V)"
TrayTip "Ctrl+Shift+V で画像パスを貼り付け", "Claude Image Paste", "Iconi"
^+v:: { ; Ctrl (^) + Shift (+) + V
Run "C:\Users\<ユーザー名>\<任意のディレクトリ>\claude-image-paste\run_save_clip.bat", , "Hide"
Sleep 200
Send "^v"
}
ポイント:
#Requires AutoHotkey v2.0でバージョン選択ダイアログをスキップTrayTipで起動時にトースト通知を表示
セットアップ手順
1. AutoHotKey のインストール
AutoHotkey 公式サイト からダウンロード・インストール。
2. 画像ディレクトリへのアクセス許可
Claude Code が画像ファイルを読み込めるように、settings.json に Read 権限を追加する。
方法A: ユーザー単位の設定(推奨)
~/.claude/settings.json に追加。全プロジェクトで有効になる。
{
"permissions": {
"allow": [
"Read(C:\\Users\\<ユーザー名>\\Pictures\\ClipboardImages\\**)"
]
}
}
方法B: プロジェクト単位の設定
.claude/settings.local.json に追加。そのプロジェクトのみで有効。
{
"permissions": {
"allow": [
"Read(C:\\Users\\<ユーザー名>\\Pictures\\ClipboardImages\\**)"
]
}
}
3. Stream Deck の設定(オプション)
| 設定項目 | 値 |
|---|---|
| システム | 開く |
| タイトル | 任意(例: claude image paste) |
| App/ファイル | C:\Users\<ユーザー名>\<任意のディレクトリ>\claude-image-paste\PasteSavedPath.ahk |
例: C:\Users\numbe\Git_repo\AutoHotkey\claude-image-paste\PasteSavedPath.ahk
使い方
- Stream Deck のボタンを押す → AutoHotKey が常駐起動(トースト通知が表示される)
- Shift+Win+S でスクリーンショットを撮影
- Claude Code のターミナルで Ctrl+Shift+V を押す
- 画像パスが貼り付けられ、Claude Code が画像を読み込む
AutoHotKey ショートカット記号
| 記号 | キー |
|---|---|
^ | Ctrl |
+ | Shift |
! | Alt |
# | Windows |
トラブルシューティング
バージョン選択ダイアログが表示される
#Requires AutoHotkey v2.0 がスクリプトの先頭にあるか確認。または、AutoHotKey v1.1 をアンインストール。
画像が貼り付けられない
- AutoHotKey スクリプトが実行中か確認(タスクトレイにアイコンがあるか)
- クリップボードに画像がコピーされているか確認
- PowerShell の実行ポリシーエラーが出ていないか確認
Claude Code が画像を認識しない
settings.jsonに画像ディレクトリへの Read 権限が設定されているか確認- ファイルパスが正しくコピーされているか確認
「指定されたファイルが見つかりません」エラー
スクリプト内のパスが実際のファイル配置場所と一致しているか確認。