mcpField
A
ads-update

ads-update

github.com/hainrixzマーケティング・グロース10161 回インストール1 日前に更新
リポジトリ

ads-update について

ads-updateは、広告プラットフォームの過去30日間の変更をまとめ、参照ファイルを更新するスキルです。公式の更新履歴、Reddit、Hacker News、ウェブ検索の情報からダイジェストと監査記録の付録を作成します。

主な機能

  1. 01最近のプラットフォーム変更の収集
  2. 02公式更新履歴とウェブ情報の取得
  3. 03Meta、Google、TikTok、または全対象に対応
  4. 0430日間の変更ダイジェスト作成
  5. 05監査ファイルへの主な項目の追記

活用シーン

  1. 01広告プラットフォームの最近の変更を確認
  2. 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 — 必須:コスト確認ゲート

ほかのことを始める前に、必ず次の操作を行ってください。

  1. ads/references/update-cost-warning.md の内容を読み、ユーザーに一字一句そのまま表示します。
  2. 指定されたプラットフォームの推定トークンコストを計算します。
    • 単一プラットフォーム:デフォルトの深度で 約50,000~150,000トークン
    • all:デフォルトの深度で 約500,000トークン以上
  3. AskUserQuestion を、次の質問と選択肢を正確に指定して呼び出します。
    • 質問:"/ads update <platform> を実行しますか? 推定コスト:約<N>kトークンです。続行しますか?"(<platform> と <N> は実際の値に置き換えます)
    • 選択肢:
      • Proceed(デフォルトの深度)— 指定されたモードを全コストで実行
      • Switch to quick depth — 同じ範囲を約40%のコストで実行
      • Cancel — フェッチを行わず中止
  4. ユーザーが 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日間の項目を取得します。深度モードによって、ソースごとの取得項目数の上限が決まります。

ソースの種類QuickDefaultDeep
Reddit(サブレディットごと)61220
Hacker News(キーワードごと)3610
WebFetch の変更履歴 URLすべてすべてすべて
WebSearch のクエリ(クエリごと)124
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 の途中でキャンセル:ループを停止します。すでに書き込んだファイルはロールバックしないでください(網羅範囲は部分的ですが、ファイルは有効です)。

黙って失敗してはいけません。成功したソースとスキップしたソースを必ず出力してください。

コメント