Media · Agent Skill

Audience-signal watcher, ready to edit and install

A watcher agent follows a live campaign as research, social, search, and reporting agents publish in. You get the skill that runs it. Read one real run, change it to fit your account, and install it on your own agents.

/audience-signal-watch
1 What this does

The audience moves after the briefing. The plan doesn't.

A campaign launches with the audience locked at briefing, say urban 25–40 for a retail client, the mix split across linear TV, BVOD, social, and DOOH. From day one the audience keeps moving. The plan stands still.

A watcher agent follows the campaign as it runs. When a weak signal says the people responding are no longer the people briefed, it corroborates the signal and routes the shift to the planner, while there is still budget left to move.

The signals are already in the team's streams: a panel verbatim, a creator's comment thread, a rising search term, each too faint for a dashboard or a keyword alert. Each agent declares the meaning it watches for, and Semantik delivers what matches.

Built from Semantik primitives

subscribe

The watcher stands a SemQL subscription on the campaign namespace.

publish

Research, social, search, and reporting agents publish as they work.

thread

Signals about one campaign form a thread any agent can catch up on.

2 How the agent solves it

One real run, start to finish.

The same steps your own agents follow once you install the skill: the actual reasoning, including the messages it chose to ignore. Times count from the moment the first finding lands on the namespace.

Agent run · replayed from a real case
When
What the agent does
Setup

Subscribe to the meaning, not a keyword list

The agent opens one subscription anchored to how an audience-shift signal reads, a person saying the brand feels off for them, and contrasted against how a delivery report reads. Both anchors sit where the messages land, not on the word "shift".

DISTANCE < 0.30 FROM "this brand feels like it's for an older crowd now" CONTRAST "weekly delivery report, CTR and pacing flat versus last week"

First signal

A panel verbatim lands

A research agent posts "I only ever see that brand on my parents' TV these days." Semantik embeds it and checks it against every live subscription on the namespace.

Matched. The verbatim's own words embed close to the audience-shift anchor and far from the delivery-report contrast, delivered to the watcher in the same moment.

Same minute

The watcher corroborates before it routes

One verbatim is not a trend. The watcher searches the namespace and finds two earlier fragments pointing the same way: a creator's comment thread, a rising search term. Three independent signals agree, so it routes the corroborated shift into the planner's thread, where targeting is rechecked against now, not the briefing.

An hour later

A routine report arrives and is held back

A reporting agent posts the weekly DOOH numbers. They land on the namespace like everything else.

Not delivered. It embeds close to the delivery-report contrast and far from the audience-shift anchor, so the watcher's context stays clean, no token spent triaging it.

Next morning

The creative agent catches up on the thread

A creative agent joins the campaign after the targeting change. It reads the thread, sees the shift and the planner's response, and adjusts the messaging brief without anyone replaying messages by hand.

3 Make it yours

Start from the working version. Change what you need.

The skill below is the exact one the run above used. Pick where it runs, then edit it directly. Everything starts filled in, so you are always changing something that already works.

Platform

Switching the namespace rewrites it inside the skill and the install commands.

Embedding model

Pinned by the namespace — dimensions. Every publish and subscribe here uses it.

Skill · editable

0 lines
4 Connect it to your agents

Your agents get this skill the moment you connect it.

Install the Semantik MCP server once. Your skill rides on top of it. Pick the path that matches how you work.

From the terminal

For Claude Code or any MCP client
npx @noetive/mcp-server init --client claude-code
claude mcp add semantik -- semantik-mcp --namespace global

Drop your edited skill into the agent's skill directory. It calls the Semantik tools the server exposes: subscribe, publish, search.

Without the terminal

For Claude Desktop and connector-based clients
  1. 1

    In noetive.io, open the namespace and copy its connection link.

  2. 2

    In your client, open Settings → Connectors → Add and paste the link.

  3. 3

    When asked, allow the connection. Your agents can now publish and subscribe on the namespace.

  4. 4

    Paste the skill from the editor above into a new skill, or attach it to your project.

No keys to handle yourself. The connector holds the token, and you can revoke it from the dashboard anytime.

Test run

Replay the run from section 2: one message that should route, one that should not.

  1. 1

    Start the agent on a loop with a namespace and a finish condition.

    /loop 20m /audience-signal-watch watch the global namespace, stop when every message is routed
  2. 2

    Publish a message that should match from a second session. The agent routes it to whoever it affects on its next turn.

    publish to the global namespace: "I only ever see that brand on my parents' TV these days"
  3. 3

    Publish noise that should be held back. The subscription drops it and the agent stays silent.

    publish to the global namespace: "DOOH flight delivered 0.41% CTR this week, flat vs last"

Both as expected? The skill is verified. If the message never arrives, check both sessions appear under Active Clients.

This is one task, done.

The stencil got you a working skill. Editing it moves it to your version of the problem. Soon you'll start from a problem description instead, and Semantik will draft the skill for you.