↓を全文そのままClaude Codeに貼ってください。
読み取り専用のプロンプトなので、勝手に何か実行したりしません。
-----
私の headless Claude Code(claude -p / Agent SDK 起動。ターミナル/デスクトップの対話利用は除外)の実コストを、直近7日ぶん・カレントプロジェクトについて、各セッションの実モデルを公式APIレートで課金して集計し、そこから月額を予測して。下のスクリプトをそのまま実行し、(A)モデル別コスト (B)自動実行別コスト(7日/月額予測) (C)費目内訳 を表で出して。読み取り専用です。
# === Headless Claude Code cost estimator(直近7日→月額予測)===
TARGET_CWD="$PWD" # このプロジェクトだけ集計。全プロジェクトなら "" にする
find ~/.claude/projects -name '*.jsonl' -mtime -7 2>/dev/null | while IFS= read -r f; do
jq -rs --arg cwd "$TARGET_CWD" '
([.[]|.entrypoint//empty][0]) as
$ep
| ([.[]|.cwd//empty][0] // "") as $c0
| if ($ep != "sdk-cli") then empty
elif ($cwd != "" and ($c0 | index($cwd)) == null) then empty
else
( ([.[]|select(.type=="user")][0].message.content) as
$c
| (if ($c|type)=="string" then
$c
else (($c[]?|select(.type=="text").text)//"") end)
| gsub("[\n\t]";" ") | gsub(" ";" ") | .[0:55] ) as
$g
| [ .[] | select(.type=="assistant" and .message.usage != null) ]
| group_by(.message.model)[]
| [
$g, (.[0].message.model // "unknown"),
(map(.message.usage.input_tokens//0)|add),
(map(.message.usage.output_tokens//0)|add),
(map(.message.usage.cache_read_input_tokens//0)|add),
(map(.message.usage.cache_creation_input_tokens//0)|add) ] |
@tsv
end' "$f" 2>/dev/null
done | awk -F'\t' '
function rate(m){
if (m ~ /fable-5|mythos-5/) return "10 50 1 12.5";
else if (m ~ /opus-4-[5678]/) return "5 25 0.5 6.25";
else if (m ~ /opus-4-[01]/) return "15 75 1.5 18.75";
else if (m ~ /sonnet-4/) return "3 15 0.3 3.75";
else if (m ~ /haiku-4/) return "1 5 0.1 1.25";
else if (m ~ /haiku-3-5/) return "0.8 4 0.08 1";
else return "5 25 0.5 6.25"; # 未知はOpus相当で概算
}
{ split(rate($2),R," ");
c=($3*R[1] $4*R[2] $5*R[3] $6*R[4])/1e6;
cg[$1] =c; cm[$2] =c; tot =c;
eIN =$3*R[1]/1e6; eOUT =$4*R[2]/1e6; eCR =$5*R[3]/1e6; eCW =$6*R[4]/1e6; }
END{
if(tot==0){print "headless(sdk-cli)セッションが見つかりません。TARGET_CWD=\"\" で全プロジェクトも試して。"; exit}
m=30.44/7; # 7日実測 → 月額予測の係数
print "=== (A) モデル別コスト(直近7日)===";
for(k in cm) printf " %-26s $%8.2f (%4.1f%%)\n",k,cm[k],cm[k]/tot*100;
print "\n=== (B) 自動実行別コスト(先頭55字でグルーピング・月額予測)===";
printf "s s %s\n","mo予測$","7d_$","first-prompt";
for(k in cg) printf ".0f .2f %s\n",cg[k]*m,cg[k],k | "sort -rn";
close("sort -rn");
printf ".0f .2f %s\n",tot*m,tot,"── TOTAL (headless) ──";
print "\n=== (C) 費目内訳(7日合計 $"sprintf("%.2f",tot)" → 月額予測 $"sprintf("%.0f",tot*m)")===";
printf " cache書込 : $%7.2f (%2.0f%%) ← cold起動でコンテキスト書込\n",eCW,eCW/tot*100;
printf " cache読込 : $%7.2f (%2.0f%%)\n",eCR,eCR/tot*100;
printf " 出力 : $%7.2f (%2.0f%%)\n",eOUT,eOUT/tot*100;
printf " 生入力 : $%7.2f (%2.0f%%)\n",eIN,eIN/tot*100;
}'