Content SEO Optimizer
Word Count
0
Keyword Density
0%
Reading Time
0m
function runSeoAnalysis() {
var content = document.getElementById('seo_content').value;
var keyword = document.getElementById('focus_keyword').value.toLowerCase();
var resultsDiv = document.getElementById('seo_results');
var checklist = document.getElementById('seo_checklist');
if (!content) {
alert('Please enter content to analyze.');
return;
}
resultsDiv.style.display = 'block';
var words = content.trim().split(/\s+/).filter(function(w){ return w.length > 0; });
var wordCount = words.length;
var keywordCount = 0;
if (keyword) {
var regex = new RegExp('\\b' + keyword + '\\b', 'gi');
var matches = content.match(regex);
keywordCount = matches ? matches.length : 0;
}
var density = wordCount > 0 ? ((keywordCount / wordCount) * 100).toFixed(2) : 0;
var readTime = Math.ceil(wordCount / 200);
document.getElementById('res_words').innerText = wordCount;
document.getElementById('res_density').innerText = density + '%';
document.getElementById('res_time').innerText = readTime + 'm';
var checks = [
{
label: 'Word count is over 300 (ideal for SEO)',
pass: wordCount >= 300
},
{
label: 'Keyword density is between 0.5% and 2.5%',
pass: (density >= 0.5 && density 0
},
{
label: 'Content has paragraph breaks',
pass: content.includes('\n')
}
];
checklist.innerHTML = ";
for (var i = 0; i < checks.length; i++) {
var li = document.createElement('li');
li.style.padding = '8px 0';
li.style.borderBottom = '1px solid #f1f5f9';
li.style.display = 'flex';
li.style.alignItems = 'center';
var icon = checks[i].pass ? '✅' : '⚠️';
var color = checks[i].pass ? '#15803d' : '#b91c1c';
li.innerHTML = '
' + icon + '' + checks[i].label + '';
checklist.appendChild(li);
}
}