{"id":78011,"plugin_id":"plugin_asdk_app_6ae1bfac9b888191ad689db2758d3836","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-03T06:12:43.275Z","digest":"5598c53249049d214741346cc7ddf63df87ac1793b9b8167b18af4cf22e1fd03","against":null,"payload":{"description":"Build a new Google Ads search campaign with Toffu. Use when the user asks to launch, create or set up a search campaign. Plans the campaign, ad group, keywords and ad with the user, then stages each part as a paused proposal the user confirms.","included_files":[],"name":"launch-search-campaign","skill_md_contents":"---\nname: launch-search-campaign\ndescription: Build a new Google Ads search campaign with Toffu. Use when the user asks to launch, create or set up a search campaign. Plans the campaign, ad group, keywords and ad with the user, then stages each part as a paused proposal the user confirms.\n---\n\n# Google Ads search campaign launch\n\nUse the Toffu tools only. Never apply a change the user has not confirmed. Everything is created PAUSED.\n\n## Steps\n\n1. Call `get_account_context`. If several Google Ads accounts are connected, ask which one. Pass its id as `account_ids` `{\"google_ads\": \"<id>\"}` to `query_campaign_performance`, and as `account_id` to the other tools.\n2. Ask for what you do not have: the product or service, the landing page URL, the daily budget, the goal (sales or leads) and the target CPA or ROAS, if any.\n3. Write a plan and get the user's approval before you stage anything:\n   - Campaign: name, daily budget, bidding (MAXIMIZE_CONVERSIONS for leads, MAXIMIZE_CONVERSION_VALUE for sales).\n   - One ad group per theme, at most 3.\n   - 5 to 20 keywords per ad group, in PHRASE or EXACT match. Use BROAD only if the user asks.\n   - One responsive search ad per ad group: 8 to 15 headlines of 30 characters or fewer, 2 to 4 descriptions of 90 characters or fewer.\n4. Call `propose_create_campaign` with fields `name`, `daily_budget_micros` (budget x 1,000,000), `campaign_type` \"SEARCH\", `bidding_strategy`, `status` \"PAUSED\". Show the preview, and call `apply_change` after the user confirms. Keep the campaign id from the result.\n5. For each ad group, call `propose_create_ad_set` with `campaign_id` and fields `name`, `status` \"ENABLED\". Apply after the user confirms. Call `list_ad_sets` to get its `adGroup.resourceName`.\n6. For each ad group, call `propose_create_keyword` with fields `ad_group_resource_name`, `ad_group_name` and `keywords` `[{\"text\": \"...\", \"match_type\": \"PHRASE\"}]`. Apply after the user confirms.\n7. For each ad group, call `propose_create_ad` with fields `ad_group_resource_name`, `ad_group_name`, `headlines`, `descriptions`, `final_urls`. Apply after the user confirms.\n8. Summarize what exists now. The campaign stays PAUSED. To start it, the user confirms `propose_update_campaign` `{\"status\": \"ENABLED\"}`.\n\n## Rules\n\n- The ad groups, keywords and ads only serve when the campaign is enabled. Say so.\n- Never enable the campaign in the same step as you create it.\n- Use the account currency for the budget.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}