← Back to Skills
Communication

lead-gen-website

lucasgulino By lucasgulino 👁 7 views ▲ 0 votes

Build complete local lead generation websites with SEO

GitHub
---
name: lead-gen-website
description: Build complete local lead generation websites with SEO optimization, conversion tracking, and RGPD compliance. Use for creating service-based websites targeting local markets (plumbers, electricians, home services, etc.) with 10-20 pages, structured data, analytics, and legal compliance.
---

# Lead Generation Website Builder

Build conversion-optimized local service websites with complete SEO, tracking, and RGPD compliance — **avec garde-fous anti-spam (Google Spam Policies + March 2024)**, local SEO (GBP) et micro-budget ads.

## When to Use This Skill

Use this skill when the user requests a website for:
- Local service businesses (home services, repairs, professional services)
- Lead generation focused on specific geographic areas
- Sites requiring 10-20+ pages with service pages, blog, and legal pages
- SEO-optimized content targeting local keywords
- Conversion tracking (phone, WhatsApp, forms with UTM parameters)
- RGPD/GDPR compliance (cookie banner, privacy policy, legal pages)

## Workflow Overview

Follow these phases sequentially. Do NOT skip phases or combine them without clear reason.

0) **Policy / Risk Check (mandatory)**
- Read `references/google-spam-guardrails-2024.md`
- Explicitly verify: no doorway pages, no scaled generic content, no fake address/avis, no misleading claims.
- If the project is **mise en relation** (leadgen): require clear disclosure on all key pages.

Then continue with Phases 1→7.

### Phase 1: Analysis and Planning

Gather project requirements from the user or specifications document.

**Required information:**
- Business niche and services offered
- Geographic target area (city + radius)
- Target keywords for SEO
- Contact information (phone, WhatsApp, email)
- Number and types of pages needed
- Competitor websites (for differentiation)

**Output:** Clear understanding of project scope, target audience, and conversion goals.

### Phase 2: Design Brainstorming

Create `ideas.md` in the project root with THREE distinct design approaches.

Use `templates/design-ideas-template.md` as structure. Each approach must define:
- Design movement and aesthetic philosophy
- Color palette with hex codes and emotional intent
- Typography system (headings + body fonts)
- Layout paradigm (avoid generic centered layouts)
- Signature visual elements
- Animation guidelines
- Interaction philosophy

Consult `references/design-philosophies.md` for inspiration, but create original combinations.

**Selection:** Choose ONE approach and document the rationale. This design philosophy will guide ALL subsequent design decisions.

### Phase 3: Visual Assets Generation

Generate 3-5 high-quality images using `generate` tool. These images MUST:
- Align with the chosen design philosophy (colors, mood, style)
- Be stored in `/home/ubuntu/webdev-static-assets/`
- Cover key visual needs: hero background, service illustrations, local landmarks, team/artisan photos

Plan strategic usage:
- Hero section: Most impactful image
- Service pages: Relevant illustrations
- About/Trust sections: Team or local landmark photos

Do NOT generate images on-the-fly during development. Generate all at once for efficiency.

### Phase 4: Content Structure

Create detailed content structure for all pages.

**Option A (Manual):** Write `content-structure.md` directly with sections for each page including title, meta description, H1, and main content outline.

**Option B (Script):** Create `specs.json` with page data, then run:
```bash
python /home/ubuntu/skills/lead-gen-website/scripts/generate_content_structure.py specs.json content-structure.md
```

**Content requirements:**
- Minimum 500 words per main page (homepage, main services)
- Minimum 1000 words per blog article
- Include target keywords naturally (no stuffing)
- Answer user intent (what, why, how, cost, area)
- Local focus (mention city/region frequently)

### Phase 5: Development

Initialize project and build all pages.

#### 5.1 Initialize Project
```bash
webdev_init_project <project-name>
```

#### 5.2 Configure Design Tokens

Edit `client/src/index.css` with chosen design philosophy:
- Update CSS variables for colors (primary, secondary, accent, background, foreground)
- Configure typography (font-family for sans, serif)
- Adjust shadows, radius, animations

Add Google Fonts in `client/index.html`:
```html
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=YourFont:wght@400;600;700&display=swap" rel="stylesheet" />
```

#### 5.3 Create Reusable Components

Use templates from `templates/` directory. Replace placeholders with project-specific values:

**Header** (`templates/component-Header.tsx`):
- `{{SITE_NAME}}`, `{{SITE_TAGLINE}}`, `{{SITE_INITIALS}}`
- `{{PHONE_NUMBER}}`, `{{WHATSAPP_NUMBER}}`
- `{{NAV_ITEMS}}` (JSON array of `{label, href}`)

**Footer** (`templates/component-Footer.tsx`):
- `{{SITE_NAME}}`, `{{SITE_DESCRIPTION}}`
- `{{SERVICE_LINKS}}`, `{{UTILITY_LINKS}}`
- `{{PHONE_NUMBER}}`, `{{EMAIL}}`, `{{LOCATION}}`

**SEOHead** (`templates/component-SEOHead.tsx`):
- Replace `{{DOMAIN}}` with actual domain

**Other components:** Breadcrumbs, ContactForm, CookieBanner (copy as-is, minimal customization needed)

#### 5.4 Build Pages

**For similar pages (services, blog articles):**

1. Create template file (e.g., `service-template.tsx`) using `templates/page-service-template.tsx`
2. Create data file (e.g., `services-data.json`) with array of page data
3. Run batch generation:
```bash
python /home/ubuntu/skills/lead-gen-website/scripts/generate_pages_batch.py service-template.tsx services-data.json client/src/pages/
```

**For unique pages (homepage, tarifs, FAQ, contact):**
Build manually with rich, custom content. Use components for consistency.

**For legal pages:**
Use `templates/page-legal-template.tsx` with standard legal content.

#### 5.5 Update App.tsx

Add all routes to `client/src/App.tsx`:
```tsx
<Route path="/service-page" component={ServicePage} />
```

Integrate Header, Footer, and CookieBanner in App layout.

### Phase 6: SEO, Tracking, GBP, Ads

#### 6.1 Generate SEO Files

Create `pages.json` with all URLs and priorities:
```json
[
  {"url": "/", "priority": "1.0"},
  {"url": "/service", "priority": "0.9"},
  {"url": "/contact", "priority": "0.9"},
  {"url": "/blog", "priority": "0.6"},
  {"url": "/mentions-legales", "priority": "0.3"}
]
```

Run script:
```bash
python /home/ubuntu/skills/lead-gen-website/scripts/create_seo_files.py yourdomain.com pages.json client/public/
```

This creates `robots.txt` and `sitemap.xml` in `client/public/`.

#### 6.2 Add Structured Data

Add JSON-LD structured data to key pages using SEOHead component's `jsonLd` prop:

**Homepage (LocalBusiness):**
```tsx
const jsonLd = {
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Business Name",
  "telephone": "+33123456789",
  "email": "[email protected]",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "City",
    "addressCountry": "FR"
  },
  "areaServed": ["City1", "City2"],
  "openingHours": "Mo-Fr 08:00-18:00"
};
```

**Service pages (Service):**
```tsx
const jsonLd = {
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Service Name",
  "description": "Service description",
  "provider": {
    "@type": "LocalBusiness",
    "name": "Business Name"
  },
  "areaServed": "City"
};
```

Consult `references/seo-checklist.md` for complete SEO requirements.

#### 6.3 RGPD Compliance

Verify:
- CookieBanner component is integrated in App.tsx
- Privacy policy page exists with complete RGPD information
- Cookie policy page exists
- Legal mentions page exists
- ContactForm includes link to privacy policy

Consult `references/rgpd-compliance.md` for detailed requirements.

#### 6.4 GBP / Local SEO (Prominence)

Read and apply:
- `references/gbp-local-seo-playbook.md`

Deliverables to produce:
- GBP setup checklist (catégories/services/Q&R)
- 30-day photo/post/avis plan
- NAP citations list (quality-first, no spam)

#### 6.5 Micro-budget Ads (4€/jour)

Read and apply:
- `references/ads-micro-budget-4eur-playbook.md`

Deliverables to produce:
- 1 campagne ultra-serrée (keywords exact/phrase, zone, horaires, négatifs)
- 1 landing dédiée + tracking

#### 6.6 Conversion Tracking

ContactForm component automatically captures UTM parameters from URL:
- `utm_source` (e.g., google, facebook)
- `utm_campaign` (campaign name)
- `utm_adset` (ad set name)
- `utm_ad` (specific ad)

These are stored in form state and can be sent to backend/CRM for attribution tracking.

### Phase 7: Validation and Delivery

#### 7.1 Test in Browser

Open dev server URL and verify:
- All pages load without errors
- Navigation works (header menu, breadcrumbs)
- Forms submit correctly
- Mobile responsive (test sticky CTA buttons)
- Cookie banner appears on first visit
- Images load correctly

#### 7.2 SEO Validation

Verify against `references/seo-checklist.md`:
- Unique title and description on each page
- H1 hierarchy correct
- Images have alt attributes
- robots.txt and sitemap.xml accessible
- Structured data present on key pages

#### 7.3 Create Checkpoint

```bash
webdev_save_checkpoint "Complete lead-gen website - [X] pages, SEO optimized, RGPD compliant"
```

#### 7.4 Deliver to User

Send checkpoint attachment via `message` tool with:
- Summary of what was built
- Page count and key features
- SEO optimizations implemented
- Next steps (publish, custom domain, Google Search Console)

## Bundled Resources

### Scripts

**`scripts/generate_pages_batch.py`**
Generate multiple similar pages from template and data file.
Usage: `python generate_pages_batch.py <template> <data_json> <output_dir>`

**`scripts/create_seo_files.py`**
Generate robots.txt and sitemap.xml automatically.
Usage: `python create_seo_files.py <domain> <pages_json> <output_dir>`

**`scripts/g

... (truncated)
communication

Comments

Sign in to leave a comment

Loading comments...