The AEO/SEO/Security
Wedge Campaign
A fully automated HubSpot + Claude + n8n pipeline that scans a prospect's website, generates a graded report card, and converts findings into a 15-minute consulting call — your foot in the door for every service we offer.
Automation flow
Grading scale
Claude audit prompt template
### ROLE You are a senior digital strategy analyst specializing in Answer Engine Optimization (AEO), Search Engine Optimization (SEO), and web security auditing. You produce clear, actionable report cards for business websites. ### TASK Audit the website at: {{website_url}} Company name: {{company_name}} Industry: {{industry}} ### SCORING CRITERIA AEO (Answer Engine Optimization) — weight: 40% - Schema.org structured data present and correct - FAQ and Q&A formatted content blocks - Clear, direct answers to common questions (AI-indexable) - Featured snippet optimization signals - Entity markup and knowledge graph signals SEO (Search Engine Optimization) — weight: 30% - Title tags, meta descriptions, H1–H3 hierarchy - Internal linking structure - Image alt text and file naming - Page speed signals (detectable via headers/markup) - Mobile-responsive viewport meta tag - Canonical tags and sitemap signals Security — weight: 30% - HTTPS enforced (no HTTP fallback) - Security headers: CSP, X-Frame-Options, X-XSS-Protection, HSTS - Mixed content warnings - Cookie security flags - Privacy policy and compliance signals (GDPR, CCPA) ### OUTPUT FORMAT Return ONLY valid JSON. No prose. No markdown. Structure: { "company": "{{company_name}}", "url": "{{website_url}}", "scan_date": "ISO-8601 date", "grades": { "aeo": { "letter": "A|B|C|D|F", "score": 0-100, "summary": "2-3 sentences" }, "seo": { "letter": "A|B|C|D|F", "score": 0-100, "summary": "2-3 sentences" }, "security": { "letter": "A|B|C|D|F", "score": 0-100, "summary": "2-3 sentences" } }, "composite": { "letter": "A|B|C|D|F", "score": 0-100 }, "top_issues": ["Issue 1", "Issue 2", "Issue 3"], "email_narrative": "3-4 sentence plain-English paragraph suitable for a cold outreach email. Reference the company by name and 1-2 specific findings. Do not mention letter grades — describe the risk and opportunity instead.", "trigger_outreach": true|false }
n8n workflow JSON
{
"name": "Securafy AEO/SEO/Security Wedge Campaign",
"nodes": [
{
"id": "1",
"name": "HubSpot Trigger",
"type": "n8n-nodes-base.hubspotTrigger",
"parameters": {
"eventsUi": {
"eventValues": [{ "name": "contact.creation" }]
}
},
"position": [240, 300]
},
{
"id": "2",
"name": "Fetch HubSpot Contact Details",
"type": "n8n-nodes-base.hubspot",
"parameters": {
"resource": "contact",
"operation": "get",
"contactId": "={{ $json.objectId }}",
"additionalFields": {
"properties": ["website", "company", "industry", "email"]
}
},
"position": [460, 300]
},
{
"id": "3",
"name": "Claude Website Audit",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"headers": {
"x-api-key": "={{ $credentials.anthropicApiKey }}",
"anthropic-version": "2023-06-01",
"content-type": "application/json"
},
"body": {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1500,
"tools": [{
"type": "web_search_20250305",
"name": "web_search"
}],
"system": "[PASTE FULL SYSTEM PROMPT FROM SECTION 03 HERE]",
"messages": [{
"role": "user",
"content": "={{ 'Audit this website: ' + $json.properties.website + '. Company: ' + $json.properties.company + '. Industry: ' + $json.properties.industry }}"
}]
}
},
"position": [680, 300]
},
{
"id": "4",
"name": "Parse Claude Response",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const content = $input.first().json.content;\nconst text = content.find(b => b.type === 'text')?.text || '{}';\nconst audit = JSON.parse(text);\nreturn [{ json: audit }];"
},
"position": [900, 300]
},
{
"id": "5",
"name": "Grade Check — C/D/F Trigger",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": {
"boolean": [{
"value1": "={{ $json.trigger_outreach }}",
"value2": true
}]
}
},
"position": [1120, 300]
},
{
"id": "6",
"name": "Update HubSpot — Grades & Properties",
"type": "n8n-nodes-base.hubspot",
"parameters": {
"resource": "contact",
"operation": "update",
"contactId": "={{ $('Fetch HubSpot Contact Details').item.json.id }}",
"additionalFields": {
"aeo_grade": "={{ $json.grades.aeo.letter }}",
"seo_grade": "={{ $json.grades.seo.letter }}",
"security_grade": "={{ $json.grades.security.letter }}",
"composite_grade": "={{ $json.composite.letter }}",
"audit_top_issues": "={{ $json.top_issues.join(', ') }}",
"website_audit_date": "={{ $json.scan_date }}",
"hs_lead_status": "IN_PROGRESS"
}
},
"position": [1340, 200]
},
{
"id": "7",
"name": "Generate Outreach Email",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": {
"model": "claude-sonnet-4-20250514",
"max_tokens": 800,
"system": "Write a concise, warm cold outreach email. No subject line wrapper. Return only the email body text.",
"messages": [{
"role": "user",
"content": "={{ 'Write an outreach email for ' + $('Fetch HubSpot Contact Details').item.json.properties.company + '. Use this narrative: ' + $json.email_narrative + '. Top issues: ' + $json.top_issues.join(', ') + '. CTA: book a free 15-min call at [SCHEDULING_LINK]. Sign off from the Securafy team.' }}"
}]
}
},
"position": [1560, 200]
},
{
"id": "8",
"name": "Enroll in HubSpot Sequence",
"type": "n8n-nodes-base.hubspot",
"parameters": {
"resource": "contact",
"operation": "update",
"contactId": "={{ $('Fetch HubSpot Contact Details').item.json.id }}",
"additionalFields": {
"hs_sequences_enrolled_count": 1,
"campaign_outreach_email": "={{ $json.content[0].text }}",
"notes_last_updated": "Automated AEO/SEO/Security audit completed. Outreach email queued."
}
},
"position": [1780, 200]
},
{
"id": "9",
"name": "Tag as Healthy — No Outreach",
"type": "n8n-nodes-base.hubspot",
"parameters": {
"resource": "contact",
"operation": "update",
"contactId": "={{ $('Fetch HubSpot Contact Details').item.json.id }}",
"additionalFields": {
"website_health_status": "healthy",
"hs_lead_status": "UNQUALIFIED",
"notes_last_updated": "Audit complete — all grades A/B. Enrolled in maintenance nurture."
}
},
"position": [1340, 440]
}
],
"connections": {
"HubSpot Trigger": { "main": [[{ "node": "Fetch HubSpot Contact Details", "type": "main", "index": 0 }]] },
"Fetch HubSpot Contact Details": { "main": [[{ "node": "Claude Website Audit", "type": "main", "index": 0 }]] },
"Claude Website Audit": { "main": [[{ "node": "Parse Claude Response", "type": "main", "index": 0 }]] },
"Parse Claude Response": { "main": [[{ "node": "Grade Check — C/D/F Trigger", "type": "main", "index": 0 }]] },
"Grade Check — C/D/F Trigger": {
"main": [
[{ "node": "Update HubSpot — Grades & Properties", "type": "main", "index": 0 }],
[{ "node": "Tag as Healthy — No Outreach", "type": "main", "index": 0 }]
]
},
"Update HubSpot — Grades & Properties": { "main": [[{ "node": "Generate Outreach Email", "type": "main", "index": 0 }]] },
"Generate Outreach Email": { "main": [[{ "node": "Enroll in HubSpot Sequence", "type": "main", "index": 0 }]] }
},
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true,
"callerPolicy": "workflowsFromSameOwner"
}
}
Outreach email structure
Hi {{ first_name }},
We ran a quick AEO, SEO, and security scan on {{ company_domain }} and wanted to share the headline results — no charge, no strings attached.
{{ claude_generated_narrative }}
We'd love to walk you through the full report — including exactly what needs fixing and what it means for your business — in a free 15-minute call. No pitch, just the findings.
We'll also share a short video we put together on why Answer Engine Optimization is becoming more important than traditional SEO, and how a security gap like yours can become a compliance issue fast.
Book your free 15-min review →
— The Securafy team
securafy.com