{"id":66310,"plugin_id":"plugin_asdk_app_69461dc91ee48191ae4a14eb9bde1c21","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-28T12:05:37.669Z","digest":"2658d6f3167a88f9bcc8c77113c83c7f31c4410dda14876b6d957402730d29ef","against":null,"payload":{"description":"Create and manage LinkedIn Ads through Adspirer — sponsored content, single image, video, carousel, text ads, and lead-gen forms with B2B job-title, company, and industry targeting. Use for anything on LinkedIn. Every LinkedIn campaign requires a campaign group.","included_files":[],"name":"adspirer-linkedin-ads","skill_md_contents":"---\nname: adspirer-linkedin-ads\ndescription: Create and manage LinkedIn Ads through Adspirer — sponsored content, single image, video, carousel, text ads, and lead-gen forms with B2B job-title, company, and industry targeting. Use for anything on LinkedIn. Every LinkedIn campaign requires a campaign group.\n---\n\n# LinkedIn Ads\n\nEverything on LinkedIn goes through the `linkedin_ads` router. Follow `adspirer-mcp` for the\ntwo-step.\n\nAccount parameter: `account_id`, as a **string**. Budgets are in the account's currency.\n\n## Every campaign belongs to a campaign group\n\nLinkedIn will not create a bare campaign. Pass either an existing `campaign_group_id`, or a\n`campaign_group_name` to create one. There is no default and no implicit group — omitting both\nfails.\n\nList the existing groups before you invent a new one; most accounts already have a structure the\nuser cares about.\n\n## Build order\n\nCampaign group → campaign → creative. Campaigns are created **paused**.\n\n`select_linkedin_campaign_type` picks the format when the user hasn't said. Then\n`create_linkedin_image_campaign`, `_video_campaign`, `_carousel_campaign`, or `_text_campaign`.\nCreatives attach with `add_linkedin_creative` and its variants.\n\n## Targeting is the point\n\nLinkedIn's value is the professional graph: job title, seniority, function, company, company size,\nindustry, skills, and groups. That's what the user is paying LinkedIn's CPMs for — a broad,\ndemographic-only LinkedIn campaign is a waste of money and you should say so.\n\n`search_linkedin_targeting` resolves a name (\"VP of Engineering\", \"Financial Services\") to the\nfacet id you need. `research_business_for_linkedin_targeting` turns a company description into a\ntargeting proposal. Don't guess facet ids.\n\nLinkedIn enforces a minimum audience size (about 300 members). Over-narrow targeting simply won't\nrun — check the estimated size before you build.\n\n## Costs are high, so structure matters\n\nLinkedIn CPCs run many times Google's. That changes the advice:\n\n- Budgets under roughly $25/day rarely gather enough data to optimize.\n- Lead-gen forms convert far better than sending people to a landing page. Prefer them for\n  lead objectives.\n- Because clicks are expensive, creative fatigue bites sooner. `analyze_linkedin_creative_performance`\n  shows which creative is carrying the campaign.\n\n## Deleting creatives is permanent\n\n`delete_linkedin_creative` cannot be undone. Pausing is almost always what the user meant. Name what\nwill be lost and ask first.\n\n## Reading performance\n\nPerformance goes through the router — there is **no** top-level LinkedIn performance tool. Use\n`{\"action\": \"execute\", \"tool_name\": \"get_linkedin_campaign_performance\", ...}`.\n\n`get_linkedin_engagement_metrics` covers social actions; `analyze_linkedin_wasted_spend` finds\ncampaigns spending without converting.\n\nLead-gen submissions contain real people's names, titles, and emails. Summarize them; don't dump\npersonal data into the conversation unprompted.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}