CFN Marketing Landing Pages

**Version:** 1.0.0

14 stars

Best use case

CFN Marketing Landing Pages is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

**Version:** 1.0.0

Teams using CFN Marketing Landing Pages should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/cfn-marketing-landing-pages/SKILL.md --create-dirs "https://raw.githubusercontent.com/masharratt/claude-flow-novice/main/.claude/cfn-extras/skills/marketing/cfn-marketing-landing-pages/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/cfn-marketing-landing-pages/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How CFN Marketing Landing Pages Compares

Feature / AgentCFN Marketing Landing PagesStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

**Version:** 1.0.0

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# CFN Marketing Landing Pages

**Version:** 1.0.0
**Status:** Production
**Phase:** 4 - Intelligence & Optimization

## Overview

Landing page management and A/B testing skill for creating, publishing, and optimizing landing pages. Implements statistical significance testing with minimum sample sizes and confidence levels to ensure valid test results.

## A/B Testing Framework

**Statistical Requirements:**
- Minimum sample size: 100 conversions per variant
- Confidence level: 95% (p-value < 0.05)
- Minimum test duration: 7 days
- Validation enforced in create-ab-test.sh before launch

**Test Lifecycle:**
1. Create landing page from template
2. Set up A/B test (Variant A vs B)
3. Collect traffic and conversions (min 7 days)
4. Validate statistical significance
5. Declare winner and implement changes

## Operations

### 1. Create Landing Page

**Script:** `operations/create-landing-page.sh`

**Description:** Create new landing page from template with customization options

**Parameters:**
- `--page-name` (required): Landing page name (alphanumeric, hyphens)
- `--template` (required): Template ID (product,lead-gen,webinar,ebook,demo)
- `--headline` (required): Main headline text
- `--cta-text` (required): Call-to-action button text
- `--cta-url` (required): CTA destination URL
- `--description` (optional): Page description
- `--image-url` (optional): Hero image URL

**Example:**
```bash
./operations/create-landing-page.sh \
  --page-name "summer-sale-2025" \
  --template "product" \
  --headline "50% Off Summer Sale" \
  --cta-text "Shop Now" \
  --cta-url "https://example.com/checkout" \
  --description "Limited time offer on all products"
```

**Response:**
```json
{
  "page_id": "lp_1698765432",
  "page_name": "summer-sale-2025",
  "status": "draft",
  "template": "product",
  "url": "https://pages.example.com/summer-sale-2025",
  "preview_url": "https://pages.example.com/preview/summer-sale-2025",
  "created_at": "2025-10-29T12:00:00Z"
}
```

**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (invalid template, page name format)
- `2`: API error
- `3`: Validation error

---

### 2. Create A/B Test

**Script:** `operations/create-ab-test.sh`

**Description:** Set up A/B test with statistical validation requirements

**Parameters:**
- `--page-id` (required): Landing page ID
- `--variant-a-name` (required): Name for Variant A (control)
- `--variant-b-name` (required): Name for Variant B (treatment)
- `--variant-b-changes` (required): JSON describing changes (headline, cta, image)
- `--traffic-split` (optional): Traffic split percentage (default: 50/50)
- `--goal-metric` (required): Conversion goal (form_submit,purchase,signup,download)

**Example:**
```bash
./operations/create-ab-test.sh \
  --page-id "lp_1698765432" \
  --variant-a-name "Original" \
  --variant-b-name "New Headline" \
  --variant-b-changes '{"headline":"New Compelling Headline","cta_text":"Get Started Free"}' \
  --traffic-split "50/50" \
  --goal-metric "form_submit"
```

**Response:**
```json
{
  "test_id": "test_1698765555",
  "page_id": "lp_1698765432",
  "status": "active",
  "variants": [
    {
      "variant_id": "var_a",
      "name": "Original",
      "traffic_percentage": 50,
      "url": "https://pages.example.com/summer-sale-2025?variant=a"
    },
    {
      "variant_id": "var_b",
      "name": "New Headline",
      "traffic_percentage": 50,
      "url": "https://pages.example.com/summer-sale-2025?variant=b",
      "changes": {
        "headline": "New Compelling Headline",
        "cta_text": "Get Started Free"
      }
    }
  ],
  "requirements": {
    "min_conversions_per_variant": 100,
    "min_duration_days": 7,
    "confidence_level": 0.95
  },
  "goal_metric": "form_submit",
  "started_at": "2025-10-29T12:00:00Z",
  "earliest_conclusion_date": "2025-11-05T12:00:00Z"
}
```

**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (invalid JSON, traffic split != 100)
- `2`: API error
- `3`: Validation error (page not found, test already exists)

---

### 3. Publish Page

**Script:** `operations/publish-page.sh`

**Description:** Publish landing page to production (makes page live)

**Parameters:**
- `--page-id` (required): Landing page ID
- `--custom-domain` (optional): Custom domain (e.g., promo.example.com)

**Example:**
```bash
./operations/publish-page.sh \
  --page-id "lp_1698765432" \
  --custom-domain "promo.example.com"
```

**Response:**
```json
{
  "page_id": "lp_1698765432",
  "status": "published",
  "url": "https://promo.example.com/summer-sale-2025",
  "published_at": "2025-10-29T12:00:00Z"
}
```

**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (page not in draft/unpublished state)
- `2`: API error
- `3`: Validation error

---

### 4. Get Page Performance

**Script:** `operations/get-page-performance.sh`

**Description:** Get conversion metrics and A/B test results with statistical significance

**Parameters:**
- `--page-id` (required): Landing page ID
- `--date-from` (optional): Start date (YYYY-MM-DD). Default: 30 days ago
- `--date-to` (optional): End date (YYYY-MM-DD). Default: today

**Example:**
```bash
./operations/get-page-performance.sh \
  --page-id "lp_1698765432" \
  --date-from "2025-10-01"
```

**Response:**
```json
{
  "page_id": "lp_1698765432",
  "page_name": "summer-sale-2025",
  "status": "published",
  "date_range": {
    "from": "2025-10-01",
    "to": "2025-10-29"
  },
  "performance": {
    "visits": 5432,
    "conversions": 487,
    "conversion_rate": 0.0897,
    "bounce_rate": 0.32,
    "avg_time_on_page": 145
  },
  "ab_test": {
    "test_id": "test_1698765555",
    "status": "complete",
    "duration_days": 14,
    "variants": [
      {
        "variant_id": "var_a",
        "name": "Original",
        "visits": 2716,
        "conversions": 217,
        "conversion_rate": 0.0799
      },
      {
        "variant_id": "var_b",
        "name": "New Headline",
        "visits": 2716,
        "conversions": 270,
        "conversion_rate": 0.0994,
        "improvement": "+24.4%"
      }
    ],
    "statistical_significance": {
      "is_significant": true,
      "p_value": 0.0023,
      "confidence_level": 0.9977,
      "winner": "var_b"
    },
    "recommendation": "Implement Variant B (New Headline) - statistically significant improvement"
  }
}
```

**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (invalid date format)
- `2`: API error
- `3`: Validation error

---

### 5. Unpublish Page

**Script:** `operations/unpublish-page.sh`

**Description:** Take landing page offline (returns to draft state)

**Parameters:**
- `--page-id` (required): Landing page ID
- `--reason` (optional): Reason for unpublishing

**Example:**
```bash
./operations/unpublish-page.sh \
  --page-id "lp_1698765432" \
  --reason "Campaign ended"
```

**Response:**
```json
{
  "page_id": "lp_1698765432",
  "status": "unpublished",
  "reason": "Campaign ended",
  "unpublished_at": "2025-10-29T12:00:00Z",
  "previous_url": "https://promo.example.com/summer-sale-2025"
}
```

**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (page not published)
- `2`: API error
- `3`: Validation error

---

## Environment Variables

- `N8N_BASE_URL`: Base URL for n8n instance (e.g., https://n8n.dailyautomations.com)
- `N8N_API_KEY`: API key for authentication

## Error Handling

All operations return structured JSON error responses:

```json
{
  "error": "Description of error",
  "code": "ERROR_CODE",
  "details": {}
}
```

## Integration Pattern

Each operation calls n8n webhook:

```bash
curl -X POST "$N8N_BASE_URL/webhook/landing-pages-{operation}" \
  -H "X-N8N-API-KEY: $N8N_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$PAYLOAD"
```

## Statistical Significance Calculation

A/B test results are considered statistically significant when:
1. Both variants have ≥100 conversions
2. Test has run for ≥7 days
3. P-value < 0.05 (95% confidence)

Formula used: Two-proportion Z-test

## Dependencies

- bash ≥4.0
- jq (JSON processing)
- curl (HTTP requests)
- bc (numeric validation)

## Usage in Workflows

```bash
# Create and publish landing page
PAGE_ID=$(./.claude/skills/cfn-marketing-landing-pages/operations/create-landing-page.sh \
  --page-name "q4-promo" \
  --template "product" \
  --headline "Limited Time Offer" \
  --cta-text "Buy Now" \
  --cta-url "https://example.com/checkout" | jq -r '.page_id')

./.claude/skills/cfn-marketing-landing-pages/operations/publish-page.sh \
  --page-id "$PAGE_ID"

# Set up A/B test
./.claude/skills/cfn-marketing-landing-pages/operations/create-ab-test.sh \
  --page-id "$PAGE_ID" \
  --variant-a-name "Control" \
  --variant-b-name "Test" \
  --variant-b-changes '{"headline":"New Headline"}' \
  --goal-metric "purchase"

# Check results after 7+ days
./.claude/skills/cfn-marketing-landing-pages/operations/get-page-performance.sh \
  --page-id "$PAGE_ID"
```

## Best Practices

1. **Always run A/B tests for minimum 7 days** to account for day-of-week variations
2. **Test one element at a time** (headline OR CTA, not both) for clear attribution
3. **Validate statistical significance** before declaring winners
4. **Archive completed tests** and document learnings
5. **Use custom domains** for brand consistency

Related Skills

We are still matching the closest adjacent skills for this page. In the meantime, continue through the full directory.