cta-placement

cta-placement is a skill for Claude Code from XuanRanL/loamwright-SEO-Skill. It costs 54 tokens per session (4,377 once invoked), scanned A, original, Apache-2.0.

A content tool that inserts a designed call-to-action card into an article draft when the project has configured conversion offers.

In plain words
What is it for?
It helps place service-aware conversion cards in drafts during the article optimization workflow, using the project's configured business offers.
Why use it?
It adds a relevant next step for readers without requiring each article to build the call-to-action section manually.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: mentions CLAUDE.md; mentions subagents.

Part of the xuanran-seo-blog-writer plugin — 68 skills, 34 agents, 4 hooks shipped together

Good fit It helps place service-aware conversion cards in drafts during the article optimization workflow, using the project's configured business offers.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/xuanranl/loamwright-seo-skill/cta-placement
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add XuanRanL/loamwright-SEO-Skill --skill cta-placement
Clone the repo
git clone --depth 1 https://github.com/XuanRanL/loamwright-SEO-Skill

Made for: Claude Code.

Or install xuanran-seo-blog-writer, the plugin that ships this one along with the rest of its 68 skills, 34 agents, 4 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for cta-placement

README.md
[![agentmods](https://agentmods.dev/badge/skills/xuanranl/loamwright-seo-skill/cta-placement/github.svg)](https://agentmods.dev/skills/xuanranl/loamwright-seo-skill/cta-placement)
Your own site
<a href="https://agentmods.dev/skills/xuanranl/loamwright-seo-skill/cta-placement"><img src="https://agentmods.dev/badge/skills/xuanranl/loamwright-seo-skill/cta-placement/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for cta-placement

Your own site · 80×15
<a href="https://agentmods.dev/skills/xuanranl/loamwright-seo-skill/cta-placement"><img src="https://agentmods.dev/badge/skills/xuanranl/loamwright-seo-skill/cta-placement.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 54 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,377 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00054 $0.04377
Opus 5 $0.00027 $0.02188
Sonnet 5 $0.00011 $0.00875
Haiku 4.5 $0.00005 $0.00438

Measured 9d ago against content hash a0307eab73c1, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

cta-placement scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

subskills/optimize/cta-placement/SKILL.md · 268 lines

How it starts

The opening of the file, as written. The whole thing — 268 lines — stays where its author put it; the contents beside it link to each section on GitHub.

CTA Placement (v3.37 — three-stage, service-aware + composable design system)

History: v3.34 added the executor with a single static config (9 total copy variants site-wide, one fixed heading, one generic offer). v3.37 splits generation into three stages so every article gets a genuinely unique, service-routed CTA — see docs/superpowers/specs/2026-07-08-cta-system-redesign-design.md.

The orchestrator stages (this is what actually runs)

These are orchestrator-wired stages in scripts/pipeline/orchestrator.py, NOT commands you run by hand — the run_pipeline driver dispatches them in order during the optimize phase (after visual-designer). The command lines below are the exact Stage(...) executors, shown for reference:

# Stage 1 "cta-brief-builder" - deterministic fact resolver. ALWAYS writes
# cta-brief.json: a real resolved brief when the project has conversion_offers
# config, otherwise a no-config sentinel (resolved_service:null,
# skipped_no_config:true) so the orchestrator never hard-halts the pipeline:
python -m scripts.optimize.cta_brief_builder --task-id {task_id} --project-slug {project_slug} --json

# Stage 2 "cta-writer" - LLM composer (orchestrator dispatches
# agents/cta-writer.md; auto-skipped when Step 1's brief is the no-config
# sentinel, i.e. cta_brief_present is false):
# (dispatched via the orchestrator's "cta-writer" Stage, never run directly)

# Stage 3 "cta-diversity-check" (Gate 5) - runs AFTER cta-writer and BEFORE
# cta-injection, so a repetitive draft is caught before it is placed:
python -m scripts.optimize.cta_diversity_check --task-id {task_id} --project-slug {project_slug} --json --out {ws}/cta-diversity.json

# Stage 4 "cta-tone-check" (Gate 2) - runs AFTER cta-diversity-check and
# BEFORE cta-injection, so a hype/pressure-laden draft is caught before it is
# placed:
python -m scripts.lint.cta_tone_check --task-id {task_id} --project-slug {project_slug} --json --out {ws}/cta-tone.json

# Stage 5 "cta-injection" - deterministic placement (consumes cta-draft.json
# when present, else falls back unchanged to the legacy static cta.variants):
python -m scripts.optimize.cta_injector --task-id {task_id} --project-slug {project_slug} --json
# verify-only (used by pre_publish_gate check "cta_module"):
python -m scripts.optimize.cta_injector --task-id {task_id} --project-slug {project_slug} --check --json

# Stage 6 "cta-record-history" - runs AFTER cta-injection; appends this
# article's CTA fingerprint to projects/{slug}/cta-history.json so FUTURE
# articles' Gate 5 has history to compare against. GUARDED: records only when
# cta-injection actually placed the LLM draft (passed AND draft_source=='llm');
# the static/no-op path writes recorded:false and never pollutes the window:
python -m scripts.optimize.cta_diversity_check --task-id {task_id} --project-slug {project_slug} --record --json --out {ws}/cta-history-record.json

Read the full file on GitHub · 268 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago First seen · 268 lines · 0 tokens per session scan A a0307eab73c1

Subscribe to this mod's changes

cta-placement is a skill published in the GitHub repository XuanRanL/loamwright-SEO-Skill (49 stars, last pushed 26d ago), licensed Apache-2.0. It adds 54 tokens to every session and 4,377 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

geo-platform-optimizer

Platform-specific AI search optimization — audit and optimize for Google AI Overviews, ChatGPT, Perplexity, Gemini, and Bing Copilot individually.

zubair-trabzada/geo-seo-claude · 34 tokens

four-core-documents

Produce Part 3 of the 12-Part engagement: the four strategic-spine documents across 61 steps — 3.1 Business & SBU Analysis, 3.2 Segmentation Framework, 3.3 Brand Positioning & Communications, 3.4 DMFlow — with --doc single-document runs, --view v2 re-runs, and a --combined executive stitch. Triggers on…

indranilbanerjee/digital-marketing-pro · 164 tokens

continuous-improvement-loop

Run Part 12 of the engagement methodology — the continuous improvement loop that aggregates quarterly-review, customer-feedback, competitive, and operating signals into a Quarterly Product & Offering Improvement Brief for business leadership, plus fast 1-3 page ad-hoc briefs when a significant signal lands…

indranilbanerjee/digital-marketing-pro · 148 tokens

seo-plan

Build a 12-month SEO strategy and phased roadmap with industry templates (SaaS, ecommerce, local, publisher, agency). With fresh specialist outputs it runs as a dispatcher: scores four pillars — technical, content, topical, AI search — and makes the weakest pillar the plan's lead theme; missing specialists re-run only…

indranilbanerjee/digital-marketing-pro · 177 tokens

c2pa-metadata

Embed a C2PA provenance manifest into an AI-generated marketing asset (PNG, JPG, WebP, GIF, TIFF, MP4, MOV, WebM, MP3, WAV, PDF) via scripts/embed-c2pa.py — produces a signed copy of the file carrying IPTC digital-source-type AI claims, an optional c2pa.ai-disclosure assertion for EU AI Act Article 50 (applicable 2…

indranilbanerjee/digital-marketing-pro · 183 tokens

import-guidelines

Import brand guidelines — voice and tone rules, messaging, banned words and restrictions, channel styles, visual identity — and structure them into enforceable markdown files in the brand's guidelines layer, auto-classified by category, conflict-checked against the brand profile, and merged with existing rules rather…

indranilbanerjee/digital-marketing-pro · 129 tokens