Script Keyword Shitter, bisa di pakai di localhost namun harus tetap online karena mengambil dari google suggest.
<!DOCTYPE html>
<html>
<title>Keyword Shitter - The Bulk Keyword Tool</title>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<style>
@charset "UTF-8";
/*-----------------------------------*
$TOAST-GRID
An insane grid.
You'd be mad to use it.
Usage
=====
Assuming default values:
<div class="grid">
<div class="grid__col grid__col--1-of-2">
A half-width column.
</div>
<div class="grid__col grid__col--1-of-4 grid__col--pull-1-of-4">
A quarter, pulled left by its own width. You get this, right?
</div>
</div>
Customisation
=============
$grid-namespace and $grid-column-namespace
adjusts the class names for the grid. With
default values, grid wrappers have a class
of '.grid' and columns '.grid__col'.
$col-groups(n) adjusts column divisions.
For example, $col-groups(12) will produce
a 12-column grid. $col-groups(3,6,8)
will produce a 3-, 6-, and 8-column grid.
$gutter-width is—you guessed it—the gutter
width. Accepts any unit.
That's it. Have fun.
*-----------------------------------*/
.grid {
list-style: none;
margin-left: -20px; }
.grid > .grid__col--2-of-2, .grid > .grid__col--3-of-3, .grid > .grid__col--4-of-4, .grid > .grid__col--5-of-5, .grid > .grid__col--6-of-6, .grid > .grid__col--8-of-8, .grid > .grid__col--12-of-12 {
width: 100%; }
.grid > .grid__col--1-of-2, .grid > .grid__col--2-of-4, .grid > .grid__col--3-of-6, .grid > .grid__col--4-of-8, .grid > .grid__col--6-of-12 {
width: 50%; }
.grid > .grid__col--1-of-3, .grid > .grid__col--2-of-6, .grid > .grid__col--4-of-12 {
width: 33.33333%; }
.grid > .grid__col--2-of-3, .grid > .grid__col--4-of-6, .grid > .grid__col--8-of-12 {
width: 66.66667%; }
.grid > .grid__col--1-of-4, .grid > .grid__col--2-of-8, .grid > .grid__col--3-of-12 {
width: 25%; }
.grid > .grid__col--3-of-4, .grid > .grid__col--6-of-8, .grid > .grid__col--9-of-12 {
width: 75%; }
.grid > .grid__col--push-2-of-2, .grid > .grid__col--push-3-of-3, .grid > .grid__col--push-4-of-4, .grid > .grid__col--push-5-of-5, .grid > .grid__col--push-6-of-6, .grid > .grid__col--push-8-of-8, .grid > .grid__col--push-12-of-12 {
margin-left: 100%; }
.grid > .grid__col--push-1-of-2, .grid > .grid__col--push-2-of-4, .grid > .grid__col--push-3-of-6, .grid > .grid__col--push-4-of-8, .grid > .grid__col--push-6-of-12 {
margin-left: 50%; }
.grid > .grid__col--push-1-of-3, .grid > .grid__col--push-2-of-6, .grid > .grid__col--push-4-of-12 {
margin-left: 33.33333%; }
.grid > .grid__col--push-2-of-3, .grid > .grid__col--push-4-of-6, .grid > .grid__col--push-8-of-12 {
margin-left: 66.66667%; }
.grid > .grid__col--push-1-of-4, .grid > .grid__col--push-2-of-8, .grid > .grid__col--push-3-of-12 {
margin-left: 25%; }
.grid > .grid__col--push-3-of-4, .grid > .grid__col--push-6-of-8, .grid > .grid__col--push-9-of-12 {
margin-left: 75%; }
.grid > .grid__col--pull-2-of-2, .grid > .grid__col--pull-3-of-3, .grid > .grid__col--pull-4-of-4, .grid > .grid__col--pull-5-of-5, .grid > .grid__col--pull-6-of-6, .grid > .grid__col--pull-8-of-8, .grid > .grid__col--pull-12-of-12 {
margin-left: -100%; }
.grid > .grid__col--pull-1-of-2, .grid > .grid__col--pull-2-of-4, .grid > .grid__col--pull-3-of-6, .grid > .grid__col--pull-4-of-8, .grid > .grid__col--pull-6-of-12 {
margin-left: -50%; }
.grid > .grid__col--pull-1-of-3, .grid > .grid__col--pull-2-of-6, .grid > .grid__col--pull-4-of-12 {
margin-left: -33.33333%; }
.grid > .grid__col--pull-2-of-3, .grid > .grid__col--pull-4-of-6, .grid > .grid__col--pull-8-of-12 {
margin-left: -66.66667%; }
.grid > .grid__col--pull-1-of-4, .grid > .grid__col--pull-2-of-8, .grid > .grid__col--pull-3-of-12 {
margin-left: -25%; }
.grid > .grid__col--pull-3-of-4, .grid > .grid__col--pull-6-of-8, .grid > .grid__col--pull-9-of-12 {
margin-left: -75%; }
.grid > .grid__col--1-of-5 {
width: 20%; }
.grid > .grid__col--push-1-of-5 {
margin-left: 20%; }
.grid > .grid__col--pull-1-of-5 {
margin-left: -20%; }
.grid > .grid__col--2-of-5 {
width: 40%; }
.grid > .grid__col--push-2-of-5 {
margin-left: 40%; }
.grid > .grid__col--pull-2-of-5 {
margin-left: -40%; }
.grid > .grid__col--3-of-5 {
width: 60%; }
.grid > .grid__col--push-3-of-5 {
margin-left: 60%; }
.grid > .grid__col--pull-3-of-5 {
margin-left: -60%; }
.grid > .grid__col--4-of-5 {
width: 80%; }
.grid > .grid__col--push-4-of-5 {
margin-left: 80%; }
.grid > .grid__col--pull-4-of-5 {
margin-left: -80%; }
.grid > .grid__col--1-of-6 {
width: 16.66667%; }
.grid > .grid__col--push-1-of-6 {
margin-left: 16.66667%; }
.grid > .grid__col--pull-1-of-6 {
margin-left: -16.66667%; }
.grid > .grid__col--5-of-6 {
width: 83.33333%; }
.grid > .grid__col--push-5-of-6 {
margin-left: 83.33333%; }
.grid > .grid__col--pull-5-of-6 {
margin-left: -83.33333%; }
.grid > .grid__col--1-of-8 {
width: 12.5%; }
.grid > .grid__col--push-1-of-8 {
margin-left: 12.5%; }
.grid > .grid__col--pull-1-of-8 {
margin-left: -12.5%; }
.grid > .grid__col--3-of-8 {
width: 37.5%; }
.grid > .grid__col--push-3-of-8 {
margin-left: 37.5%; }
.grid > .grid__col--pull-3-of-8 {
margin-left: -37.5%; }
.grid > .grid__col--5-of-8 {
width: 62.5%; }
.grid > .grid__col--push-5-of-8 {
margin-left: 62.5%; }
.grid > .grid__col--pull-5-of-8 {
margin-left: -62.5%; }
.grid > .grid__col--7-of-8 {
width: 87.5%; }
.grid > .grid__col--push-7-of-8 {
margin-left: 87.5%; }
.grid > .grid__col--pull-7-of-8 {
margin-left: -87.5%; }
.grid > .grid__col--1-of-12 {
width: 8.33333%; }
.grid > .grid__col--push-1-of-12 {
margin-left: 8.33333%; }
.grid > .grid__col--pull-1-of-12 {
margin-left: -8.33333%; }
.grid > .grid__col--2-of-12 {
width: 16.66667%; }
.grid > .grid__col--push-2-of-12 {
margin-left: 16.66667%; }
.grid > .grid__col--pull-2-of-12 {
margin-left: -16.66667%; }
.grid > .grid__col--5-of-12 {
width: 41.66667%; }
.grid > .grid__col--push-5-of-12 {
margin-left: 41.66667%; }
.grid > .grid__col--pull-5-of-12 {
margin-left: -41.66667%; }
.grid > .grid__col--7-of-12 {
width: 58.33333%; }
.grid > .grid__col--push-7-of-12 {
margin-left: 58.33333%; }
.grid > .grid__col--pull-7-of-12 {
margin-left: -58.33333%; }
.grid > .grid__col--10-of-12 {
width: 83.33333%; }
.grid > .grid__col--push-10-of-12 {
margin-left: 83.33333%; }
.grid > .grid__col--pull-10-of-12 {
margin-left: -83.33333%; }
.grid > .grid__col--11-of-12 {
width: 91.66667%; }
.grid > .grid__col--push-11-of-12 {
margin-left: 91.66667%; }
.grid > .grid__col--pull-11-of-12 {
margin-left: -91.66667%; }
.grid .grid__col {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
display: inline-block;
margin-right: -.25em;
min-height: 1px;
padding-left: 20px;
vertical-align: top; }
@media (max-width: 700px) {
.grid .grid__col {
display: block;
margin-left: 0;
margin-right: 0;
width: auto; } }
@media (max-width: 700px) and (min-width: 480px) {
.grid .grid__col[class*="grid__col--m-"] {
display: inline-block;
margin-right: -.24em; }
.grid .grid__col.grid__col--m-1-of-2, .grid .grid__col.grid__col--m-2-of-4 {
width: 50%; }
.grid .grid__col.grid__col--m-1-of-3 {
width: 33.33333%; }
.grid .grid__col.grid__col--m-2-of-3 {
width: 66.66667%; }
.grid .grid__col.grid__col--m-1-of-4 {
width: 25%; }
.grid .grid__col.grid__col--m-3-of-4 {
width: 75%; } }
@media (max-width: 480px) {
.grid .grid__col[class*="grid__col--s-"] {
display: inline-block;
margin-right: -.24em; }
.grid .grid__col.grid__col--s-1-of-2, .grid .grid__col.grid__col--s-2-of-4 {
width: 50%; }
.grid .grid__col.grid__col--s-1-of-3 {
width: 33.33333%; }
.grid .grid__col.grid__col--s-2-of-3 {
width: 66.66667%; }
.grid .grid__col.grid__col--s-1-of-4 {
width: 25%; }
.grid .grid__col.grid__col--s-3-of-4 {
width: 75%; } }
.grid .grid__col--centered {
display: block;
margin-left: auto;
margin-right: auto; }
.grid .grid__col--d-first {
float: left; }
.grid .grid__col--d-last {
float: right; }
.grid.grid--no-gutter {
margin-left: 0;
width: 100%; }
.grid.grid--no-gutter .grid__col {
padding-left: 0; }
.grid.grid--no-gutter .grid__col--span-all {
margin-left: 0;
width: 100%; }
.grid .grid__col--ab {
vertical-align: bottom; }
.grid .grid__col--am {
vertical-align: middle; }
/*# sourceMappingURL=grid.css.map */
</style>
</head>
<body>
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
<h1>Keyword Generator</h1>
<br>
<div class="grid">
<div class="grid__col grid__col--3-of-9">
<!--<div id="download"><a href="#" onclick="Download()">Download</a></div>-->
<div id="numofkeywords"></div>
<textarea id="input" style="height: 400px; width: 400px"></textarea><br><br>
<input id="startjob" onclick="StartJob();" type="button" value="Shit Keywords!">
<div id="container"></div>
<!-- For debugging -->
<textarea id="queryoutput" style="display:none;"></textarea>
<br>
</div>
<div class="grid__col grid__col--1-of-9" align="left">
<textarea id="filter-positive" rows="4" onkeyup="FilterIfNotWorking()" placeholder="Positive Filter"></textarea>
<br>
<br>
<textarea id="filter-negative" rows="4" onkeyup="FilterIfNotWorking()" placeholder="Negative Filter"></textarea>
</div>
</div>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
var keywordsToDisplay = new Array();
var hashMapResults = {};
var numOfInitialKeywords = 0;
var doWork = false;
var keywordsToQuery = new Array();
var keywordsToQueryIndex = 0;
var queryflag = false;
window.setInterval(DoJob, 750);
function StartJob()
{
if(doWork == false)
{
keywordsToDisplay = new Array();
hashMapResults = {};
keywordsToQuery = new Array();
keywordsToQueryIndex = 0;
hashMapResults[""] = 1;
hashMapResults[" "] = 1;
hashMapResults[" "] = 1;
var ks = $('#input').val().split("n");
var i = 0;
for(i = 0; i < ks.length; i++)
{
keywordsToQuery[keywordsToQuery.length] = ks[i];
keywordsToDisplay[keywordsToDisplay.length] = ks[i];
var j = 0;
for(j = 0; j < 26; j++)
{
var chr = String.fromCharCode(97 + j);
var currentx = ks[i] + ' ' + chr;
keywordsToQuery[keywordsToQuery.length] = currentx;
hashMapResults[currentx] = 1;
}
}
//document.getElementById("input").value = '';
//document.getElementById("input").value += "n";
numOfInitialKeywords = keywordsToDisplay.length;
FilterAndDisplay();
doWork = true;
$('#startjob').val('Stop Job');
}
else
{
doWork = false;
alert("Stopped");
$('#startjob').val('Start Job');
}
}
function DoJob()
{
if(doWork == true && queryflag == false)
{
if(keywordsToQueryIndex < keywordsToQuery.length)
{
var currentKw = keywordsToQuery[keywordsToQueryIndex];
QueryKeyword(currentKw);
keywordsToQueryIndex++;
}
else
{
if (numOfInitialKeywords != keywordsToDisplay.length)
{
alert("Done");
doWork = false;
$('#startjob').val('Start Job');
}
else
{
keywordsToQueryIndex = 0;
}
}
}
}
function QueryKeyword(keyword)
{
var querykeyword = keyword;
//var querykeyword = encodeURIComponent(keyword);
var queryresult = '';
queryflag = true;
$.ajax({
url: "http://suggestqueries.google.com/complete/search",
jsonp: "jsonp",
dataType: "jsonp",
data: {
q: querykeyword,
client: "chrome"
},
success: function(res) {
var retList = res[1];
var i = 0;
for(i = 0; i < retList.length; i++)
{
var currents = CleanVal(retList[i]);
if(hashMapResults[currents] != 1)
{
hashMapResults[currents] = 1;
keywordsToDisplay[keywordsToDisplay.length] = CleanVal(retList[i]);
keywordsToQuery[keywordsToQuery.length] = currents;
var j = 0;
for(j = 0; j < 26; j++)
{
var chr = String.fromCharCode(97 + j);
var currentx = currents + ' ' + chr;
keywordsToQuery[keywordsToQuery.length] = currentx;
hashMapResults[currentx] = 1;
}
}
}
FilterAndDisplay();
var textarea = document.getElementById("input");
textarea.scrollTop = textarea.scrollHeight;
queryflag = false;
}
});
}
function CleanVal(input)
{
var val = input;
val = val.replace("\u003cb\u003e", "");
val = val.replace("\u003c\/b\u003e", "");
val = val.replace("\u003c\/b\u003e", "");
val = val.replace("\u003cb\u003e", "");
val = val.replace("\u003c\/b\u003e", "");
val = val.replace("\u003cb\u003e", "");
val = val.replace("\u003cb\u003e", "");
val = val.replace("\u003c\/b\u003e", "");
val = val.replace("\u0026amp;", "&");
val = val.replace("\u003cb\u003e", "");
val = val.replace("\u0026", "");
val = val.replace("\u0026#39;", "'");
val = val.replace("#39;", "'");
val = val.replace("\u003c\/b\u003e", "");
val = val.replace("\u2013", "2013");
if (val.length > 4 && val.substring(0, 4) == "http") val = "";
return val;
}
function Filter(listToFilter)
{
var retList = listToFilter;
if (document.getElementById("filter-positive").value.length > 0)
{
var filteredList = new Array();
var filterContains = document.getElementById("filter-positive").value.split("n");
var i = 0;
for (i = 0; i < retList.length; i++)
{
var currentKeyword = retList[i];
var boolContainsKeyword = false;
var j = 0;
for (j = 0; j < filterContains.length; j++)
{
if (filterContains[j].length > 0)
{
if (currentKeyword.indexOf(filterContains[j]) != -1)
{
boolContainsKeyword = true;
break;
}
}
}
if (boolContainsKeyword)
{
filteredList[filteredList.length] = currentKeyword;
}
}
retList = filteredList;
}
if (document.getElementById("filter-negative").value.length > 0)
{
var filteredList = new Array();
var filterContains = document.getElementById("filter-negative").value.split("n");
var i = 0;
for (i = 0; i < retList.length; i++)
{
var currentKeyword = retList[i];
var boolCleanKeyword = true;
var j = 0;
for (j = 0; j < filterContains.length; j++)
{
if (filterContains[j].length > 0)
{
if (currentKeyword.indexOf(filterContains[j]) >= 0)
{
boolCleanKeyword = false;
break;
}
}
}
if (boolCleanKeyword)
{
filteredList[filteredList.length] = currentKeyword;
}
}
retList = filteredList;
}
return retList;
}
function FilterAndDisplay()
{
var i = 0;
var sb = '';
var outputKeywords = Filter(keywordsToDisplay);
for (i = 0; i < outputKeywords.length; i++)
{
sb += outputKeywords[i];
sb += 'n';
}
document.getElementById("input").value = sb;
document.getElementById("numofkeywords").innerHTML = '' + outputKeywords.length + ' : ' + keywordsToDisplay.length;
}
function FilterIfNotWorking()
{
if (doWork == false)
{
FilterAndDisplay();
}
}
function post_to_url(path, params, method) {
method = method || "post"; // Set method to post by default, if not specified.
// The rest of this code assumes you are not using a library.
// It can be made less wordy if you use one.
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", path);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
function Download()
{
var inputText = document.getElementById("input").value;
post_to_url('KSDownload.php', {'input_text' : inputText}, 'post');
}
</script>
</body>
</html>
Ayo sob di komen, kalau ada salah atau saran, kritik boleh coret coret dibawah, gratis kok!