akismet-api

Nodejs bindings to the Akismet (http://akismet.com) spam detection service

Akismet-api

Full Nodejs bindings to the Akismet (http://akismet.com) spam detection service.

Uses a modern HTTP client and provides a full test suite.

npm install akismet-api
cd node_modules/akismet-api
npm test

The blog and key values are required by Akismet. There are a set of other avaliable default options visible in the source, but you likely will not need to change those.

var akismet = require('akismet-api');
var client = akismet.client({
  key  : 'myKey',                   // Required! 
  blog : 'http://myblog.com'        // Required! 
});

It's a good idea to verify your key before use. If your key returns as invalid, the error field will contain the debug help message returned by Akismet.

client.verifyKey(function(errvalid) {
  if (valid) {
    console.log('Valid key!');
  } else {
    console.log('Key validation failed...');
    console.log(err.message);
  }
});

The user_ip, user_agent, and referrer are required options. All other options are optional, but will provide you with better spam detection accuracy.

client.checkSpam({
  user_ip : '123.123.123.123',              // Required! 
  user_agent : 'MyUserAgent 1.0 Webkit',    // Required! 
  referrer : 'http://google.com',           // Required! 
  permalink : 'http://myblog.com/myPost',
  comment_type : 'comment',
  comment_author : 'John Smith',
  comment_author_email : 'john.smith@gmail.com',
  comment_author_url : 'http://johnsblog.com',
  comment_content : 'Very nice blog! Check out mine!'
}, function(errspam) {
  if (err) console.log ('Error!');
  if (spam) {
    console.log('OMG Spam!');
  } else {
    console.log('Totally not spam');
  }
});

If Akismet reports something as not-spam, but it turns out to be spam anyways, we can report this to Akismet via this API call.

client.submitSpam({
  user_ip : '123.123.123.123',              // Required! 
  user_agent : 'MyUserAgent 1.0 Webkit',    // Required! 
  referrer : 'http://google.com',           // Required! 
  permalink : 'http://myblog.com/myPost',
  comment_type : 'comment',
  comment_author : 'John Smith',
  comment_author_email : 'john.smith@gmail.com',
  comment_author_url : 'http://johnsblog.com',
  comment_content : 'Very nice blog! Check out mine!'
}, function(err) {
  if (!err) {
    console.log('Spam reported!');
  }
});

If Akismet reports something as spam, but it turns out to not be spam anyways, we can report this to Akismet via this API call.

client.submitHam({
  user_ip : '123.123.123.123',              // Required! 
  user_agent : 'MyUserAgent 1.0 Webkit',    // Required! 
  referrer : 'http://google.com',           // Required! 
  permalink : 'http://myblog.com/myPost',
  comment_type : 'comment',
  comment_author : 'John Smith',
  comment_author_email : 'john.smith@gmail.com',
  comment_author_url : 'http://johnsblog.com',
  comment_content : 'Very nice blog! Check out mine!'
}, function(err) {
  if (!err) {
    console.log('Non-spam reported!');
  }
});

Development was sponsored by MemoryLeaf Media.

Github: http://github.com/memoryleaf Web: http://memoryleaf.net

Released under the MIT license.

See LICENSE.txt for more information.