seo-recommender

1.0.0 • Public • Published

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();

Readme

Keywords

none

Package Sidebar

Install

npm i seo-recommender

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • ianyuhsunlin