Website Analysis Tool
Published on October 16, 2025 at 12:36 PM
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Website Analysis Tool</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
body{font-family:Inter,Arial, sans-serif;background:#f6f8fb;color:#111;margin:0;padding:20px}
.card{max-width:980px;margin:0 auto;background:#fff;padding:20px;border-radius:12px;box-shadow:0 6px 20px rgba(2,6,23,0.06)}
input[type="text"]{width:100%;padding:12px;border:1px solid #e6edf3;border-radius:8px}
button{padding:10px 14px;background:#1565d8;color:#fff;border:none;border-radius:8px;cursor:pointer}
pre{background:#f4f6fb;padding:12px;border-radius:8px;overflow:auto}
.grid{display:grid;grid-template-columns:1fr 320px;gap:18px}
@media(max-width:900px){.grid{grid-template-columns:1fr}}
.meta{font-size:13px;color:#666}
.row{margin-bottom:12px}
</style>
</head>
<body>
<div class="card">
<h2>Website Analysis Tool</h2>
<p class="meta">Enter a URL and get a quick technical + SEO analysis.</p>
<div class="row">
<input id="target" placeholder="https://example.com or example.com">
</div>
<div class="row">
<button id="analyzeBtn">Analyze</button>
</div>
<div class="grid" style="margin-top:18px">
<div>
<h3>Results</h3>
<pre id="output">No results yet.</pre>
</div>
<div>
<h3>Quick Summary</h3>
<div id="summary">—</div>
</div>
</div>
</div>
<script>
const analyzeBtn = document.getElementById('analyzeBtn');
const targetEl = document.getElementById('target');
const outputEl = document.getElementById('output');
const summaryEl = document.getElementById('summary');
analyzeBtn.addEventListener('click', async () => {
const url = targetEl.value.trim();
if (!url) return alert('Enter a URL');
outputEl.textContent = 'Analyzing...';
summaryEl.innerHTML = '...';
try {
const resp = await fetch('/api/analyze', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url })
});
const data = await resp.json();
outputEl.textContent = JSON.stringify(data, null, 2);
// nice summary
if (data.error) {
summaryEl.innerHTML = `<div style="color:#c00">${data.error}</div>`;
} else {
const status = data.statusCode || '-';
const t = data.responseTimeMs ? data.responseTimeMs + ' ms' : '-';
const title = data.analysis && data.analysis.title ? data.analysis.title : '-';
const desc = data.analysis && data.analysis.metaDescription ? data.analysis.metaDescription : '-';
const h1count = data.analysis ? data.analysis.h1.length : 0;
const imagesMissingAlt = data.accessibility ? data.accessibility.imagesMissingAlt : 0;
const robots = data.robots && data.robots.found ? 'Yes' : 'No';
const sitemap = data.sitemap && data.sitemap.found ? 'Yes' : 'No';
summaryEl.innerHTML = `
<div><strong>Status:</strong> ${status}</div>
<div><strong>Response Time:</strong> ${t}</div>
<div><strong>Title:</strong> ${title}</div>
<div><strong>Meta desc:</strong> ${desc}</div>
<div><strong>H1 count:</strong> ${h1count}</div>
<div><strong>Images missing alt:</strong> ${imagesMissingAlt}</div>
<div><strong>robots.txt:</strong> ${robots}</div>
<div><strong>sitemap.xml:</strong> ${sitemap}</div>
`;
}
} catch (err) {
outputEl.textContent = 'Error: ' + (err.message || err);
summaryEl.innerHTML = '<div style="color:#c00">Request failed</div>';
}
});
</script>
</body>
</html>