agentleFS
devaimanidevaimani/openai-ads-mcp/skills/ads-hints/SKILL.md

ads-hints

Skill0 starsChanged 2 months agoMITView on GitHub

Develop, group and prioritise context hints for OpenAI Ads, and derive account-wide negative keywords. Use this skill for topic research, context hints, ad targeting, exclusions, negative keywords, or when deciding which conversations an ad should appear in.

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Check each one: does it also exclude genuine prospects?

    line 130

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Context hints

What they are

Free text describing when an ad is relevant. The platform evaluates it semantically against live conversations.

What they are not: keywords. There are no match types, no per-hint bid and no per-hint reporting.

"Provide a list of descriptions or keywords for when the product or service might be useful to show."

How many

The API accepts up to 2000 per ad group. That is a technical ceiling, not a recommendation.

Because there is no per-hint reporting, the ad group is the smallest unit of measurement. 200 hints in one group means seeing the outcome but never the cause. A success cannot be repeated and a failure cannot be isolated.

Guideline: 10 to 25 hints per group, tightly scoped. Five groups of 15 beat one group of 75.

A hint belongs in a group only if it serves the same intent as the rest. The moment you hesitate, it belongs in its own group.

Phrasing

Hints are free text read semantically. Use natural language, not keyword syntax.

Instead ofBetter
process automation smbA mid-sized company is looking for ways to automate repetitive workflows
chatbot priceSomeone is asking what a chatbot for their website costs
gdpr aiThe topic is using AI in a company in a data-protection-compliant way

Descriptions of the conversational situation outperform search terms, because matching is semantic and questions put to a chat assistant are longer and more discursive than search queries.

Forming groups

Group by intent, not by product and not by audience.

A service business might arrive at:

GroupIntentLanding page
Automating workflowsconcrete need, looking for a solutionservice page
Introducing AI in a companyorienting, still earlyoverview page
Chatbot for a websitespecific productproduct page
AI and data protectionaddressing concernscompliance page

Groups with different intent need different bids: someone still orienting is worth less than someone already comparing vendors.

Research with external data

Optional. Two things carry over well, one does not.

Scraping the assistant's actual answers shows which words it uses, which sources it cites, and whether local businesses get named at all. That is not a proxy — it is the thing itself. Useful for vocabulary in a 50-character headline.

Search intent classification (informational, commercial, transactional, navigational) carries over, because intent is platform-independent. Since this platform has no match types, clean intent separation at the ad group level is the main lever available.

What does not carry over: click prices from search advertising. Different auction, different participants. Also be wary of metrics marketed as "AI search volume" that are in fact derived from web search elements — check the source before treating them as chat usage data.

Negative keywords

<!-- Verified: 2026-09-14 against the live API -->

There is no negative keyword endpoint. Seven candidate paths were probed live on 2026-09-14, GET and POST, and all answered Invalid URL or Invalid method. The word does not appear anywhere in the published documentation either. The set_negative_keywords tool in this server posts to /ad_account/negative_keywords, which does not exist.

So exclusion happens inside the hints themselves. Describe the intent narrowly enough that the wrong conversations do not match: "a company wants to automate repetitive workflows" pulls in far less noise than "automation". Where a hint attracts the wrong audience, the fix is to rewrite or move it, not to block a term elsewhere.

What follows was written for the assumed endpoint and is kept because the thinking still applies to choosing hints, not because the list can be set.

Formerly assumed: account-wide only, at most 100 entries. There is no per-campaign or per-group scoping.

The scarcity is the point: every slot has to earn its place by working broadly. A term that only bothers one group is not worth an entry.

Common exclusion themes for a B2B service business:

ThemeExamples
Free intentfree, gratis, open source, freeware
Job seekingjob, vacancy, salary, apprenticeship, internship
DIYdo it yourself, tutorial, how to build
Educationdegree, course, certificate, training
Second handused, refurbished
Templatestemplate, sample, download PDF
Definitionsdefinition, what is, meaning

Check each one: does it also exclude genuine prospects? "Cost" does not belong on the list — asking about cost often signals real intent.

set_negative_keywords claims to set them and posts to a path the API does not have. Until a working endpoint is found, treat the themes above as a checklist for writing hints: if a theme would match your hint, the hint is too broad.

Refining

Without per-hint reporting, optimisation works through the group:

  1. Find groups with a conspicuously low click rate
  2. Review their hints: which describe a different intent from the rest?
  3. Move those into their own group — do not delete them
  4. Measure for two weeks
  5. Pause whatever still underperforms

Move rather than delete, because a hint can perform badly in the wrong company and well in the right one.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.