SEOS7 Logo
Subscribe
User User User
Join 15,725+ other loving customers

SEO That Works 24/7

With SEOS7 running, your SEO maintains itself. The plugin continuously detects and fixes issues using AI, so you can focus on your website without worrying about technical SEO problems.

Watch how it works
S7
SEOS7 Hub

Automated Internal Linking

author
author
author

Organic Traffic Growth

GSC Sync

Site Health Score

96% Healthy

Based on technical SEO audit over your entire domain.

Issues Resolved (Autopilot)

Missing Meta Descriptions 3,581
Duplicate H1 Tags 2,105
Missing Alt Text 1,418
Powered by SEOS7

See Zero-Touch SEO in Action

Watch how the plugin automates your entire workflow.

Zero-Touch SEO

The SEOS7 plugin runs silently in the background, automatically pulling issues from GSC and fixing them natively within WordPress.

Smart Link Graphing

Automatically discover and inject highly relevant internal links across your entire content library to build topical authority.

Real-Time Auditing

Continuous crawling detects duplicate titles, missing descriptions, and broken schemas the moment they occur.

Everything We Fix,
Automated.

SEOS7 constantly monitors your WordPress site and instantly resolves these critical technical SEO barriers without your intervention.

Missing Meta Descriptions

Automatically generate and inject high-converting, keyword-rich meta descriptions.

Duplicate H1 Tags

Scans structure and safely downgrades secondary H1s to H2s to maintain perfect hierarchy.

Missing Alt Texts

AI vision rapidly analyzes images and automatically writes descriptive tags for accessibility.

Orphaned Pages

Builds an internal link graph to automatically route authority and link juice directly to orphaned URLs.

Broken Internal Links

Finds 404 links within your content and automatically strips them or redirects them to the closest match.

Missing Title Tags

Detects empty title tags and leverages AI to write a perfect, compelling optimized `` tag.</p> </div> <!-- 7. Short/Thin Content --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-yellow-500/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('thin_content')"> <div class="w-10 h-10 rounded-xl bg-yellow-500/10 flex items-center justify-center mb-4 border border-yellow-500/20 text-yellow-500 shadow-[0_0_15px_rgba(234,179,8,0.1)] group-hover:shadow-[0_0_20px_rgba(234,179,8,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-yellow-400 transition-colors">Short/Thin Content</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Flags pages under 300 words and uses LLMs to expand on the topic without fluff to meet SEO standards.</p> </div> <!-- 8. Keyword Cannibalization --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-pink-500/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('cannibalization')"> <div class="w-10 h-10 rounded-xl bg-pink-500/10 flex items-center justify-center mb-4 border border-pink-500/20 text-pink-400 shadow-[0_0_15px_rgba(236,72,153,0.1)] group-hover:shadow-[0_0_20px_rgba(236,72,153,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-pink-400 transition-colors">Keyword Cannibalization</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Identifies competing pages targeting the exact same term and sets up canonicals to correct the signals.</p> </div> <!-- 9. Missing Schema/JSON-LD --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-emerald-500/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('missing_schema')"> <div class="w-10 h-10 rounded-xl bg-emerald-500/10 flex items-center justify-center mb-4 border border-emerald-500/20 text-emerald-400 shadow-[0_0_15px_rgba(16,185,129,0.1)] group-hover:shadow-[0_0_20px_rgba(16,185,129,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-emerald-400 transition-colors">Missing Schema Markup</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Automatically generates and injects Article, FAQ, or Product JSON-LD schema based on page structure.</p> </div> <!-- 10. URL Too Long --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-cyan-500/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('long_url')"> <div class="w-10 h-10 rounded-xl bg-cyan-500/10 flex items-center justify-center mb-4 border border-cyan-500/20 text-cyan-400 shadow-[0_0_15px_rgba(6,182,212,0.1)] group-hover:shadow-[0_0_20px_rgba(6,182,212,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-cyan-400 transition-colors">URLs Too Long</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Detects newly created slugs that are too long and automatically trims them to focus only on main keywords.</p> </div> <!-- 11. Readability Too Low --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-blue-400/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('low_readability')"> <div class="w-10 h-10 rounded-xl bg-blue-400/10 flex items-center justify-center mb-4 border border-blue-400/20 text-blue-400 shadow-[0_0_15px_rgba(96,165,250,0.1)] group-hover:shadow-[0_0_20px_rgba(96,165,250,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-blue-400 transition-colors">Low Readability Score</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Analyzes Flesch reading scores and refactors dense paragraphs to improve dwell time and UX automatically.</p> </div> <!-- 12. Multiple H2 Structure --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-rose-500/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('bad_h2_structure')"> <div class="w-10 h-10 rounded-xl bg-rose-500/10 flex items-center justify-center mb-4 border border-rose-500/20 text-rose-400 shadow-[0_0_15px_rgba(244,63,94,0.1)] group-hover:shadow-[0_0_20px_rgba(244,63,94,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h8m-8 6h16"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-rose-400 transition-colors">Poor H2 Structure</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Fixes walls of text by automatically breaking them down and injecting semantic, keyword-optimized H2 tags.</p> </div> <!-- 13. Image File Too Large --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-gray-500/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('large_images')"> <div class="w-10 h-10 rounded-xl bg-gray-500/10 flex items-center justify-center mb-4 border border-gray-500/20 text-gray-400 shadow-[0_0_15px_rgba(156,163,175,0.1)] group-hover:shadow-[0_0_20px_rgba(156,163,175,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-gray-300 transition-colors">Uncompressed Images</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Detects large images killing your page speed and auto-converts them to WebP while losslessy compressing them.</p> </div> <!-- 14. Missing Social Open Graph --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-[#1DA1F2]/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('missing_og')"> <div class="w-10 h-10 rounded-xl bg-[#1DA1F2]/10 flex items-center justify-center mb-4 border border-[#1DA1F2]/20 text-[#1DA1F2] shadow-[0_0_15px_rgba(29,161,242,0.1)] group-hover:shadow-[0_0_20px_rgba(29,161,242,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.368 2.684 3 3 0 00-5.368-2.684z"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-[#1DA1F2] transition-colors">Missing Social Cards (OG)</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Automatically populates og:image, og:title, and twitter:cards so your links look perfect when shared on social.</p> </div> <!-- 15. Broken External Links --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-red-600/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('broken_external')"> <div class="w-10 h-10 rounded-xl bg-red-600/10 flex items-center justify-center mb-4 border border-red-600/20 text-red-500 shadow-[0_0_15px_rgba(220,38,38,0.1)] group-hover:shadow-[0_0_20px_rgba(220,38,38,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-red-400 transition-colors">Broken External Links</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Constantly pings external links. If an authority link breaks (404s), SEOS7 automatically unlinks the anchor text to protect site health.</p> </div> <!-- 16. Pagination Errors --> <div class="glass-panel p-6 text-left border border-gray-800 hover:border-lime-500/50 transition-all duration-300 cursor-pointer group rounded-xl bg-[#0B0F19]" onclick="openIssueModal('pagination_errors')"> <div class="w-10 h-10 rounded-xl bg-lime-500/10 flex items-center justify-center mb-4 border border-lime-500/20 text-lime-400 shadow-[0_0_15px_rgba(132,204,22,0.1)] group-hover:shadow-[0_0_20px_rgba(132,204,22,0.3)] transition-all"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/></svg> </div> <h4 class="text-base font-bold text-white mb-2 tracking-tight group-hover:text-lime-400 transition-colors">Rel Next/Prev Errors</h4> <p class="text-xs text-gray-400 leading-relaxed font-medium">Automatically corrects broken pagination structures on large category pages to ensure crawlers can reach deep content.</p> </div> </div> </section> <!-- Bottom CTA --> <section class="w-full relative z-10 py-24 border-t border-gray-800 bg-[#030610]"> <div class="max-w-4xl mx-auto px-6 text-center"> <h2 class="text-4xl font-extrabold text-white mb-6">Ready to put your SEO on autopilot?</h2> <p class="text-xl text-gray-400 mb-10">Stop wasting time manually fixing technical issues. Let SEOS7 handle it 24/7.</p> <div class="flex flex-col sm:flex-row justify-center items-center gap-4"> <button class="bg-[#0066FF] hover:bg-[#0052cc] text-white font-bold text-lg px-10 py-4 rounded-full transition-all shadow-[0_0_20px_rgba(0,102,255,0.4)] w-full sm:w-auto"> Get the Plugin </button> <button class="bg-transparent hover:bg-gray-800 text-white font-bold text-lg px-10 py-4 rounded-full border border-gray-700 transition-all w-full sm:w-auto"> View Documentation </button> </div> </div> </section> <!-- Modal: The 24/7 Agent Concept --> <div id="agent-modal" class="fixed inset-0 z-50 flex items-center justify-center modal-overlay"> <!-- Backdrop --> <div class="absolute inset-0 bg-[#040914]/80 transition-opacity" onclick="closeModal()"></div> <!-- Modal Panel --> <div class="relative w-[95%] max-w-4xl bg-[#0d1323] border border-gray-700/50 rounded-2xl shadow-2xl modal-content overflow-hidden flex flex-col md:flex-row shadow-[0_0_50px_rgba(0,102,255,0.15)]"> <button onclick="closeModal()" class="absolute top-4 right-4 z-10 text-gray-400 hover:text-white bg-black/20 p-2 rounded-full backdrop-blur-sm transition hover:bg-black/40"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg> </button> <!-- Left Image/Graphic Side --> <div class="w-full md:w-2/5 md:min-h-[400px] bg-gradient-to-br from-[#0c1631] to-[#040914] p-8 flex flex-col justify-between border-b md:border-b-0 md:border-r border-gray-800"> <div> <div class="w-12 h-12 bg-[#0066FF]/20 rounded-xl flex items-center justify-center mb-6 border border-[#0066FF]/30"> <svg class="w-6 h-6 text-[#3385ff]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"/></svg> </div> <h3 class="text-3xl font-bold text-white mb-3">Zero-Touch <span class="text-[#0066FF]">Plugin</span></h3> <p class="text-sm text-gray-400 leading-relaxed font-medium">The SEOS7 WordPress Plugin integrates directly into your core, constantly mapping URLs, images, and HTML syntax to ensure optimal technical hygiene and higher rankings. 24/7 without manual intervention.</p> </div> <div class="mt-8 text-xs text-blue-300 font-medium bg-[#0066FF]/10 py-3 px-4 rounded border border-[#0066FF]/20 flex items-center shadow-inner"> <span class="flex items-center gap-2"><span class="w-2.5 h-2.5 rounded-full bg-blue-400 animate-pulse"></span> WP Core Connected & Scanning</span> </div> </div> <!-- Right Details Side --> <div class="w-full md:w-3/5 p-8 md:p-10 bg-[#0b101d]"> <h4 class="text-xs font-bold tracking-[0.2em] text-gray-500 uppercase mb-6 flex justify-between items-center"> <span>Core Engine Capabilities</span> <span class="bg-gray-800 text-gray-300 px-2 py-0.5 rounded text-[10px]">v7.0.6</span> </h4> <div class="space-y-6"> <!-- Feature 1 --> <div class="flex gap-4"> <div class="mt-1 w-10 h-10 rounded-full bg-indigo-500/10 flex items-center justify-center flex-shrink-0 border border-indigo-500/20 text-indigo-400"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg> </div> <div> <h5 class="text-base font-semibold text-white">Full Site Audit & Schema</h5> <p class="text-sm text-gray-400 mt-1 leading-relaxed">Crawls your pages to detect duplicate titles, missing descriptions, unoptimized images, and broken schemas in real-time.</p> </div> </div> <!-- Feature 2 --> <div class="flex gap-4"> <div class="mt-1 w-10 h-10 rounded-full bg-blue-500/10 flex items-center justify-center flex-shrink-0 border border-blue-500/20 text-blue-400"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"/></svg> </div> <div> <h5 class="text-base font-semibold text-white">1-Click AI Fixes</h5> <p class="text-sm text-gray-400 mt-1 leading-relaxed">Found an issue? The built-in AI Optimizer writes meta content, optimizes alt-texts, and removes duplicate headers instantly.</p> </div> </div> <!-- Feature 3 --> <div class="flex gap-4"> <div class="mt-1 w-10 h-10 rounded-full bg-purple-500/10 flex items-center justify-center flex-shrink-0 border border-purple-500/20 text-purple-400"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"/></svg> </div> <div> <h5 class="text-base font-semibold text-white">Smart Internal Linking</h5> <p class="text-sm text-gray-400 mt-1 leading-relaxed">Build topical authority. SEOS7 scans your content and links related pages using semantic AI matching.</p> </div> </div> </div> <div class="mt-10 flex flex-col sm:flex-row gap-4 border-t border-gray-800 pt-6"> <button class="bg-[#0066FF] hover:bg-[#0052cc] text-white px-6 py-3 rounded-lg font-medium transition shadow-[0_0_15px_rgba(0,102,255,0.4)] w-full sm:w-auto text-center" onclick="closeModal()"> Get Plugin Now </button> <button class="bg-transparent hover:bg-gray-800 text-gray-300 border border-gray-700 px-6 py-3 rounded-lg font-medium transition w-full sm:w-auto text-center" onclick="closeModal()"> View Dashboard Log </button> </div> </div> </div> </div> <!-- Generic Issue Modal --> <div id="issue-modal" class="fixed inset-0 z-[60] flex items-center justify-center opacity-0 pointer-events-none transition-opacity duration-300"> <!-- Backdrop --> <div class="absolute inset-0 bg-[#040914]/90 backdrop-blur-sm transition-opacity" onclick="closeIssueModal()"></div> <!-- Modal Panel --> <div id="issue-modal-content" class="relative w-[90%] max-w-2xl bg-[#0d1323] border border-gray-700/50 rounded-2xl shadow-2xl modal-content overflow-hidden flex flex-col shadow-[0_0_50px_rgba(0,102,255,0.15)] ring-1 ring-white/10 transform scale-95 opacity-0 transition-all duration-300"> <button onclick="closeIssueModal()" class="absolute top-4 right-4 z-20 text-gray-400 hover:text-white bg-black/20 p-2 rounded-full backdrop-blur-sm transition hover:bg-black/40"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg> </button> <!-- Header --> <div class="bg-gradient-to-r from-[#0c1631] to-[#040914] p-6 border-b border-gray-800 flex items-center gap-4 relative z-10"> <div class="w-10 h-10 rounded-xl bg-[#0066FF]/20 flex items-center justify-center border border-[#0066FF]/30 text-blue-400" id="issue-icon"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"/></svg> </div> <h3 class="text-2xl font-bold text-white flex-1 tracking-tight" id="issue-title">Issue Details</h3> <span class="bg-green-500/10 text-green-400 px-3 py-1 rounded-full text-xs font-bold uppercase tracking-wider border border-green-500/20 flex items-center gap-1.5 shadow-[0_0_10px_rgba(34,197,94,0.1)]"> <span class="w-1.5 h-1.5 rounded-full bg-green-500 animate-pulse"></span> Automated Fix </span> </div> <!-- Content --> <div class="p-6 md:p-8 space-y-6 bg-[#0a0d18] relative"> <!-- Inner grid subtle lines --> <div class="absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.02)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.02)_1px,transparent_1px)] bg-[size:20px_20px] pointer-events-none"></div> <div class="relative z-10 grid grid-cols-1 md:grid-cols-2 gap-6"> <!-- The Problem --> <div class="bg-[#12182b]/80 border border-red-500/20 rounded-xl p-5 shadow-inner"> <h4 class="text-xs font-bold uppercase text-red-400 tracking-wider mb-3 flex items-center gap-2"> <svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/></svg> The Problem </h4> <p class="text-sm text-gray-300 leading-relaxed font-medium" id="issue-problem">Problem description goes here.</p> </div> <!-- The Fix --> <div class="bg-[#12182b]/80 border border-green-500/20 rounded-xl p-5 shadow-inner"> <h4 class="text-xs font-bold uppercase text-green-400 tracking-wider mb-3 flex items-center gap-2"> <svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg> SEOS7 Solution </h4> <p class="text-sm text-gray-300 leading-relaxed font-medium" id="issue-solution">Solution description goes here.</p> </div> </div> <div class="relative z-10 bg-[#0F1424] border border-gray-700/50 rounded-lg p-4 mt-6 flex items-center justify-between shadow-inner"> <div> <div class="text-[10px] text-gray-500 font-bold uppercase tracking-wider mb-1">Estimated Time Saved</div> <div class="text-white font-bold tracking-tight text-lg" id="issue-time">~4.5 Hours / mo</div> </div> <button class="bg-[#1e293b] hover:bg-[#334155] border border-gray-600/50 text-white text-sm font-medium px-5 py-2.5 rounded-lg transition-colors focus:ring-2 focus:ring-gray-500 focus:outline-none" onclick="closeIssueModal()">Close Details</button> </div> </div> </div> </div> <script> // Modal Logic const modal = document.getElementById('agent-modal'); const analyzeBtn = document.getElementById('analyze-btn'); const domainInput = document.getElementById('domain-input'); if (analyzeBtn) { analyzeBtn.addEventListener('click', () => { const inputVal = domainInput.value; if(inputVal.trim() === '') { // Flash red state const wrapper = document.querySelector('.glow-input-wrapper'); wrapper.style.boxShadow = '0 0 20px rgba(239, 68, 68, 0.6)'; setTimeout(() => { wrapper.style.boxShadow = '0 0 20px var(--glow-color)'; }, 500); } else { if (modal) modal.classList.add('active'); } }); } if (domainInput) { domainInput.addEventListener('keypress', (e) => { if(e.key === 'Enter') { if (analyzeBtn) analyzeBtn.click(); } }); } function closeModal() { if (modal) modal.classList.remove('active'); } // Close on esc key document.addEventListener('keydown', (e) => { if(e.key === 'Escape') { if(modal && modal.classList.contains('active')) closeModal(); closeIssueModal(); } }); // Issue Modal Logic const issueData = { 'missing_meta': { title: 'Missing Meta Descriptions', problem: 'Pages without meta descriptions let Google arbitrarily choose snippets, leading to poor CTR in search results.', solution: 'SEOS7 automatically drafts and injects high-converting, keyword-optimized descriptions directly into the database for any post lacking one.', time: '~12.5 Hours / mo', colorClass: 'text-blue-400', borderClass: 'border-blue-500/30' }, 'duplicate_h1': { title: 'Duplicate H1 Tags', problem: 'Multiple H1 tags confuse search engine crawlers regarding the primary topic of the page, leading to cannibalization.', solution: 'The plugin automatically identifies secondary H1 tags and safely downgrades them to H2 tags to maintain perfect semantic hierarchy.', time: '~4.2 Hours / mo', colorClass: 'text-purple-400', borderClass: 'border-purple-500/30' }, 'missing_alt': { title: 'Missing Alt Text', problem: 'Images without alt texts forfeit valuable Google Image Search traffic and harm overall accessibility scores.', solution: 'SEOS7 scans your media library, uses AI vision to understand the image, and writes descriptive alt tags instantly.', time: '~16.0 Hours / mo', colorClass: 'text-teal-400', borderClass: 'border-teal-500/30' }, 'orphaned_pages': { title: 'Orphaned Pages', problem: 'Pages without inbound internal links are completely invisible to search engines and waste crawl budget.', solution: 'SEOS7 constructs a semantic link graph to automatically route relevant internal authority to stranded URLs.', time: '~8.5 Hours / mo', colorClass: 'text-orange-400', borderClass: 'border-orange-500/30' }, 'broken_links': { title: 'Broken Internal Links', problem: '404 internal links create dead ends for both users and search bots, drastically harming site-wide authority flow.', solution: 'The system continuously monitors link status, stripping dead anchor texts or intelligently redirecting to the closest relevant page.', time: '~6.0 Hours / mo', colorClass: 'text-red-500', borderClass: 'border-red-500/30' }, 'missing_title': { title: 'Missing Title Tags', problem: 'Empty or default title tags (like "Home" or "Untitled") are the single biggest missed opportunity for organic ranking power.', solution: 'Whenever an empty tag is detected, the AI generates a compelling, length-optimized `<title>` based on the page content.', time: '~3.5 Hours / mo', colorClass: 'text-indigo-400', borderClass: 'border-indigo-500/30' }, 'thin_content': { title: 'Short/Thin Content', problem: 'Google Panda actively penalizes sites with a high percentage of low-word-count, thin pages lacking deep substance.', solution: 'SEOS7 flags pages under an acceptable threshold and utilizes LLMs to meaningfully expand on the topic without inserting fluff.', time: '~24.0 Hours / mo', colorClass: 'text-yellow-500', borderClass: 'border-yellow-500/30' }, 'cannibalization': { title: 'Keyword Cannibalization', problem: 'When multiple pages compete for the exact same search term, Google gets confused and ranks none of them highly.', solution: 'The agent identifies conflicting pages and establishes proper canonical tags or consolidation recommendations automatically.', time: '~10.0 Hours / mo', colorClass: 'text-pink-400', borderClass: 'border-pink-500/30' }, 'missing_schema': { title: 'Missing Schema Markup', problem: 'Without JSON-LD structured data, your site cannot qualify for high-visibility Rich Snippets in the SERPs.', solution: 'The plugin automatically structures and injects perfect Article, Product, or FAQ schema code based on the layout context.', time: '~18.0 Hours / mo', colorClass: 'text-emerald-400', borderClass: 'border-emerald-500/30' }, 'long_url': { title: 'URLs Too Long', problem: 'Lengthy slugs filled with stop words dilute keyword focus and look messy when shared on social media or search results.', solution: 'The system automatically trims and standardizes newly generated URLs to strip stop words and focus entirely on the core entity.', time: '~2.0 Hours / mo', colorClass: 'text-cyan-400', borderClass: 'border-cyan-500/30' }, 'low_readability': { title: 'Low Readability Score', problem: 'Dense, academic "Walls of Text" significantly lower user dwell time and increase bounce rates, signaling poor UX to Google.', solution: 'SEOS7 analyzes paragraph density and dynamically refactors text chunks into scannable, Flesch-optimized formats.', time: '~14.5 Hours / mo', colorClass: 'text-blue-400', borderClass: 'border-blue-400/30' }, 'bad_h2_structure': { title: 'Poor H2 Structure', problem: 'Content missing proper semantic subheadings makes it difficult for algorithms to understand the structural context of the page.', solution: 'The AI safely parses dense sections and injects relevant, highly engaging H2 headings that naturally segment the article.', time: '~9.0 Hours / mo', colorClass: 'text-rose-400', borderClass: 'border-rose-500/30' }, 'large_images': { title: 'Uncompressed Images', problem: 'Massive raw image files absolutely destroy page load speeds and crucial Core Web Vitals (LCP) scores.', solution: 'Assets are automatically intercepted, compressed losslessly, and converted to next-generation formats (like WebP) on the fly.', time: '~11.0 Hours / mo', colorClass: 'text-gray-400', borderClass: 'border-gray-500/30' }, 'missing_og': { title: 'Missing Social Cards (OG)', problem: 'Links shared on Twitter, LinkedIn, or Facebook without social tags appear broken and generate near-zero click-through rates.', solution: 'SEOS7 automatically drafts engaging og:titles, descriptions, and associates relevant featured images for perfect social sharing.', time: '~5.5 Hours / mo', colorClass: 'text-[#1DA1F2]', borderClass: 'border-[#1DA1F2]/30' }, 'broken_external': { title: 'Broken External Links', problem: 'Linking out to defunct domain resources (404s) signals poor editorial standards and harms your site\'s outgoing trust flow.', solution: 'A background cron consistently pings outbound links; if a linked authority site breaks, SEOS7 automatically unlinks the anchor.', time: '~7.0 Hours / mo', colorClass: 'text-red-500', borderClass: 'border-red-600/30' }, 'pagination_errors': { title: 'Rel Next/Prev Errors', problem: 'Broken pagination chains explicitly trap crawler bots, preventing deep category and archive content from ever being indexed.', solution: 'The crawler validates semantic pagination relationships and automatically repairs broken rel="next" / rel="prev" header tags.', time: '~3.0 Hours / mo', colorClass: 'text-lime-400', borderClass: 'border-lime-500/30' } }; const issueModal = document.getElementById('issue-modal'); const issueModalContent = document.getElementById('issue-modal-content'); function openIssueModal(issueKey) { const data = issueData[issueKey]; if(!data || !issueModal) return; document.getElementById('issue-title').innerText = data.title; document.getElementById('issue-problem').innerText = data.problem; document.getElementById('issue-solution').innerText = data.solution; document.getElementById('issue-time').innerText = data.time; // Handle Icon and Colors const clickedElement = event.currentTarget; const sourceIconContainer = clickedElement.querySelector('div.w-10'); const targetIconContainer = document.getElementById('issue-icon'); if (sourceIconContainer && targetIconContainer) { // Copy the exact SVG HTML targetIconContainer.innerHTML = sourceIconContainer.innerHTML; // Reset classes, then apply base structure plus specific colors targetIconContainer.className = 'w-10 h-10 rounded-xl flex items-center justify-center border'; // Construct the classes based on the data object const colorClass = data.colorClass || 'text-blue-400'; const borderClass = data.borderClass || 'border-blue-500/30'; // Extract base color name (e.g., 'blue', 'red', 'teal') from text-color-400 const colorMatch = colorClass.match(/text-([a-z]+)-/); const baseColor = colorMatch ? colorMatch[1] : 'blue'; const bgClass = `bg-${baseColor}-500/20`; // Try to add the specific background, if not default to generic white tint try { targetIconContainer.classList.add(...colorClass.split(' '), ...borderClass.split(' '), bgClass); } catch(e) { targetIconContainer.classList.add(colorClass, borderClass, 'bg-white/10'); } } // Show container issueModal.classList.remove('opacity-0', 'pointer-events-none'); // Animate content scale setTimeout(() => { issueModalContent.classList.remove('scale-95', 'opacity-0'); issueModalContent.classList.add('scale-100', 'opacity-100'); }, 10); } function closeIssueModal() { if(!issueModal) return; issueModalContent.classList.remove('scale-100', 'opacity-100'); issueModalContent.classList.add('scale-95', 'opacity-0'); setTimeout(() => { issueModal.classList.add('opacity-0', 'pointer-events-none'); }, 300); // Wait for transition } // Initialize Chart.js for Organic Traffic if(typeof Chart !== 'undefined') { const chartCanvas = document.getElementById('trafficChart'); if (chartCanvas) { const ctx = chartCanvas.getContext('2d'); // Create gradient let gradient = ctx.createLinearGradient(0, 0, 0, 150); gradient.addColorStop(0, 'rgba(0, 102, 255, 0.8)'); gradient.addColorStop(1, 'rgba(0, 102, 255, 0.1)'); new Chart(ctx, { type: 'bar', data: { labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], datasets: [{ label: 'Traffic', data: [1200, 1500, 1800, 2200, 2800, 3100, 4200, 5600, 7100, 8900, 11200, 14500], backgroundColor: gradient, borderRadius: 4, borderSkipped: false, barPercentage: 0.7, }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false }, tooltip: { backgroundColor: 'rgba(15, 23, 42, 0.95)', titleColor: '#fff', bodyColor: '#cbd5e1', borderColor: 'rgba(0,102,255,0.3)', borderWidth: 1, padding: 12, displayColors: false, callbacks: { label: function(context) { return context.raw.toLocaleString() + ' hits'; } } } }, scales: { x: { display: false }, y: { display: false, beginAtZero: true } }, animation: { duration: 2500, easing: 'easeOutQuart' }, interaction: { mode: 'index', intersect: false, } } }); } } </script> </body> </html>