{"id":85255,"plugin_id":"plugin_asdk_app_6ac75f64efb481919bea70342ba67bee","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-07T00:09:26.328Z","digest":"01cdba430ca112f2d4bfe1c1d667111736c2667b74f8e868074c153963dd4b34","against":null,"payload":{"description":"Create an ad campaign with the user on one or more platforms connected to AdsGPT, with the tool each platform has to create its campaigns, from the objective to the campaign as the platform confirmed it. Use it whenever the user asks to create, launch or plan a campaign.","included_files":[],"name":"adsgpt-create-campaign","skill_md_contents":"---\nname: adsgpt-create-campaign\ndescription: Create an ad campaign with the user on one or more platforms connected to AdsGPT, with the tool each platform has to create its campaigns, from the objective to the campaign as the platform confirmed it. Use it whenever the user asks to create, launch or plan a campaign.\n---\n\n# Create a campaign\n\nYou are creating a campaign with the user. Each platform creates its campaign with its own tool,\nwhich its skill names: one call per platform, with the budget, dates, targeting and ads, all or\nnone. Follow these steps in order. Ask one thing at a\ntime, and skip what the user already said.\n\n1. **Objective and campaign type.** The objective is one of: awareness, traffic, engagement,\n   leads, sales, app promotion. Infer it from what the user wants, read the skill of each\n   platform for the objectives it supports and their campaign types, and confirm the objective\n   and the campaign type of each platform in one question. When the platforms leave a single\n   objective and campaign type, offer only that one: do not list the others. Once confirmed, read\n   the rules of each campaign type.\n2. **Platforms and accounts.** The mentioned platforms, otherwise the connected ones. The brand or\n   product promoted is not a platform, even when a platform shares its name: «promote Brand on\n   Platform» picks Platform alone; ask when it is ambiguous. When a platform has several accounts,\n   ask which one. A platform that does not support the objective, or that has no tool to create\n   campaigns, is left out: say so.\n3. **Destination.** The landing page. Keep any UTM parameters the user gives: the campaign uses\n   them. Read the landing page and the pages of its own domain that it links to, and keep in mind\n   only what they state, in the language of the site: what the brand offers and to whom, the\n   facts the ads can claim, such as figures, guarantees or plans, the pages a sitelink can lead\n   to, and the image the site shares. When you cannot read the site, tell the user and ask what\n   it offers instead of guessing. To promote an app, the link to the app in its store, which gives\n   the app and its store; read the user's site too when they give it.\n\n   The assets each campaign type needs, such as images, a logo or links to pages, come first from\n   what the account already has, then from what the site states; ask the user only for what is\n   still missing. The skill of each platform says how to find them and which ones its campaign\n   types cannot go without.\n\n4. **Audience.** Locations, languages, age and gender, and interests, in the user's words, but\n   ask only for what the campaign types target, as their rules say, and at the granularity they\n   take, such as countries rather than cities. Propose a broad audience when they have none in\n   mind.\n5. **Budget and dates.** Ask in one question how much they want to invest and for how long. By\n   default it is a total for the dates, which caps the spend; a daily amount without an end date\n   is an ongoing campaign. Dates are in each account's time zone; without a start date from the\n   user, the campaign starts today. The budget type cannot change once the campaign exists. With\n   several platforms, propose an even split and let the user change it. Each platform's amount is\n   in its account's currency: there is no conversion, so ask for it when the currencies differ.\n   Amounts are always in currency units, never micros.\n6. **Ads.** Ask once whether they have an idea or something in particular in mind. Write the texts\n   with the `adsgpt-write-ads` skill, within the limits of each campaign type, from the user's idea\n   and the facts of the site. Images go by the id of an asset the account has or by a public URL:\n   the account's library, the site's image or the user's links. They show the brand the campaign\n   advertises and no other: a library can also hold another brand's images or logo. The rules of each campaign type say\n   which images, logo and videos its ads take.\n7. **Name.** One name for the campaign, the same on every platform, which the user recognizes: it\n   ties the platforms' campaigns together in the reports. An account refuses a name another of its\n   campaigns uses: when a platform says so, propose another.\n8. **Create.** Tell the user, for each platform, what the campaign is: its type, budget, dates,\n   the targeting it applies, its ads, and whether it starts paused or how much it spends once it\n   starts. When a campaign type leaves out part of the audience, such as interests on a campaign\n   that targets locations and languages only, say so: name only the targeting the platform\n   applies. Then call each platform's tool with its campaign.\n   - When a result lists `issues`, nothing was created on that platform: fix exactly those and call\n     it again.\n   - Then tell the user what each platform created, with the campaign's id, name and status as the\n     platform confirmed them, and what failed and why. The result is the check of the creation,\n     without querying the platform again.\n\n- Never create a campaign with a platform's generic edit tool: only its creation tool creates one.\n- Campaigns are created paused unless the user asks to start them. A platform may start from\n  another default, which its skill says.\n- To change a campaign after creating it, use the platform's tools for that change; creating it\n  again with the same name is refused.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}