From adspirer
Manages Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads campaigns via natural language. Automates keyword research, budget optimization, ROAS tracking, wasted spend analysis, and reporting.
npx claudepluginhub amekala/adspirer-mcp-plugin --plugin adspirer-ads-agentThis skill uses the workspace's default tool permissions.
AI agent for performance marketing, paid media, and digital advertising. Connects directly to ad platform APIs to create campaigns, pull live performance data, research keywords, optimize budgets, and manage ads across Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads.
Manage ad campaigns across Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads via Adspirer MCP server. Analyze performance, research keywords, create campaigns, optimize budgets.
Plans and optimizes paid advertising campaigns on Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads. Handles bid strategies, budget allocation, audience building, and campaign structures.
Guides creation, optimization, and scaling of paid ad campaigns on Google Ads, Meta, LinkedIn, and X for efficient customer acquisition. Useful for promoting products via performance marketing.
Share bugs, ideas, or general feedback.
AI agent for performance marketing, paid media, and digital advertising. Connects directly to ad platform APIs to create campaigns, pull live performance data, research keywords, optimize budgets, and manage ads across Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads.
This skill installs the Adspirer plugin (openclaw-adspirer) — the same 175+ tools, same MCP server, same capabilities as the adspirer-ads-agent skill.
# Install the plugin
openclaw plugins install openclaw-adspirer
# Authenticate
openclaw adspirer login
# Connect your ad platforms
openclaw adspirer connect
# Verify
openclaw adspirer status
Connect your ad accounts at https://adspirer.ai/connections
Follow these steps in order. Do not skip steps.
Always start here before any ad operation:
get_connections_status| User goal | Workflow | Key tools |
|---|---|---|
| View campaign metrics | Performance Analysis | get_campaign_performance, get_meta_campaign_performance, get_linkedin_campaign_performance |
| Cross-platform overview | Cross-Platform Dashboard | See Cross-Platform section below |
| Find keywords | Keyword Research | research_keywords |
| Create a campaign | Campaign Creation | Platform-specific flows below |
| Reduce wasted spend | Budget Optimization | optimize_budget_allocation, analyze_wasted_spend, analyze_search_terms |
| Switch accounts | Account Management | switch_primary_account |
| Compare platforms | Cross-Platform | Call each platform's performance tool, present side-by-side |
| Check ad fatigue | Creative Management | detect_meta_creative_fatigue, analyze_linkedin_creative_performance |
| Understand audiences | Audience Analysis | get_meta_audience_insights, get_linkedin_audience_insights, search_audiences |
| Add ad extensions | Ad Extensions | add_sitelinks, add_callout_extensions, add_structured_snippets, list_campaign_extensions |
| Add/manage keywords | Keyword Management | add_keywords, remove_keywords, update_keyword, add_negative_keywords, remove_negative_keywords |
Follow the workflow patterns below. Always read first (performance, status), then act (create, optimize).
Present results in tables with key metrics. Highlight top and underperforming items. Propose actionable next steps.
get_campaign_performance — params: lookback_days (7/30/60/90, default 30), optional customer_idget_meta_campaign_performance — params: lookback_days, optional ad_account_idget_linkedin_campaign_performance — params: lookback_daysget_tiktok_campaign_performance — params: lookback_daysPresent: impressions, clicks, CTR, spend, conversions, cost/conversion, ROAS. Default to 30-day lookback.
When the user asks for overall performance, a weekly review, or cross-platform comparison:
get_connections_status to identify active platformsget_campaign_performanceget_linkedin_campaign_performanceget_meta_campaign_performanceanalyze_wasted_spendanalyze_linkedin_wasted_spendanalyze_meta_wasted_spendGoogle Ads Search:
research_keywords — mandatorydiscover_existing_assets — check for existing ad assetsvalidate_and_prepare_assets — validate before creationcreate_search_campaign — create the campaign (PAUSED status)add_sitelinks — add 10+ validated sitelinksadd_callout_extensions — add 4+ calloutsadd_structured_snippets — add relevant structured snippetslist_campaign_extensions — verify all extensions were addedGoogle Ads Performance Max:
discover_existing_assets — check existing assetsvalidate_and_prepare_assets — validate creative assetscreate_pmax_campaign — create the campaignadd_pmax_search_themes — add up to 50 themes per asset groupsearch_audiences + add_pmax_audience_signal — add audience signalsGoogle Ads Demand Gen:
discover_existing_assets — check existing images, logos, videossearch_audiences — find relevant audiences for audience_segments parametercreate_demandgen_campaign — create the campaignGoogle Ads YouTube:
validate_video — validate the YouTube videodiscover_existing_assets — find existing logossearch_audiences — find relevant audiencescreate_youtube_campaign — create the campaignLinkedIn Ads:
get_linkedin_organizations — get linked company pages (CALL FIRST)discover_linkedin_assets — check existing assetsvalidate_and_prepare_linkedin_assets — validate assetscreate_linkedin_image_campaign (or video/carousel/text) — create the campaignMeta Ads:
get_connections_status — verify Meta account connecteddiscover_meta_assets — check existing assetsvalidate_and_prepare_meta_assets — validate assetssearch_meta_targeting or browse_meta_targeting — find audiencescreate_meta_image_campaign (or video/carousel) — create the campaignTikTok Ads:
discover_tiktok_assets — check existing assetsvalidate_and_prepare_tiktok_assets — validate video assetscreate_tiktok_campaign or create_tiktok_video_campaign — create the campaignFollow these rules EXACTLY when calling Adspirer tools to avoid validation errors:
All IDs (campaign_id, ad_account_id, video_id, image_hash, ad_group_id, keyword_id, organization_id, creative_id) MUST be passed as quoted strings, never as bare integers.
"existing_video_id": "1333064875515942""existing_video_id": 1333064875515942Copy IDs exactly as returned by list/discover tools. Do not round, truncate, or change any digits.
Many tools require IDs from prior tool calls:
list_campaigns → get campaign_id before update/pause/structureget_campaign_structure → get ad_group_id before keyword operationsdiscover_existing_assets → get image_hash, video_id before campaign creationget_linkedin_organizations → get organization_id and account_idPass budget fields as numbers, not strings:
"budget_daily": 50"budget_daily": "50"For add_negative_keywords, each keyword must be an object:
"keywords": [{"text": "free", "match_type": "BROAD"}]"keywords": ["free", "cheap"]Performance & Analytics:
get_campaign_performance — campaign metrics (impressions, clicks, CTR, spend, conversions, ROAS). Params: lookback_days (default 30), optional customer_idanalyze_wasted_spend — find underperforming keywords and ad groups burning budgetoptimize_budget_allocation — suggest budget reallocations across campaignsanalyze_search_terms — review search terms, identify negative keyword opportunitiesexplain_performance_anomaly — explain sudden changes in campaign metricsget_benchmark_context — industry benchmarks for the verticalCampaign Creation:
select_google_campaign_type — interactive campaign type selection wizardresearch_keywords — keyword research with search volumes, CPC, competition. Params: business_description or seed_keywords, optional website_url, target_locationdiscover_existing_assets — check existing images, videos, logos in the accountvalidate_and_prepare_assets — validate creative assets before campaign creationvalidate_video — validate YouTube video IDs for PMax/YouTube campaignscreate_search_campaign — create Google Search campaign (PAUSED)create_pmax_campaign — create Performance Max campaigncreate_demandgen_campaign — create Demand Gen campaign (YouTube, Gmail, Discover)create_youtube_campaign — create YouTube video campaignadd_demandgen_ad_group — add ad group to existing Demand Gen campaignCampaign Management:
list_campaigns — list all campaigns with status, budget, performance summaryget_campaign_structure — detailed campaign structure (ad groups, keywords, ads, extensions)update_campaign — update campaign settingspause_campaign — pause a campaignresume_campaign — resume a paused campaignupdate_bid_strategy — change bidding strategy (Maximize Clicks, Target CPA, Target ROAS, etc.)Keyword Management:
add_keywords — add keywords to ad group. Params: campaign_id, ad_group_id, keywords (array of {"text": "...", "match_type": "EXACT|PHRASE|BROAD"})remove_keywords — remove keywords from ad groupupdate_keyword — update keyword bid, match type, or statusadd_negative_keywords — add negative keywords. Params: campaign_id, keywords (array of {"text": "...", "match_type": "BROAD|PHRASE|EXACT"})remove_negative_keywords — remove negative keywordsAd Management:
suggest_ad_content — AI-generated headline/description suggestions from real datacreate_ad — create new responsive search adupdate_ad_headlines — update RSA headlinesupdate_ad_descriptions — update RSA descriptionsupdate_ad_content — update ad content (headlines + descriptions)pause_ad — pause an adresume_ad — resume a paused adAd Extensions:
add_sitelinks — add sitelink extensions (target 10+). Params: campaign_id, sitelinks (array of {"link_text": "...", "final_url": "...", "description1": "...", "description2": "..."})add_callout_extensions — add callout extensions (target 8+). Params: campaign_id, callouts (array of strings, max 25 chars each)add_structured_snippets — add structured snippet extensions. Params: campaign_id, snippets (array of {"header": "...", "values": ["...", "..."]})list_campaign_extensions — verify extensions on a campaignPMax Search Themes & Audience Signals:
add_pmax_search_themes — add search themes (max 50 per asset group). Params: campaign_id, search_themes (array of strings)get_pmax_search_themes — list existing search themesremove_pmax_search_themes — remove search themes by resource nameadd_pmax_audience_signal — add audience signal with segment IDsget_pmax_audience_signals — list existing audience signalsremove_pmax_audience_signal — remove audience signal by resource namesearch_audiences — search for in-market, affinity, and custom audiences by keywordBusiness Profile:
get_business_profile — saved brand profileinfer_business_profile — AI-inferred profile from ad datasave_business_profile — save/update brand profilehelp_user_upload — help user upload creative assetsPerformance & Analytics:
get_linkedin_campaign_performance — campaign metrics. Params: lookback_days (default 30)get_linkedin_engagement_metrics — engagement metrics (likes, shares, comments, follows)get_linkedin_audience_insights — audience demographics and segment performanceanalyze_linkedin_wasted_spend — find underperforming campaigns burning budgetoptimize_linkedin_budget — budget reallocation recommendationsexplain_linkedin_anomaly — explain sudden metric changesanalyze_linkedin_creative_performance — per-creative performance metricsCampaign Creation:
select_linkedin_campaign_type — interactive campaign type selection wizardget_linkedin_organizations — get linked company pages and account IDs (CALL FIRST before any LinkedIn operation)discover_linkedin_assets — check existing images/videos in the account. Params: account_id (from get_linkedin_organizations)validate_and_prepare_linkedin_assets — validate/upload assets before campaign creationcreate_linkedin_image_campaign — create image ad campaign. Params: campaign_name, daily_budget (min $10), organization_id, introductory_text (max 600 chars), landing_page_url (HTTPS), locations (array of location URNs), plus optional targeting (industries, seniorities, job_titles, company_sizes)create_linkedin_video_campaign — create video ad campaigncreate_linkedin_carousel_campaign — create carousel ad campaigncreate_linkedin_text_campaign — create text ad campaignexplain_linkedin_objectives — explain available campaign objectives and when to use eachCampaign Management:
list_linkedin_campaigns — list all campaigns with status and metricsget_linkedin_campaign_structure — detailed campaign structure (creatives, targeting, settings). Params: campaign_idpause_linkedin_campaign — pause a campaign. Params: campaign_idresume_linkedin_campaign — resume a paused campaign. Params: campaign_idupdate_linkedin_campaign — update campaign settings (name, status, objective, etc.)update_linkedin_campaign_budget — update daily/total budget. Params: campaign_id, daily_budget and/or total_budgetupdate_linkedin_campaign_schedule — update start/end dates. Params: campaign_id, start_date, end_dateupdate_linkedin_campaign_targeting — update targeting criteria. Params: campaign_id, plus targeting facets (locations, industries, seniorities, job_titles, company_sizes, etc.)clone_linkedin_campaign — clone a campaign with optional modifications. Params: campaign_id, optional overridesbatch_update_linkedin_campaigns — bulk update multiple campaigns at onceCreative Management:
list_linkedin_creatives — list all creatives for a campaign. Params: campaign_idadd_linkedin_creative — add image creative to campaignadd_linkedin_text_creative — add text creative to campaignadd_linkedin_video_creative — add video creative to campaignupdate_linkedin_creative — update creative content. Params: creative_iddelete_linkedin_creative — delete a creative. Params: creative_idpause_linkedin_creative — pause a creative. Params: creative_idresume_linkedin_creative — resume a paused creative. Params: creative_idgenerate_linkedin_ad_creatives — AI-generated ad creative variationsTargeting & Audiences:
get_linkedin_campaign_targeting — get current targeting for a campaign. Params: campaign_idsearch_linkedin_targeting — search for targeting facets. Params: query, facet_type (e.g., "job_titles", "industries", "seniorities", "company_sizes", "skills")research_business_for_linkedin_targeting — AI-recommended targeting based on business websiteCampaign Groups & Conversions:
list_linkedin_campaign_groups — list campaign groups (folders). Params: account_idupdate_linkedin_campaign_group — update campaign group settingslist_linkedin_conversions — list conversion tracking rules. Params: account_idassociate_linkedin_conversion — link conversion to campaign. Params: campaign_id, conversion_idmanage_linkedin_conversions — create/update/delete conversion tracking rulesPerformance & Analytics:
get_meta_campaign_performance — campaign metrics. Params: lookback_days (default 30), optional ad_account_idanalyze_meta_ad_performance — ad-level performance breakdownget_meta_audience_insights — audience demographics and segment performanceanalyze_meta_wasted_spend — find underperforming ads/ad sets burning budgetoptimize_meta_budget — budget reallocation recommendationsdetect_meta_creative_fatigue — identify ads losing effectiveness over timeoptimize_meta_placements — placement-level performance analysis (Feed, Stories, Reels, etc.)explain_meta_anomaly — explain sudden metric changesanalyze_meta_audiences — audience segment performance analysisCampaign Creation:
select_meta_campaign_type — interactive campaign type selection wizarddiscover_meta_assets — check existing images/videos in the accountvalidate_and_prepare_meta_assets — validate/upload assets before campaign creationcreate_meta_image_campaign — create image ad campaigncreate_meta_video_campaign — create video ad campaigncreate_meta_carousel_campaign — create carousel ad campaignadd_meta_ad_set — add ad set to existing campaignCampaign Management:
list_meta_campaigns — list all campaigns with status and metricsget_meta_campaign_details — detailed campaign structureupdate_meta_campaign — update campaign settingspause_meta_campaign — pause a campaignresume_meta_campaign — resume a paused campaignduplicate_meta_campaign — duplicate a campaign with optional modificationslist_meta_ad_sets — list ad sets in a campaignupdate_meta_ad_set — update ad set targeting, budget, schedulelist_meta_ads — list ads in an ad setupdate_meta_ad — update ad creative/contentadd_meta_ad — add new ad to ad setget_meta_ad_creatives — get creative details for adsTargeting & Audiences:
search_meta_targeting — search for targeting options (interests, behaviors, demographics). Params: query, optional target_typebrowse_meta_targeting — browse targeting categorieslist_meta_instagram_accounts — list connected Instagram accountslist_meta_pixels — list Meta pixels for conversion trackingLead Forms:
list_meta_lead_forms — list lead gen formsget_meta_lead_form_submissions — get lead form submissionsdiscover_tiktok_assets — check existing assetsvalidate_and_prepare_tiktok_assets — validate video assetscreate_tiktok_campaign — create campaigncreate_tiktok_video_campaign — create video campaignget_connections_status — show connected platforms, account IDsswitch_primary_account — change active ad accountget_usage_status — check tool call quota and subscription tierecho_test — test MCP connectivitycreate_monitor — set up metric alerts (ROAS, CPA, CTR thresholds)list_monitors — list active monitorsschedule_brief — schedule recurring performance reportsgenerate_report_now — generate one-time performance reportlist_scheduled_tasks — list all scheduled tasksmanage_scheduled_task — update/delete scheduled tasksstart_research — start async research taskget_research_status — check research task statusaudit_conversion_tracking — audit conversion tracking setupIf no tools work at all — even get_connections_status or echo_test fails — guide the user through these steps:
Claude and ChatGPT web connectors may disconnect every 1–2 weeks — this is normal. Users just re-enable and re-authenticate.
Important: If some platforms work but one doesn't, that's a platform-specific issue, not a connection problem. Reconnect just that platform at https://adspirer.ai/connections.
| Platform | Min Daily | Recommended | Best for |
|---|---|---|---|
| Google Ads Search | $10 | $50+ | High-intent search traffic |
| Google Ads PMax | $10 | $50+ | Broad reach with automation |
| Google Ads Demand Gen | $10 | $20+ | YouTube, Gmail, Discover |
| Meta Ads | $5/ad set | $20+ | Awareness and retargeting |
| LinkedIn Ads | $10 | $50+ | B2B targeting (job titles, industries) |
| TikTok Ads | $20 | $50+ | Younger demographics, video-first |
| Plan | Price | Tool Calls |
|---|---|---|
| Free Forever | $0/mo | 15/month |
| Plus | $49/mo | 150/month |
| Pro | $99/mo | 600/month |
| Max | $199/mo | 3,000/month |
All plans include all 4 ad platforms. Sign up at https://adspirer.ai/settings?tab=billing