Jev の Google Ads レシピは短いスクリプトです。PaidSync.ai が Google Ads の検索語句を取得し、Jev がビジネスに合わない語句にフラグを付け、何かが変わる前にあなたが除外キーワードを承認します。Jev は TypeSafe AI の意思決定モデルで、型付きのはい・いいえ、選択、スコアの質問に約100ミリ秒で答え、料金は入力百万トークンあたり $0.042 です。単体では型付きの質問に答えるだけで、広告アカウントの読み取りと変更を行うのは PaidSync.ai です。
TypeSafe の Jev AI とは
AI で Google Ads の除外キーワードを見つけるには、Jev AI と PaidSync.ai を組み合わせます。PaidSync.ai が検索語句を Claude に取り込み、Jev が各語句を約 100 ms で採点し、承認した除外キーワードだけを PaidSync.ai が追加します。TypeSafe は Jev を、ソフトウェアが直接使える、高速で構造化された意思決定のために作られた System One モデルと呼んでいます。文章もコードも書かず、会話もしません。TypeSafe は、Claude Code、Cursor、Muse Spark の背後にあるモデルの代わりにはならないと明言しています。
Jev には、検索語句とその数値などの状態と、名前を付けた質問を送ります。質問のタイプは三つあります。
- Noul:0〜1 の確率が付くはい・いいえの答え。
- Choice:自分で定義したリストから選ぶ一つの選択肢。確率と信頼度スコアが付きます。
- Score:自分で書いた評価基準上の位置。信頼度スコアが付きます。
TypeSafe によると、ほとんどのクエリは約100ミリ秒で完了し、エンドツーエンドでは70〜500ミリ秒とされています。入力は百万トークンあたり $0.042、出力は無料です。OpenAI も9月29日に同様の Decisions API を限定プレビューとして発表しました。
検索語句レポートが Jev に向いている理由
Google Ads の検索語句レポートは数百行になることがあり、PaidSync は一回の呼び出しで最大500行を、費用の高い順に返します。どの行も同じ問いを投げかけます。この語句を入力した人は、私たちから買うだろうか? これははい・いいえの判断で、まさに Jev の得意分野です。
チャットアシスタントはそれらの行を一つずつ読むため、リストが長くなるほど遅く、高くなります。Jev は一つずつを一秒未満でスコアリングし、一語句あたり約400入力トークン(下のスクリプトのプロンプトに基づく当社の見積もり)なら、500語句でおよそ200,000トークン、一セント未満です。返される確率から、どの判断を信頼し、どれを手作業で確認すべきかが分かります。
ある代理店 Dijitalpi は、Jev が15ブランドの数千件の検索語句を八秒で、約 US$0.20 で分類し、変更の前に専門家がレビューしたと報告しています。件数は公表されておらず、当社も確認していません。
このレシピの4ステップ
PaidSync が検索語句を取得します
スクリプトは API キーで PaidSync に接続し、過去30日間の get_search_terms_report を呼び出します。費用が発生したのにコンバージョンがなかった語句だけを残します。
Jev は語句ごとに二つの質問に答えます
はい・いいえの質問(この語句は販売しているものと無関係か?)と、選択式の質問(検索者は購入、情報収集、求職、無料のもの探し、またはその他のどれか?)です。それぞれの答えには確率が付きます。
スクリプトは確信度で振り分けます
Jev が高い確信を持つ語句は、除外候補になります。確信が持てない中間層は、人に回すか、Claude や ChatGPT にもう一度確認させます。それ以外はそのまま残します。
承認してから除外キーワードを追加します
PaidSync を接続した Claude または ChatGPT を開き、承認済みのリストを貼り付けて、除外キーワードとして追加するよう依頼します。変更は PaidSync の add_negative_keywords ツールが行い、アシスタントの確認プロンプトが最後のチェックになります。
Google Ads 検索語句スクリプト
公式 MCP SDK を使ったプレーンな JavaScript です。環境変数として PAIDSYNC_API_KEY(PaidSync ダッシュボードから)と TYPESAFE_API_KEY(TypeSafe から)を設定し、BUSINESS を販売内容を表す一文に変更してください。
// triage.mjs. Run: node triage.mjs (Node 20+, after npm install @modelcontextprotocol/sdk)
// Keys come from environment variables and travel in headers, never in the URL.
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const BUSINESS = "We sell project management software to construction companies.";
// 1. PaidSync pulls the search terms (up to 500 rows per call, highest cost first)
const transport = new StreamableHTTPClientTransport(new URL("https://mcp.paidsync.ai/mcp"), {
requestInit: { headers: { "x-api-key": process.env.PAIDSYNC_API_KEY } },
});
const paidsync = new Client({ name: "jev-search-terms", version: "1.0.0" });
await paidsync.connect(transport);
const res = await paidsync.callTool({
name: "get_search_terms_report",
// several accounts? first call set_active_account with { account_id: "123-456-7890" }
arguments: { date_range: "last_30_days" },
});
const report = res.structuredContent;
if (!report?.success) throw new Error(report?.message ?? "No report returned");
const terms = report.data.searchTerms.filter(
(t) => Number(t.cost) > 0 && Number(t.conversions) === 0,
);
// 2. Jev answers two typed questions about each term
async function ask(t) {
const r = await fetch("https://api.typesafe.ai/v1/systemone", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TYPESAFE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "jev-latest",
state: { business: BUSINESS, search_term: t.searchTerm, clicks: t.clicks, cost: t.cost },
questions: {
unrelated: {
type: "noul",
instructions: "Is this search term unrelated to what the business sells?",
criteria: {
true: "A person searching this would not buy from this business",
false: "A person searching this could become a customer",
},
},
intent: {
type: "choice",
instructions: "What is the searcher most likely looking for?",
criteria: {
buy: "To buy or compare products like this",
learn: "Information about the topic",
job: "A job or salary information",
free: "Something free or DIY",
other: "Something unrelated",
},
},
},
}),
});
if (!r.ok) throw new Error(`Jev returned ${r.status}`);
const { answers } = await r.json();
return {
term: t.searchTerm,
cost: Number(t.cost),
unrelated: answers.unrelated.noul,
intent: answers.intent.choice,
};
}
const scored = [];
for (let i = 0; i < terms.length; i += 10) {
scored.push(...(await Promise.all(terms.slice(i, i + 10).map(ask))));
await new Promise((done) => setTimeout(done, 250)); // stays under Jev's default rate limit
}
// 3. Route by confidence. Tune both thresholds on your own account.
console.log("Proposed negatives:");
console.table(scored.filter((s) => s.unrelated >= 0.85));
console.log("Needs a person:");
console.table(scored.filter((s) => s.unrelated >= 0.4 && s.unrelated < 0.85));
await paidsync.close();
バッチ間の待ち時間により、TypeSafe が一秒あたり40件としている Jev のデフォルトのレート制限を下回るため、500語句でも一分かかりません。まず厳しいしきい値で始め、一〜二週間、各リストに入る内容を確認してから、緩めてください。
書き込みの手順には人を残す
スクリプトがアカウントを変更することはありません。これは意図した設計です。PaidSync の API キーは Google Ads の読み取りとプレビューはできますが、Google Ads の変更は適用できないため、除外キーワードの追加は常に、変更を先に確認できるサインイン済みセッションを通じて行われます。他のプラットフォームでは、キーでも、サインインと同じチェックのもとで変更を適用できます。Google Ads の作成とその他の多くの作成は、まずドライランのプレビューとして実行され、一時停止や削除などの破壊的な変更には明示的な確認が必要で、適用された変更はベストエフォートで、7日間の変更前後の結果とともに記録されます。
広告データで Jev が担えるその他の仕事
- アカウント内のすべての広告にフックやオファーでタグを付け、タグごとにパフォーマンスを比較します。
- 広告を作成する前に、プラットフォームのポリシーに違反しそうな広告コピーにフラグを付けます。
- アラートを重大度で仕分け、緊急のものだけがあなたに届くようにします。
どれも同じ流れです。PaidSync が読み取り、Jev がスコアリングし、人またはチャットアシスタントが判断し、PaidSync が書き込みます。承認の手順については広告を Claude に接続する方法を、無駄を減らすその他の方法については AI による除外キーワードの自動化をご覧ください。
ChatGPT に追加:ChatGPT のプラグインディレクトリで PaidSync.ai を開き、インストールしてからサインインします。
Claude に追加:Claude のコネクタディレクトリで PaidSync.ai を開き、「接続」をクリックしてからサインインします。
よくある質問
Jev は Google Ads に接続できますか?
いいえ。Jev は送られた質問にだけ答え、どのサービスにも接続しません。Google Ads のデータは PaidSync が提供し、スクリプトが Jev に渡します。
Jev AI とは?
Jev は TypeSafe AI の意思決定モデルで、2026年9月15日からアーリーアクセスです。型付きのはい・いいえ、選択、スコアの質問に、約100ミリ秒で確率付きの答えを返します。チャットも文章作成も行動もしないため、エージェントではありません。
Jev で500件の検索語句を仕分けるといくらかかりますか?
一語句あたり約400入力トークンと見積もると、500語句でおよそ200,000トークンです。入力百万トークンあたり $0.042、出力は無料なので、Jev 側の費用は一セント未満です。
AI で Google Ads の除外キーワードを見つけるには?
検索語句レポートを取得し、費用が発生したのにコンバージョンがなく、販売内容に合わない語句にフラグを付け、追加する前に人がリストを確認します。このレシピでは、PaidSync がレポートを取得し、Jev が語句にフラグを付け、承認済みの除外キーワードを Claude や ChatGPT で追加します。
スクリプト自身が除外キーワードを追加しないのはなぜですか?
PaidSync の API キーは Google Ads の読み取りとプレビューはできますが、Google Ads の変更は適用できません。除外キーワードの追加は Claude や ChatGPT のサインイン済みセッションを通じて行うため、すべての変更を人が先に確認できます。
Jev と OpenAI の Decisions API のどちらを使うべきですか?
どちらも、決まった選択肢の中から答える仕組みです。OpenAI は2026年9月29日に Decisions API を限定プレビューとして発表しました。このレシピの PaidSync 側は、どちらでも同じです。
これに PaidSync はいくらかかりますか?
PaidSync は月100タスク($50 相当)まで無料で、クレジットカードは不要です。その後のプランは月 $99 からです。レポートは一回につき一タスク以上を使います。