Skip to content

Instantly share code, notes, and snippets.

@codingdudecom
Created September 17, 2026 07:41
Show Gist options
  • Select an option

  • Save codingdudecom/632eb117bd3ce52ef586c7a4f9a9c524 to your computer and use it in GitHub Desktop.

Select an option

Save codingdudecom/632eb117bd3ce52ef586c7a4f9a9c524 to your computer and use it in GitHub Desktop.
Keywords Counter
<p>
Drag this to your bookmarks:
<a href="javascript:(function(){var e=document.getElementById('kw-checker-overlay');if(e)e.remove();var p=document.body.innerText;var o=document.createElement('div');o.id='kw-checker-overlay';Object.assign(o.style,{position:'fixed',top:'0',left:'0',width:'100vw',height:'100vh',backgroundColor:'rgba(0,0,0,0.55)',display:'flex',alignItems:'center',justifyContent:'center',zIndex:'99999999',fontFamily:'system-ui,-apple-system,sans-serif',fontSize:'14px',color:'rgb(31,41,55)'});var m=document.createElement('div');Object.assign(m.style,{backgroundColor:'rgb(255,255,255)',borderRadius:'10px',width:'560px',maxWidth:'92vw',maxHeight:'85vh',display:'flex',flexDirection:'column',boxShadow:'0 20px 40px rgba(0,0,0,0.3)',overflow:'hidden'});o.appendChild(m);function escH(s){var d=document.createElement('div');d.textContent=s;return d.innerHTML;}function inView(prev){prev=prev||'';m.innerHTML='<div style=\'padding:16px 20px;border-bottom:1px solid rgb(229,231,235);display:flex;justify-content:space-between;align-items:center;\'><h3 style=\'margin:0;font-size:16px;font-weight:600;\'>Keyword Density Checker</h3><button id=\'kw-c-btn\' style=\'background:none;border:none;font-size:22px;cursor:pointer;color:rgb(156,163,175);line-height:1;\'>&times;</button></div><div style=\'padding:20px;display:flex;flex-direction:column;gap:8px;\'><label style=\'font-weight:500;font-size:13px;color:rgb(75,85,99);\'>Paste keywords (one per line):</label><textarea id=\'kw-in\' placeholder=\'Enter keywords...\' style=\'width:100%;height:240px;padding:10px;border:1px solid rgb(209,213,219);border-radius:6px;resize:vertical;box-sizing:border-box;font-family:monospace;font-size:13px;line-height:1.5;\'></textarea></div><div style=\'padding:12px 20px;border-top:1px solid rgb(229,231,235);background:rgb(249,250,251);display:flex;justify-content:flex-end;gap:10px;\'><button id=\'kw-can-btn\' style=\'padding:8px 16px;border:1px solid rgb(209,213,219);background:rgb(255,255,255);border-radius:6px;cursor:pointer;font-weight:500;\'>Cancel</button><button id=\'kw-go-btn\' style=\'padding:8px 18px;border:none;background:rgb(37,99,235);color:rgb(255,255,255);border-radius:6px;cursor:pointer;font-weight:500;\'>Count Keywords</button></div>';m.querySelector('#kw-c-btn').onclick=function(){o.remove();};m.querySelector('#kw-can-btn').onclick=function(){o.remove();};var ta=m.querySelector('#kw-in');ta.value=prev;ta.focus();m.querySelector('#kw-go-btn').onclick=function(){var raw=ta.value;var lines=raw.split('\n').map(function(s){return s.trim();}).filter(Boolean);if(!lines.length){alert('Please enter at least one keyword.');return;}var u=[...new Set(lines)];var escRe=function(s){return s.replace(/[.*+?^${}()|[\\]\\\\]/g,'\\$&');};var res=u.map(function(k){var matches=p.match(new RegExp(escRe(k),'gi'));return{kw:k,cnt:matches?matches.length:0};});res.sort(function(a,b){return b.cnt-a.cnt;});resView(res,raw);};}function resView(res,raw){var found=res.filter(function(r){return r.cnt>0;}).length;var total=res.reduce(function(a,r){return a+r.cnt;},0);var rows=res.map(function(r){var bg=r.cnt>0?'background:rgb(240,253,244);':'';var col=r.cnt>0?'rgb(21,128,61)':'rgb(107,114,128)';var bBg=r.cnt>0?'background:rgb(187,247,208);color:rgb(22,101,52);':'background:rgb(243,244,246);color:rgb(156,163,175);';return'<tr style=\'border-bottom:1px solid rgb(243,244,246);'+bg+'\'><td style=\'padding:9px 14px;color:'+col+';font-weight:'+(r.cnt>0?'600':'normal')+';word-break:break-word;\'>'+escH(r.kw)+'</td><td style=\'padding:9px 14px;text-align:right;\'><span style=\'display:inline-block;padding:2px 8px;border-radius:12px;font-weight:600;font-size:12px;'+bBg+'\'>'+r.cnt+'</span></td></tr>';}).join('');m.innerHTML='<div style=\'padding:16px 20px;border-bottom:1px solid rgb(229,231,235);display:flex;justify-content:space-between;align-items:center;\'><div><h3 style=\'margin:0;font-size:16px;font-weight:600;\'>Keyword Occurrences</h3><p style=\'margin:3px 0 0;font-size:12px;color:rgb(107,114,128);\'>Found <b>'+found+'</b> of <b>'+res.length+'</b> keywords ('+total+' total matches)</p></div><button id=\'kw-c-btn2\' style=\'background:none;border:none;font-size:22px;cursor:pointer;color:rgb(156,163,175);line-height:1;\'>&times;</button></div><div style=\'overflow-y:auto;max-height:55vh;\'><table style=\'width:100%;border-collapse:collapse;text-align:left;font-size:13px;\'><thead style=\'position:sticky;top:0;background:rgb(249,250,251);border-bottom:1px solid rgb(229,231,235);\'><tr><th style=\'padding:10px 14px;font-weight:600;color:rgb(75,85,99);\'>Keyword</th><th style=\'padding:10px 14px;font-weight:600;color:rgb(75,85,99);text-align:right;\'>Count</th></tr></thead><tbody>'+rows+'</tbody></table></div><div style=\'padding:12px 20px;border-top:1px solid rgb(229,231,235);background:rgb(249,250,251);display:flex;justify-content:space-between;align-items:center;\'><button id=\'kw-back-btn\' style=\'padding:8px 14px;border:1px solid rgb(209,213,219);background:rgb(255,255,255);border-radius:6px;cursor:pointer;font-weight:500;\'>&larr; Edit Keywords</button><button id=\'kw-done-btn\' style=\'padding:8px 18px;border:none;background:rgb(37,99,235);color:rgb(255,255,255);border-radius:6px;cursor:pointer;font-weight:500;\'>Done</button></div>';m.querySelector('#kw-c-btn2').onclick=function(){o.remove();};m.querySelector('#kw-done-btn').onclick=function(){o.remove();};m.querySelector('#kw-back-btn').onclick=function(){inView(raw);};}inView();document.body.appendChild(o);})();"
style="display: inline-block; padding: 6px 12px; background: #2563eb; color: #fff; text-decoration: none; border-radius: 4px; font-weight: bold; font-family: sans-serif;">
count keywords
</a>
</p>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment