Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

seo-recommender

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

seo-recommender

A SEO recommender for HTML files

  • 1.0.0
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

SEO Recommender (Beta)

Parse HTML and provide suggestions on SEO. Powered by cheerio.

Installation

npm install seo-recommender

Constants

INPUT_TYPE

  • INPUT_TYPE.FILE
  • INPUT_TYPE.STREAM

OUTPUT_TYPE

  • OUTPUT_TYPE.CONSOLE
    • Default behaviour if specify nothing
  • OUTPUT_TYPE.FILE
  • OUTPUT_TYPE.STREAM

PREDEFINED_RULE_GROUPS

There are 5 pre-defined rule groups, used when specifying white list

  • PREDEFINED_RULE_GROUPS.IMG_WITHOUT_ALT
  • PREDEFINED_RULE_GROUPS.A_WITHOUT_REL
  • PREDEFINED_RULE_GROUPS.HEAD_HAS_META_WITH_ATTR
  • PREDEFINED_RULE_GROUPS.NUM_OF_STRONG
  • PREDEFINED_RULE_GROUPS.NUM_OF_H1

RULE_TYPES

There 3 rule types according to pre-defined rule groups, used when adding more rules

  • RULE_TYPES.TAG_WITHOUT_ATTR
  • RULE_TYPES.TAG_WITHOUT_TAG_WITH_ATTR_AND_VALUE
  • RULE_TYPES.NUMBER_OF_TAG_NO_MORE_THAN

API

addRule(rules)

Provide a list of objects for adding custom rules. Must be called before calling API run().

E.g. Check if <meta name="robots" /> exists or not

var rcmndr = new SEORecommender();

rcmndr.addRules([{
    ruleType: RULE_TYPES.TAG_WITHOUT_TAG_WITH_ATTR_AND_VALUE,
    tag: 'head',
    conditions: {
        tag: 'meta',
        attr: 'name',
        value: 'robots',
    },
    userDefinedConditions: null,
    desc: 'This HTML does not have %s tag',
}]);

run(options)

Start parsing and recommending.

Provide an options object.

E.g. run with options:

  • Input type is a file path
  • File path
  • Output type is printing on console
var rcmndr = new SEORecommender();
rcmndr.run({
    inType: INPUT_TYPE.FILE,
    inPath: 'test.html',
    outType: OUTPUT_TYPE.CONSOLE,
});

Check exmpale for more information.

Usage

const fs = require('fs');

const {
    SEORecommender,
    INPUT_TYPE,
    OUTPUT_TYPE,
    PREDEFINED_RULE_GROUPS,
    RULE_TYPES,
} = require('seo-recommender');

function inputFileOutputConsole() {
    var rcmndr = new SEORecommender();
    rcmndr.run({
        inType: INPUT_TYPE.FILE,
        inPath: 'test.html',
        outType: OUTPUT_TYPE.CONSOLE,
    });
}

function inputStreamOutputFile() {
    var rcmndr = new SEORecommender();
    var inStream = fs.createReadStream('test.html');
    rcmndr.run({
        inType: INPUT_TYPE.STREAM,
        inStream: inStream,
        outType: OUTPUT_TYPE.FILE,
        outPath: 'output',
    });
}

function inputStreamOutputStream() {
    var rcmndr = new SEORecommender();
    var inStream = fs.createReadStream('test.html');
    rcmndr.run({
        inType: INPUT_TYPE.STREAM,
        inStream: inStream,
        outType: OUTPUT_TYPE.STREAM,
        callback: (writable) => {
            console.log('writable =', writable);
        },
    });
}

function addRules() {
    var rcmndr = new SEORecommender();

    rcmndr.addRules([{
        ruleType: RULE_TYPES.TAG_WITHOUT_TAG_WITH_ATTR_AND_VALUE,
        tag: 'head',
        conditions: {
            tag: 'meta',
            attr: 'name',
            value: 'robots',
        },
        userDefinedConditions: null,
        desc: 'This HTML does not have %s tag',
    }]);

    rcmndr.run({
        inType: INPUT_TYPE.FILE,
        inPath: 'test.html',
        outType: OUTPUT_TYPE.CONSOLE,
    });
}

function addRulesWhiteList() {
    var rcmndr = new SEORecommender();
    rcmndr.run({
        rulesWhiteList: [PREDEFINED_RULE_GROUPS.IMG_WITHOUT_ALT],
        inType: INPUT_TYPE.FILE,
        inPath: 'test.html',
        outType: OUTPUT_TYPE.CONSOLE,
    });
}

inputFileOutputConsole();
//inputStreamOutputFile();
//inputStreamOutputStream();
//addRules();
//addRulesWhiteList();

FAQs

Package last updated on 02 Jan 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc