design-website
Design Website
Goal
Generate a polished, single-page HTML website mockup for a prospect's business. The website matches the buildinamsterdam.com aesthetic: bold typography, off-white backgrounds, editorial grid layouts, terracotta accents. Used to pitch web design services.
Inputs
- Google Sheet URL with prospect data
- Row number (1-indexed, excluding header) to select which prospect
- Optional: worksheet name (defaults to first sheet)
Expected Sheet Columns
The script maps these columns (case-insensitive, flexible matching):
| Column | Maps To |
|---|---|
| company_name / company | Business name (hero, nav, footer) |
| description / about | About section + hero subtitle |
| keywords / services | Services grid (comma-separated) |
| phone / phone_number | Contact section |
| email / contact_email | Contact section |
| address / full_address | Contact section |
| city, state, country | Location info |
| industry / category | Unsplash image search queries |
| first_name, last_name | Owner attribution |
| title / role | Owner role |
Scripts
scripts/read_prospect.py— Read a single prospect row from Google Sheets → JSONscripts/generate_website.py— Generate HTML website from prospect JSON
Process
Step 1: Read prospect data
python3 .claude/skills/design-website/scripts/read_prospect.py \
--url "SHEET_URL" \
--row ROW_NUMBER \
--worksheet "WORKSHEET_NAME" # optional
Outputs JSON to stdout.
Step 2: Generate website
python3 .claude/skills/design-website/scripts/read_prospect.py \
--url "SHEET_URL" --row 1 | \
python3 .claude/skills/design-website/scripts/generate_website.py
Or with a JSON file:
python3 .claude/skills/design-website/scripts/generate_website.py < prospect.json
Step 3: Preview
Open the generated file in browser:
open .tmp/website_*.html
Outputs
.tmp/website_{company_slug}.html— Self-contained HTML file, viewable in any browser- All CSS is inline, images are external URLs (Unsplash)
Environment
UNSPLASH_ACCESS_KEYin.env— Required for stock photos. Get free key at https://unsplash.com/developers- If no key is set, falls back to curated placeholder images from picsum.photos
- Google OAuth credentials (token.json / credentials.json) for Sheets access
Design System
- Font: Inter (Google Fonts CDN)
- Colors: Off-white
#F2EFE6, Black#000, White#FFF, Terracotta#C38133 - Typography: Bold uppercase display (72-100px), section heads (36-48px), body (16-18px)
- Layout: Full-viewport hero, 2-col about, 3-col services grid, 2x2 gallery
- Buttons: Bordered, uppercase, letter-spaced
Edge Cases
- Missing columns: Script uses sensible defaults (e.g., "Welcome" if no description)
- No Unsplash key: Falls back to picsum.photos placeholder images
- Long company names: CSS handles wrapping with responsive font sizing
- Special characters: HTML-escaped in output
Schema
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
sheet_url |
string | Yes | Google Sheet URL with prospect data |
row |
integer | Yes | Row number (1-indexed, excluding header) |
worksheet |
string | No | Worksheet name (default: first sheet) |
Outputs
| Name | Type | Description |
|---|---|---|
html_file |
file_path | Self-contained HTML file at .tmp/website_{slug}.html |
Credentials
| Name | Source |
|---|---|
UNSPLASH_ACCESS_KEY |
.env (optional, falls back to picsum) |
Composable With
Skills that chain well with this one: scrape-leads, gmaps-leads
Cost
Free (Unsplash free tier)
More from aiagentwithdhruv/skills
image-to-video
Generate AI video from static images using Kling 3.0, Hailuo, Luma Ray3, Runway Gen-4.5, and 8 other tools. Covers free vs paid tools, prompt writing (motion-only), camera control, and face stability. Use when user asks to animate an image, create AI video, or convert photo to video.
91mac-control
MCP server for AI-powered macOS control — apps, display, audio, files, screenshots, clipboard
60gmaps-leads
Scrape Google Maps for B2B leads with deep website enrichment and contact extraction. Use when user asks to find local businesses, scrape Google Maps, generate contractor lists, or build local service business databases.
42excalidraw-visuals
Use when someone asks for a hand-drawn visual, PNG image, rendered diagram, visual explanation, or says "excalidraw image" or "excalidraw visual". This generates PNG images, not editable files.
34video-edit
Complete video editing toolkit - silence removal, auto-captions, vertical crop, YouTube clipping, 3D transitions, and social media compression. Use when user asks to edit video, remove silences, add captions/subtitles, crop to vertical/shorts, download YouTube clips, compress video, or create video teasers.
29scrape-leads
Scrape and verify business leads using Apify, classify with LLM, enrich emails, and save to Google Sheets. Use when user asks to find leads, scrape businesses, generate prospect lists, or build lead databases for any industry or location.
26