- robotsTxtUrl
- https://likepulse.app/robots.txt
- exists
- true
- rawRobotsTxt
- # As a condition of accessing this website, you agree to abide by the following
# content signals:
# (a) If a Content-Signal = yes, you may collect content for the corresponding
# use.
# (b) If a Content-Signal = no, you may not collect content for the
# corresponding use.
# (c) If the website operator does not include a Content-Signal for a
# corresponding use, the website operator neither grants nor restricts
# permission via Content-Signal with respect to the corresponding use.
# The content signals and their meanings are:
# search: building a search index and providing search results (e.g., returning
# hyperlinks and short excerpts from your website's contents). Search does not
# include providing AI-generated search summaries.
# ai-input: inputting content into one or more AI models (e.g., retrieval
# augmented generation, grounding, or other real-time taking of content for
# generative AI search answers).
# ai-train: training or fine-tuning AI models.
# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF
# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT
# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.
# BEGIN Cloudflare Managed content
User-agent: *
Content-Signal: search=yes,ai-train=no
Allow: /
User-agent: Amazonbot
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CloudflareBrowserRenderingCrawler
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: meta-externalagent
Disallow: /
# END Cloudflare Managed Content
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LikePulse — Feel the moment the internet reacted</title>
<meta name="description" content="LikePulse shows you exactly where YouTube audiences react — key moments, AI audience analysis, and product recommendations. Free Chrome extension.">
<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=Syne:wght@400;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;1,9..40,300&display=swap" rel="stylesheet">
<style>
:root {
--red: #FF2233;
--red-dim: rgba(255,34,51,0.12);
--red-glow: rgba(255,34,51,0.25);
--blue: #1a73e8;
--dark: #0a0a0b;
--dark2: #111113;
--dark3: #18181c;
--border: rgba(255,255,255,0.07);
--text: #f0f0f2;
--muted: #888890;
--card: rgba(255,255,255,0.04);
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
background: var(--dark);
color: var(--text);
font-family: 'DM Sans', sans-serif;
font-size: 16px;
line-height: 1.6;
overflow-x: hidden;
}
/* ── Noise overlay ── */
body::before {
content: '';
position: fixed; inset: 0; z-index: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");
pointer-events: none;
}
/* ── NAV ── */
nav {
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: flex; align-items: center; justify-content: space-between;
padding: 18px 48px;
background: rgba(10,10,11,0.85);
backdrop-filter: blur(20px);
border-bottom: 1px solid var(--border);
}
.nav-logo {
display: flex; align-items: center; gap: 10px;
font-family: 'Syne', sans-serif; font-weight: 800; font-size: 20px;
text-decoration: none; color: var(--text);
}
.nav-dot {
width: 9px; height: 9px; border-radius: 50%;
background: var(--red);
animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:0.5;transform:scale(0.8)} }
.nav-cta {
display: flex; align-items: center; gap: 8px;
background: var(--red); color: #fff;
font-family: 'DM Sans', sans-serif; font-weight: 500; font-size: 14px;
padding: 9px 20px; border-radius: 8px;
text-decoration: none; transition: all 0.2s;
border: none; cursor: pointer;
}
.nav-cta:hover { background: #e01020; transform: translateY(-1px); box-shadow: 0 4px 20px var(--red-glow); }
/* ── HERO ── */
.hero {
min-height: 100vh;
display: flex; flex-direction: column; align-items: center; justify-content: center;
text-align: center;
padding: 120px 24px 80px;
position: relative;
}
.hero-bg {
position: absolute; inset: 0; z-index: 0;
background:
radial-gradient(ellipse 80% 50% at 50% -10%, rgba(255,34,51,0.12) 0%, transparent 60%),
radial-gradient(ellipse 60% 40% at 80% 60%, rgba(26,115,232,0.06) 0%, transparent 50%);
}
.hero-eyebrow {
display: inline-flex; align-items: center; gap: 8px;
background: var(--red-dim); border: 1px solid rgba(255,34,51,0.2);
border-radius: 100px; padding: 6px 14px;
font-size: 12px; font-weight: 500; color: #ff6677;
letter-spacing: 0.05em; text-transform: uppercase;
margin-bottom: 28px; position: relative; z-index: 1;
animation: fadeUp 0.6s ease both;
}
.hero h1 {
font-family: 'Syne', sans-serif;
font-weight: 800; font-size: clamp(48px, 7vw, 96px);
line-height: 1.0; letter-spacing: -0.03em;
position: relative; z-index: 1;
animation: fadeUp 0.6s 0.1s ease both;
}
.hero h1 em {
font-style: normal; color: var(--red);
position: relative;
}
.hero h1 em::after {
content: '';
position: absolute; left: 0; bottom: -4px; right: 0; height: 3px;
background: var(--red); border-radius: 2px; opacity: 0.4;
}
.hero-sub {
font-size: clamp(16px, 2vw, 20px);
color: var(--muted); max-width: 560px;
margin: 24px auto 0;
font-weight: 300; line-height: 1.7;
position: relative; z-index: 1;
animation: fadeUp 0.6s 0.2s ease both;
}
.hero-actions {
display: flex; align-items: center; gap: 16px;
margin-top: 40px; flex-wrap: wrap; justify-content: center;
position: relative; z-index: 1;
animation: fadeUp 0.6s 0.3s ease both;
}
.btn-primary {
display: flex; align-items: center; gap: 10px;
background: var(--red); color: #fff;
font-family: 'DM Sans', sans-serif; font-weight: 500; font-size: 16px;
padding: 14px 28px; border-radius: 10px;
text-decoration: none; transition: all 0.2s;
box-shadow: 0 0 0 0 var(--red-glow);
}
.btn-primary:hover {
background: #e01020; transform: translateY(-2px);
box-shadow: 0 8px 32px var(--red-glow);
}
.btn-secondary {
display: flex; align-items: center; gap: 8px;
color: var(--muted); font-size: 15px;
text-decoration: none; transition: color 0.2s;
border-bottom: 1px solid transparent;
}
.btn-secondary:hover { color: var(--text); border-bottom-color: var(--border); }
/* ── MOCK PANEL ── */
.hero-visual {
position: relative; z-index: 1;
margin-top: 64px; width: 100%; max-width: 760px;
animation: fadeUp 0.8s 0.4s ease both;
}
.mock-panel {
background: #fff;
border-radius: 14px;
overflow: hidden;
box-shadow: 0 40px 120px rgba(0,0,0,0.7), 0 0 0 1px rgba(255,255,255,0.08);
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
color: #0f0f0f;
}
.mock-header {
display: flex; align-items: center; justify-content: space-between;
padding: 12px 16px;
border-bottom: 0.5px solid rgba(0,0,0,0.08);
}
.mock-header-left { display: flex; align-items: center; gap: 8px; }
.mock-red-dot { width: 8px; height: 8px; border-radius: 50%; background: #FF2233; }
.mock-title { font-size: 13px; font-weight: 600; }
.mock-sub { font-size: 12px; color: #606060; }
.mock-stats { display: flex; gap: 18px; }
.mock-stat { text-align: right; }
.mock-stat-label { font-size: 10px; color: #606060; }
.mock-stat-val { font-size: 14px; font-weight: 600; }
.mock-stat-val.red { color: #FF2233; }
.mock-chart-area { padding: 12px 16px 0; }
.mock-chart-label { font-size: 10px; color: #606060; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px; }
.mock-chart {
display: flex; align-items: flex-end; gap: 2px; height: 64px;
}
.mock-bar {
flex: 1; border-radius: 2px 2px 0 0;
transition: filter 0.15s;
}
.mock-moments { padding: 14px 16px; border-top: 0.5px solid rgba(0,0,0,0.08); }
.mock-moments-title {
display: flex; align-items: center; justify-content: space-between;
margin-bottom: 10px;
}
.mock-moments-label { font-size: 10px; color: #606060; text-transform: uppercase; letter-spacing: 0.05em; }
.mock-expand { font-size: 10px; color: #1a73e8; border: 0.5px solid rgba(26,115,232,0.3); border-radius: 4px; padding: 2px 7px; }
.mock-moment {
display: flex; align-items: flex-start; gap: 10px;
padding: 9px 11px; margin-bottom: 7px;
background: #f9f9f9; border: 0.5px solid rgba(0,0,0,0.06);
border-radius: 8px;
}
.mock-badge {
background: #FF2233; color: #fff;
font-size: 11px; font-weight: 600;
padding: 3px 8px; border-radius: 4px;
white-space: nowrap; flex-shrink: 0;
}
.mock-moment-text { font-size: 12px; color: #404040; line-height: 1.5; flex: 1; }
.mock-mention { font-size: 10px; color: #909090; text-align: right; flex-shrink: 0; }
.mock-ai {
padding: 11px 16px;
border-top: 0.5px solid rgba(0,0,0,0.08);
background: linear-gradient(135deg, #f0f4ff, #f5f0ff);
display: flex; align-items: center; justify-content: space-between;
}
.mock-ai-left { display: flex; align-items: center; gap: 10px; }
.mock-ai-icon {
width: 32px; height: 32px; border-radius: 50%;
background: linear-gradient(135deg, #4a6cf7, #7c3aed);
display: flex; align-items: center; justify-content: center;
font-size: 14px;
}
.mock-ai-title { font-size: 12px; font-weight: 600; color: #2d3a8c; }
.mock-ai-sub { font-size: 10px; color: #7b8ab8; }
/* ── FEATURES ── */
.section {
padding: 100px 48px;
max-width: 1100px; margin: 0 auto;
position: relative; z-index: 1;
}
.section-eyebrow {
font-size: 11px; font-weight: 600; letter-spacing: 0.1em;
text-transform: uppercase; color: var(--red);
margin-bottom: 16px;
}
.section-title {
font-family: 'Syne', sans-serif; font-weight: 700;
font-size: clamp(32px, 4vw, 52px); line-height: 1.1;
letter-spacing: -0.02em; margin-bottom: 16px;
}
.section-sub {
font-size: 18px; color: var(--muted); font-weight: 300;
max-width: 520px; line-height: 1.7;
}
.features-grid {
display: grid; grid-template-columns: repeat(3, 1fr);
gap: 2px; margin-top: 64px;
background: var(--border); border-radius: 16px; overflow: hidden;
}
.feature-card {
background: var(--dark2); padding: 36px 32px;
transition: background 0.2s;
}
.feature-card:hover { background: var(--dark3); }
.feature-icon {
width: 44px; height: 44px; border-radius: 10px;
background: var(--red-dim); border: 1px solid rgba(255,34,51,0.15);
display: flex; align-items: center; justify-content: center;
margin-bottom: 20px; font-size: 20px;
}
.feature-title {
font-family: 'Syne', sans-serif; font-weight: 700;
font-size: 18px; margin-bottom: 10px;
}
.feature-desc { font-size: 14px; color: var(--muted); line-height: 1.7; }
/* ── HOW IT WORKS ── */
.how-section {
padding: 100px 48px;
background: var(--dark2);
position: relative; z-index: 1;
border-top: 1px solid var(--border);
border-bottom: 1px solid var(--border);
}
.how-inner { max-width: 1100px; margin: 0 auto; }
.steps {
display: grid; grid-template-columns: repeat(3,1fr);
gap: 48px; margin-top: 64px;
}
.step { position: relative; }
.step-num {
font-family: 'Syne', sans-serif; font-weight: 800;
font-size: 72px; line-height: 1;
color: rgba(255,34,51,0.08); margin-bottom: -12px;
letter-spacing: -0.04em;
}
.step-title {
font-family: 'Syne', sans-serif; font-weight: 700;
font-size: 20px; margin-bottom: 12px;
}
.step-desc { font-size: 15px; color: var(--muted); line-height: 1.7; }
.step-connector {
position: absolute; top: 36px; right: -24px;
width: 48px; height: 1px;
background: linear-gradient(90deg, var(--border), transparent);
}
/* ── SCREENSHOT PLACEHOLDER ── */
.screenshot-section {
padding: 100px 48px;
max-width: 1100px; margin: 0 auto;
position: relative; z-index: 1;
}
.screenshot-grid {
display: grid; grid-template-columns: 1fr 1fr;
gap: 24px; margin-top: 64px;
}
.screenshot-slot {
background: var(--dark3);
border: 1px solid var(--border); border-radius: 14px;
overflow: hidden; position: relative;
}
.screenshot-slot img {
width: 100%; height: auto; display: block;
border-radius: 14px;
transition: transform 0.3s ease;
}
.screenshot-slot:hover img { transform: scale(1.02); }
/* ── FREE CALLOUT ── */
.callout {
margin: 0 48px 100px;
background: linear-gradient(135deg, var(--dark3), var(--dark2));
border: 1px solid var(--border); border-radius: 20px;
padding: 64px 80px;
display: flex; align-items: center; justify-content: space-between;
gap: 48px; position: relative; z-index: 1;
overflow: hidden;
}
.callout::before {
content: '';
position: absolute; top: -80px; right: -80px;
width: 320px; height: 320px; border-radius: 50%;
background: radial-gradient(circle, rgba(255,34,51,0.08) 0%, transparent 70%);
pointer-events: none;
}
.callout-text h2 {
font-family: 'Syne', sans-serif; font-weight: 800;
font-size: clamp(28px, 3vw, 44px); letter-spacing: -0.02em;
line-height: 1.1; margin-bottom: 16px;
}
.callout-text p { font-size: 16px; color: var(--muted); max-width: 420px; line-height: 1.7; }
.callout-action { flex-shrink: 0; }
/* ── PRIVACY ── */
.privacy-section {
padding: 80px 48px;
max-width: 760px; margin: 0 auto;
position: relative; z-index: 1;
border-top: 1px solid var(--border);
}
.privacy-section h2 {
font-family: 'Syne', sans-serif; font-weight: 700; font-size: 28px;
margin-bottom: 24px;
}
.privacy-section h3 {
font-family: 'Syne', sans-serif; font-weight: 600; font-size: 17px;
margin: 28px 0 10px; color: var(--text);
}
.privacy-section p, .privacy-section li {
font-size: 14px; color: var(--muted); line-height: 1.8; margin-bottom: 8px;
}
.privacy-section ul { padding-left: 20px; }
.privacy-section a { color: var(--red); text-decoration: none; }
/* ── FOOTER ── */
footer {
border-top: 1px solid var(--border);
padding: 40px 48px;
display: flex; align-items: center; justify-content: space-between;
position: relative; z-index: 1; flex-wrap: wrap; gap: 16px;
}
.footer-logo {
display: flex; align-items: center; gap: 8px;
font-family: 'Syne', sans-serif; font-weight: 700; font-size: 16px;
color: var(--text); text-decoration: none;
}
.footer-links { display: flex; gap: 32px; }
.footer-links a { font-size: 13px; color: var(--muted); text-decoration: none; transition: color 0.2s; }
.footer-links a:hover { color: var(--text); }
.footer-copy { font-size: 12px; color: var(--muted); }
@keyframes fadeUp {
from { opacity: 0; transform: translateY(24px); }
to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 768px) {
nav { padding: 16px 20px; }
.section, .screenshot-section, .privacy-section { padding: 64px 20px; }
.how-section { padding: 64px 20px; }
.features-grid { grid-template-columns: 1fr; }
.steps { grid-template-columns: 1fr; gap: 32px; }
.screenshot-grid { grid-template-columns: 1fr; }
.callout { margin: 0 20px 64px; padding: 40px 28px; flex-direction: column; }
footer { padding: 32px 20px; flex-direction: column; align-items: flex-start; }
.step-connector { display: none; }
}
</style>
</head>
<body>
<!-- NAV -->
<nav>
<a href="#" class="nav-logo">
<div class="nav-dot"></div>
LikePulse
</a>
<a href="https://chromewebstore.google.com/detail/likepulse/kklcgabbpkakegcbijkipjelkkjcnjac" class="nav-cta" target="_blank" rel="noopener">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
Add to Chrome — Free
</a>
</nav>
<!-- HERO -->
<section class="hero">
<div class="hero-bg"></div>
<div class="hero-eyebrow">
<div class="nav-dot" style="width:6px;height:6px;"></div>
Free Chrome Extension
</div>
<h1>Feel the moment<br>the internet <em>reacted</em></h1>
<p class="hero-sub">LikePulse shows you exactly where YouTube audiences peak — key moments, AI-powered audience analysis, and product detection. On any video, instantly.</p>
<div class="hero-actions">
<a href="https://chromewebstore.google.com/detail/likepulse/kklcgabbpkakegcbijkipjelkkjcnjac" class="btn-primary" target="_blank" rel="noopener">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
Add to Chrome — It's Free
</a>
<a href="#how" class="btn-secondary">
See how it works
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 18 15 12 9 6"/></svg>
</a>
</div>
<!-- MOCK PANEL -->
<div class="hero-visual">
<div class="mock-panel">
<div class="mock-header">
<div class="mock-header-left">
<div class="mock-red-dot"></div>
<span class="mock-title">LikePulse</span>
<span class="mock-sub">take the audience pulse</span>
</div>
<div class="mock-stats">
<div class="mock-stat">
<div class="mock-stat-label">analyzed</div>
<div class="mock-stat-val">599</div>
</div>
<div class="mock-stat">
<div class="mock-stat-label">with timestamp</div>
<div class="mock-stat-val">87</div>
</div>
<div class="mock-stat">
<div class="mock-stat-label">key moments</div>
<div class="mock-stat-val red">6</div>
</div>
</div>
</div>
<!-- CHART -->
<div class="mock-chart-area">
<div class="mock-chart-label">Mention distribution · 27:08</div>
<div class="mock-chart" id="mockChart"></div>
</div>
<!-- MOMENTS -->
<div class="mock-moments">
<div class="mock-moments-title">
<span class="mock-moments-label">Most commented moments</span>
<span class="mock-expand">Expand all</span>
</div>
<div class="mock-moment">
<span class="mock-badge">2:33</span>
<span class="mock-moment-text">The Harry Potter figurines — "this is actually the best part" · "2:38 literally crying"</span>
<span class="mock-mention">10 mentions</span>
</div>
<div class="mock-moment">
<span class="mock-badge">5:33</span>
<span class="mock-moment-text">5:25 "this is insane!! 🔥" — hay like · "5:30 in conclusion A MEXICAN GAME!!"</span>
<span class="mock-mention">6 mentions</span>
</div>
<div class="mock-moment">
<span class="mock-badge">8:51</span>
<span class="mock-moment-text">"8:45 I thought you were gonna say the grefg" · "8:45 I THOUGHT A GREFT"</span>
<span class="mock-mention">4 mentions</span>
</div>
</div>
<!-- AI PANEL -->
<div class="mock-ai">
<div class="mock-ai-left">
<div class="mock-ai-icon">🧠</div>
<div>
<div class="mock-ai-title">What the audience thinks</div>
<div class="mock-ai-sub">AI summary of comments — tap to read</div>
</div>
</div>
<span style="font-size:18px;color:#4a6cf7;">▸</span>
</div>
</div>
</div>
</section>
<!-- FEATURES -->
<section class="section">
<div class="section-eyebrow">Features</div>
<h2 class="section-title">Everything you need to<br>read any audience</h2>
<p class="section-sub">Built for viewers and creators who want to understand what really resonates — not just view counts.</p>
<div class="features-grid">
<div class="feature-card">
<div class="feature-icon">📊</div>
<div class="feature-title">Engagement Heatmap</div>
<p class="feature-desc">Dual-bar chart overlaid on any video. Red peaks show timestamp comments. Blue bars show Most Replayed data. See where audiences actually react.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🎯</div>
<div class="feature-title">Key Moments</div>
<p class="feature-desc">Automatically detected peaks ranked by intensity. Click any moment to jump directly to that point in the video and see what people said.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🧠</div>
<div class="feature-title">AI Audience Analysis</div>
<p class="feature-desc">Claude Haiku reads the comments and tells you why specific moments resonated, what emotion drove them, and what the creator could improve.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🛒</div>
<div class="feature-title">Product Detection</div>
<p class="feature-desc">AI automatically identifies products mentioned in the video and finds them on Amazon. Useful for gear videos, tech reviews, and tutorials.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🌍</div>
<div class="feature-title">4 Languages</div>
<p class="feature-desc">Full UI in English, Spanish, Portuguese, and French — automatically detected from your browser. Works on any YouTube video in any language.</p>
</div>
<div class="feature-card">
<div class="feature-icon">⚡</div>
<div class="feature-title">Analyze on Demand</div>
<p class="feature-desc">You decide when to analyze. LikePulse never runs automatically — click once and get the full picture. Results cached for 7 days.</p>
</div>
</div>
</section>
<!-- HOW IT WORKS -->
<section class="how-section" id="how">
<div class="how-inner">
<div class="section-eyebrow">How it works</div>
<h2 class="section-title">Three steps to understand<br>any YouTube audience</h2>
<div class="steps">
<div class="step">
<div class="step-num">01</div>
<h3 class="step-title">Install the extension</h3>
<p class="step-desc">Add LikePulse to Chrome in one click. No account needed, no login, no subscription. Free forever for the core features.</p>
<div class="step-connector"></div>
</div>
<div class="step">
<div class="step-num">02</div>
<h3 class="step-title">Open any YouTube video</h3>
<p class="step-desc">LikePulse appears below every video automatically. When you're ready, hit "Analyze this video" to start.</p>
<div class="step-connector"></div>
</div>
<div class="step">
<div class="step-num">03</div>
<h3 class="step-title">Read the audience</h3>
<p class="step-desc">See the engagement heatmap, key moments, AI analysis of why each moment worked, and detected products — all in seconds.</p>
</div>
</div>
</div>
</section>
<!-- SCREENSHOTS -->
<section class="screenshot-section">
<div class="section-eyebrow">In action</div>
<h2 class="section-title">See LikePulse on real videos</h2>
<div class="screenshot-grid">
<div class="screenshot-slot has-img">
<img src="ss1.png" alt="LikePulse heatmap and key moments">
</div>
<div class="screenshot-slot has-img">
<img src="ss2.png" alt="LikePulse moment expanded with inline comments">
</div>
<div class="screenshot-slot has-img">
<img src="ss4.png" alt="LikePulse AI audience analysis panel">
</div>
<div class="screenshot-slot has-img">
<img src="ss5.png" alt="LikePulse AI product detection">
</div>
</div>
</section>
<!-- CTA CALLOUT -->
<div class="callout">
<div class="callout-text">
<h2>Ready to feel the pulse<br>of any video?</h2>
<p>Free forever. No account. No credit card. Just install and start understanding your audience better.</p>
</div>
<div class="callout-action">
<a href="https://chromewebstore.google.com/detail/likepulse/kklcgabbpkakegcbijkipjelkkjcnjac" class="btn-primary" style="font-size:17px;padding:16px 32px;" target="_blank" rel="noopener">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
Add to Chrome — Free
</a>
</div>
</div>
<!-- PRIVACY POLICY -->
<section class="privacy-section" id="privacy">
<h2>Privacy Policy</h2>
<p>Last updated: May 2026</p>
<h3>What data we collect</h3>
<p>LikePulse does not collect, store, or transmit any personal data. The extension operates entirely within your browser.</p>
<ul>
<li>We do not collect your name, email, or any personal identifiers.</li>
<li>We do not track which videos you watch.</li>
<li>We do not store your YouTube history or activity.</li>
</ul>
<h3>YouTube Data & Comments</h3>
<p>When you click "Analyze this video", LikePulse fetches public comments via our secure Cloudflare Worker proxy, which calls the YouTube Data API v3. Only the video ID is sent — no personal data or account information.</p>
<h3>AI Analysis</h3>
<p>When AI analysis is requested, a summary of public comments and the video's public transcript is sent to our Cloudflare Worker, which calls the Anthropic API (Claude Haiku). No user identifiers are included. Your personal data is never part of these requests.</p>
<h3>Amazon Affiliate Links</h3>
<p>When AI detects products in a video, LikePulse may show Amazon links with affiliate tags. Clicking them may earn us a small commission at no extra cost to you. We do not track clicks beyond Amazon's standard affiliate program.</p>
<h3>Permissions</h3>
<p>LikePulse requests the following Chrome permissions:</p>
<ul>
<li><strong>youtube.com access</strong> — to inject the panel on YouTube watch pages only.</li>
<li><strong>storage</strong> — to save your UI preferences (collapsed state, language) locally in your browser.</li>
</ul>
<h3>Full Privacy Policy</h3>
<p>Read the complete policy at <a href="/privacy">likepulse.app/privacy</a></p>
</section>
<!-- FOOTER -->
<footer>
<a href="#" class="footer-logo">
<div class="nav-dot" style="width:7px;height:7px;"></div>
LikePulse
</a>
<div class="footer-links">
<a href="#how">How it works</a>
<a href="#privacy">Privacy Policy</a>
<a href="mailto:privacy@likepulse.app">Contact</a>
</div>
<div class="footer-copy">© 2026 LikePulse. Free Chrome Extension.</div>
</footer>
<script>
// Generate mock chart bars
const chart = document.getElementById('mockChart');
const peaks = [3, 8, 12, 17, 22, 31]; // peak bin indices
const total = 40;
for(let i = 0; i < total; i++) {
const isPeak = peaks.includes(i);
const v = isPeak ? 0.7 + Math.random() * 0.3 : 0.05 + Math.random() * 0.25;
const mrV = Math.random() * 0.6;
const col = document.createElement('div');
col.style.cssText = 'flex:1;display:flex;flex-direction:column;align-items:stretch;gap:1px;height:64px;';
const mrBar = document.createElement('div');
mrBar.style.cssText = `width:100%;flex:1;background:rgba(26,115,232,${0.2 + mrV * 0.6});border-radius:2px 2px 0 0;`;
const cBar = document.createElement('div');
cBar.style.cssText = `width:100%;height:${Math.max(2, Math.round(v * 28))}px;background:${isPeak ? '#FF2233' : `rgba(255,34,51,${0.15 + v * 0.5})`};border-radius:0;`;
col.appendChild(mrBar);
col.appendChild(cBar);
chart.appendChild(col);
}
// Smooth scroll
document.querySelectorAll('a[href^="#"]').forEach(a => {
a.addEventListener('click', e => {
const id = a.getAttribute('href').slice(1);
const el = document.getElementById(id);
if(el) { e.preventDefault(); el.scrollIntoView({behavior:'smooth'}); }
});
});
</script>
</body>
</html>