ads-update について
ads-updateは、広告プラットフォームの過去30日間の変更をまとめ、参照ファイルを更新するスキルです。公式の更新履歴、Reddit、Hacker News、ウェブ検索の情報からダイジェストと監査記録の付録を作成します。
主な機能
- 01最近のプラットフォーム変更の収集
- 02公式更新履歴とウェブ情報の取得
- 03Meta、Google、TikTok、または全対象に対応
- 0430日間の変更ダイジェスト作成
- 05監査ファイルへの主な項目の追記
活用シーン
- 01広告プラットフォームの最近の変更を確認
- 02プラットフォーム参照資料と監査記録を更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hainrixz/ claude-ads --skill ads-updateインストール後、Claude Code で/ads-updateを入力して読み込まれたか確認します。
詳細
/ads update <platform|all> — 自動更新されるプラットフォーム別リファレンス
このスキルは、各広告プラットフォームについて、過去30日間に実際に変更された内容を反映したプラットフォーム別のリファレンスファイルを再生成します。情報源には、Reddit、Hacker News、各プラットフォームの公式変更履歴、オープンウェブが含まれます。
last30days-skill の改変版を使用しています(MIT、Matt Van Horn 作)。詳しいクレジット表記については scripts/lib/THIRD_PARTY_NOTICES.md をご覧ください。
ステップ 0 — 必須:コスト確認ゲート
ほかのことを始める前に、必ず次の操作を行ってください。
ads/references/update-cost-warning.mdの内容を読み、ユーザーに一字一句そのまま表示します。- 指定されたプラットフォームの推定トークンコストを計算します。
- 単一プラットフォーム:デフォルトの深度で 約50,000~150,000トークン
all:デフォルトの深度で 約500,000トークン以上
AskUserQuestionを、次の質問と選択肢を正確に指定して呼び出します。- 質問:
"/ads update <platform> を実行しますか? 推定コスト:約<N>kトークンです。続行しますか?"(<platform>と<N>は実際の値に置き換えます) - 選択肢:
Proceed(デフォルトの深度)— 指定されたモードを全コストで実行Switch to quick depth— 同じ範囲を約40%のコストで実行Cancel— フェッチを行わず中止
- 質問:
- ユーザーが
Cancelを選択した場合、またはProceed/Switch to quick depth以外の回答をした場合は、ただちに中止し、次のメッセージを1行だけ表示します。"Cancelled. No sources fetched, no files written."
このステップを省略しないでください。 クレジットが少ないプランのユーザーが、誤って残高を使い切ることを防ぐための手順です。
ステップ 1 — 引数の解析
次の列挙値から、引数を1つだけ受け付けます。
meta | google | tiktok | all
ユーザーが引数なしで /ads update を実行した場合は、AskUserQuestion を使って対象のプラットフォームを尋ねます(all をデフォルトにしないでください)。不明な値が渡された場合は、有効な選択肢を列挙して終了します。
all の場合は、次の順序で3つのプラットフォームを順番に処理します:meta, google, tiktok。順番に処理することが重要です。並列処理すると公開APIのレート制限に達し、コストが予測しにくくなります。
ステップ 2 — プラットフォームのソースセットを読み込む
次の Bash コマンドを実行して、ソース設定を取得します。
python3 scripts/ads_sources.py --list <platform>
JSON 出力を解析します。次の値が取得されます。
display_name— ダイジェストのヘッダーに使用する、人が読めるプラットフォーム名subreddits— 問い合わせる Reddit サブレディットの一覧changelog_urls— ベンダー公式のリリースノートページ(WebFetchを使用)search_queries— 業界メディアの記事を見つけやすいように設定された検索クエリ(WebSearchを使用)hn_keywords— Hacker News で検索する用語x_handles— 任意。X/Twitter API キーがない場合はスキップ
ステップ 3 — ソースを取得する
有効なソースごとに、過去30日間の項目を取得します。深度モードによって、ソースごとの取得項目数の上限が決まります。
| ソースの種類 | Quick | Default | Deep |
|---|---|---|---|
| Reddit(サブレディットごと) | 6 | 12 | 20 |
| Hacker News(キーワードごと) | 3 | 6 | 10 |
| WebFetch の変更履歴 URL | すべて | すべて | すべて |
| WebSearch のクエリ(クエリごと) | 1 | 2 | 4 |
Reddit(無料、キー不要)
各サブレディットについて、次を実行します。
curl -s "https://www.reddit.com/r/<sub>/new.json?limit=25" -H "User-Agent: claude-ads/2.0"
JSON を解析し、created_utc が過去30日以内の投稿だけを残します。created_utc(Unix タイムスタンプ)から published_at を YYYY-MM-DD 形式で計算します。title、permalink、score、num_comments、upvote_ratio、selftext(先頭500文字)を記録します。
Hacker News(無料、キー不要)
hn_keywords の各キーワードについて、次を実行します。
curl -s "https://hn.algolia.com/api/v1/search_by_date?query=<keyword>&numericFilters=created_at_i>$(date -u -v-30d +%s)&hitsPerPage=10"
title、url、points、num_comments、created_at を記録します。
公式変更履歴
changelog_urls の各 URL について、WebFetch ツールを使い、次のプロンプトを指定します。「過去30日間のリリースノート、変更履歴の項目、機能に関する発表を抽出してください。各項目を、タイトル、日付(YYYY-MM-DD)、1行の要約、可能であれば URL アンカーを含むリストとして返してください。」
ウェブ検索(業界メディア)
深度設定の上限まで search_queries の各クエリについて、WebSearch ツールを使用します。検索結果はクライアント側でフィルタリングし、searchengineland.com、searchenginejournal.com、marketingland.com、martech.org、adweek.com、ベンダーのブログからの結果を優先します。
Step 4 — スコアリングと重複の除去(任意ですが推奨)
30 件以上取得した場合は、ランキング付けのために同梱のスコアリングライブラリで処理します。それ以外の場合はスキップし、published_at の降順で並べます。
python3 -c "
import sys, json
sys.path.insert(0, 'scripts')
from lib import signals, dedupe
from lib.story import Story
raw = json.load(sys.stdin)
items = [Story(**r) for r in raw]
items = signals.annotate_stream(items)
items = dedupe.dedupe_items(items, threshold=0.7)
print(json.dumps([{'source': i.source, 'title': i.title, 'url': i.url, 'published_at': i.published_at, 'rank_score': i.rank_score} for i in items], indent=2))
"
Step 5 — ダイジェストを生成する
出力を ads/references/<platform>-changelog-30d.md に書き込みます(既存の場合は上書きします)。以下の構成をそのまま使用してください。
# <Display Name> — Last 30 Days
_Generated <YYYY-MM-DD> by `/ads update <platform>` (depth: <quick|default|deep>)_
> **What this is:** the last 30 days of changes to <platform> ads — features, deprecations, policy updates — pulled from official changelogs, practitioner discussion, and industry press.
## Official Changelog Entries
- [<title>](<url>) — <YYYY-MM-DD> — <1-line summary>
- ...
## Industry Press
- [<title>](<url>) — <YYYY-MM-DD> — <publisher> — <1-line summary>
- ...
## Community Discussion (Reddit / Hacker News)
- [<title>](<url>) — <YYYY-MM-DD> — r/<sub> or HN — <1-line summary>
- ...
---
_Sources fetched: <N> Reddit, <M> HN, <P> official changelog URLs, <Q> web searches. Deduped via hybrid Jaccard at threshold 0.7._
セクションに項目がない場合は、次を出力します:_No items found in the last 30 days from this source class._
Step 6 — 既存のプラットフォーム監査ファイルに追記する
変更履歴ファイルを書き込んだ後、「Recent Updates」の付録を ads/references/<platform>-audit.md に追記します(上書きしないでください)。簡潔にまとめ、影響が最も大きい上位 5 件のみを記載します。
---
## Recent Updates (Last 30 Days)
_Auto-appended by `/ads update <platform>` on <YYYY-MM-DD>. See `ads/references/<platform>-changelog-30d.md` for the full digest._
1. <impact> — [<title>](<url>) — <YYYY-MM-DD>
2. ...
監査ファイルに以前の実行で作成された「Recent Updates」の付録がすでにある場合は、重複して積み重ねずに置き換えてください。マーカー行 ## Recent Updates (Last 30 Days) を照合してください。
Step 7 — ユーザーに確認する
1 行の要約を出力します。
✓ /ads update <platform> complete — wrote ads/references/<platform>-changelog-30d.md (<N> items) and appended top 5 to ads/references/<platform>-audit.md.
all モードの場合は、各プラットフォームの処理が完了するたびに 1 回ずつ出力し、最後に要約行を出力します。
✓ /ads update all complete — refreshed 7 platforms.
失敗時の対応
- Reddit がブロックされた/429:該当する subreddit をスキップし、その旨を出力に記載します。再試行しないでください。公開 Reddit JSON の取得はベストエフォートです。
- WebFetch の URL が 404:該当する変更履歴 URL をスキップし、その旨を出力に記載します。
- WebSearch で結果が見つからない:該当するクエリをスキップします。
- プラットフォームのすべてのソースが空:「No items found in the last 30 days」のセクションを含むファイルを引き続き書き込みます。これにより、処理が完了したことをユーザーに明示できます。
- ユーザーが
allの途中でキャンセル:ループを停止します。すでに書き込んだファイルはロールバックしないでください(網羅範囲は部分的ですが、ファイルは有効です)。
黙って失敗してはいけません。成功したソースとスキップしたソースを必ず出力してください。