From ad creative to segment landing pages on uCoz: hyper-segmentation (one URL and H1 per ad), UTM packages, Yandex Direct and Google Ads API push with explicit approval, publishing via ucoz-mcp.
Install to Claude Code
npx -y skills add ucoz-skills/agent-skills --skill ucoz-ad-campaign-landing-skill --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of ucoz-ad-campaign-landing-skill?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ucoz-skills-ucoz-ad-campaign-landing-skill)More formats (shields.io, HTML) on the badges page.
---
name: ucoz-ad-campaign-landing-skill
version: "1.0"
description: >
From ad creative to segment landing pages on uCoz: hyper-segmentation (one URL and H1 per ad),
UTM packages, Yandex Direct and Google Ads API push with explicit approval, publishing via ucoz-mcp.
author: uCoz
license: MIT
requires:
- official ucoz-mcp for page publishing (templates_tool, ftp_tool)
- optional: Yandex Direct / Google Ads / Yandex Search API credentials in .env.local for API push and Wordstat
metadata:
hermes:
tags: [ucoz, mcp, landing-page, yandex-direct, google-ads, ad-campaign, utm, hyper-segmentation]
compatible_agents: [Hermes, Claude Desktop, Cursor, Codex, OpenAI Agents, OpenWebUI, generic MCP clients]
required_mcp_servers: [ucoz-mcp]
---
# Ad Campaign Landing Skill (agent-native)
**One skill = from ad creative → segment landing (hyper-segmentation) + UTM package + push to Yandex Direct / Google Ads via API.**
Version 1: agent performs all operations natively — without Python scripts. Publishing via MCP (`templates_tool`, `ftp_tool`), API requests via Shell (`curl`), HTML and JSON generated by the agent.
---
## Main scenario (creative → landing)
**[references/PIPELINE.md §2A](references/PIPELINE.md)** — ad exists → `headline_1` = H1 → separate URL → `page_add`.
```text
ad (CSV or text)
→ agent builds segments.json (headline_1 = H1, page_ownurl = transliteration)
→ agent checks message match (COPY.md §Message Match)
→ agent generates HTML per LANDING_PLAYBOOK.md rules
→ LANDING_PLAYBOOK.md (page_add, §0.1)
→ agent builds UTM strings
→ (optional) push to Yandex Direct/Google Ads — only with user permission
→ OUTPUT.md
```
No creative → Wordstat/WebSearch: **[references/PIPELINE.md §2B](references/PIPELINE.md)** (branch 2B).
---
## Start with user
No full brief → **[references/INTAKE.md](references/INTAKE.md)** → `brief.json` → pipeline.
**Must clarify with user** (if not stated), before API push and large-scale deployment:
| Question | Brief field | Impact |
|----------|-------------|--------|
| Test or **full** Yandex Direct API access? | `yandex_direct_access` | sandbox vs prod host |
| **One** landing or **separate URL** per ad/segment? | `landing_scale`, `max_segments` | number of `page_add`, message match |
Branching and checklist: **INTAKE.md** (§ API access, § Landing scale).
---
## What the agent does natively (no scripts)
| Task | How agent does it |
|------|-------------------|
| CSV → segments.json | Reads CSV in context, builds JSON per `templates/segments.manifest.example.json` |
| Slug transliteration | Converts headline_1 → latin, 2–4 words, hyphenated |
| Message match check | Rules from `COPY.md §Message Match` (overlap_ratio in agent's context) |
| Landing HTML generation | Per `LANDING_PLAYBOOK.md` + `COPY.md` rules |
| UTM URL building | Per formula from `PIPELINE.md §6`, URL-encode via Shell if needed |
| Publishing pages on uCoz | `LANDING_PLAYBOOK.md` → MCP `page_add` |
| Final report | Per `OUTPUT.md` template, data from segments.json |
---
## API modes — Yandex Direct and Google Ads
### Rule: push only with explicit permission
Before **any** real API call to Yandex Direct or Google Ads the agent must:
1. Show the user the payload (what exactly will be sent).
2. Ask for permission: "Shall we submit to **[sandbox / prod]**?"
3. Receive explicit confirmation → execute `curl` via Shell.
Without confirmation — dry-run description only.
### Yandex Direct
| Mode | Host | When to use |
|------|------|-------------|
| **Sandbox (test)** | `api-sandbox.direct.yandex.com` | Debugging, no live token |
| **Production** | `api.direct.yandex.com` | Real campaigns (created as SUSPENDED) |
API structure, payload, authorization: **[references/DIRECT_API.md](references/DIRECT_API.md)**
Get OAuth token (manual step for user):
```
1. Open: https://oauth.yandex.ru/authorize?response_type=code&client_id=<CLIENT_ID>
2. Get code → POST https://oauth.yandex.ru/token → bearer token
3. Save to env: YANDEX_DIRECT_TOKEN=<token>
```
### Google Ads
| Mode | How to activate | When to use |
|------|----------------|-------------|
| **Dry-run** | Agent describes payload, doesn't call API | Debugging |
| **Test Account** | `GOOGLE_ADS_CUSTOMER_ID=<test ID>` | Test account |
| **Production** | `GOOGLE_ADS_CUSTOMER_ID=<live ID>` | Real campaigns (created as PAUSED) |
API structure, payload, authorization: **[references/GOOGLE_ADS.md](references/GOOGLE_ADS.md)**
---
## Fetching existing ads from account
Agent calls API directly via Shell (`curl`). Request and response format: **[references/ADS.md §Fetch](references/ADS.md)**.
Full cycle "account → landing → update URL": **[references/ADS.md §Sync](references/ADS.md)**.
---
## Rules
| Rule | Meaning |
|------|---------|
| **Yandex Direct: access mode** | Ask `test` / `full`; host per **INTAKE.md**; do not push to prod with test application |
| **Landing scale** | Ask `single` / `multi` / `match_ads`; default **multi** |
| **API push** | Only after explicit user permission; show payload before sending |
| **Yandex Direct: no token** | `DIRECT_API.md` → OAuth instructions |
| **Google: no credentials** | `GOOGLE_ADS.md` → developer token, OAuth |
| **Message match** | H1 = headline (`COPY.md §Message Match`) |
| **Ad copy** | **`COPY.md`** — required before package |
| **URL / segment** | `page_ownurl` + `page_add` before delivering link |
| **Wordstat** | 3–5 seeds per brief (`RESEARCH.md`); fallback — `WebSearch` |
| **Competitors** | `research.competitors` → `competitor_insights` (`RESEARCH.md §Competitors`) |
| **API errors** | Billing → key → folder → roles |
---
## Documentation
| File | Content |
|------|---------|
| [PIPELINE.md](references/PIPELINE.md) | **Full pipeline: branches 2A/2B, steps 0–8, checklist** |
| [INTAKE.md](references/INTAKE.md) | **Dialog start, questions, brief.json schema** |
| [ADS.md](references/ADS.md) | **Ads: CSV import, fetch from account, formats, URL sync** |
| [COPY.md](references/COPY.md) | **Ad and landing copy, message match** |
| [RESEARCH.md](references/RESEARCH.md) | **Wordstat API, SERP, competitors, WebSearch fallback** |
| [DIRECT_API.md](references/DIRECT_API.md) | Yandex Direct API (payload, OAuth, sandbox/prod) |
| [GOOGLE_ADS.md](references/GOOGLE_ADS.md) | Google Ads API (setup, push, errors) |
| [LANDING_PLAYBOOK.md](references/LANDING_PLAYBOOK.md) | **uCoz MCP: page_add, CSS/JS, forms, burger, favicon** |
| [OUTPUT.md](references/OUTPUT.md) | Final report and page deployment |
| [EXAMPLE.md](references/EXAMPLE.md) | End-to-end examples (3 cases) |
---
## Prohibitions
- Do not connect separate `ucoz-landing-agent` — everything is in `LANDING_PLAYBOOK.md`.
- Do not output `final_url` before successful `page_add`.
- Do not use one landing for all ads.
- Do not use `page_id=1` for all segments without request.
- Do not push to **prod** Yandex Direct when `yandex_direct_access=test`.
- **Do not call Yandex Direct / Google Ads API without explicit user permission** — show payload first.
- Do not run Python scripts — agent does everything natively.
Scanned 7/6/2026
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!