seomate v0.0.2
SEOMATE
An NPM module providing dead simple way to check your HTML defects.
Getting Started
Prerequisites
Node.js 8+
Installation
npm install seomate
Usage
Command line:
Usage: seomate [options] <filepath>
Options:
-V, --version output the version number
-c, --config-path [config path] configs file path
-r, --rules [rules] rules to be applied (separated by comma)
-o, --output [file path] write to file
-h, --help output usage information
Example:
seomate index.html -c configs.json -r title,h1 -o /tmp/seomate.log
API:
const = seomate require('seomate');
seomate('your/file/path').then((t) => {
t.examine('rule1', 'rule2', 'rule3').toConsole();
}).catch((e) => {
console.log(e);
});
Development Setup
git clone https://github.com/amigcamel/seomate
cd seomate
npm install
Test
mocha
Release History
- 0.0.2
- add cli
- 0.0.1
- First release
Documentation
configDict
Format
configDict
is configured in JSON
format. A complete template is shown as the following:
{
"rule-name": {
"section": "",
"tag": "",
"attribute": "",
"value": "",
"action": {
"name": "",
"value": ""
}
}
}
Here are the basic definitions:
rule-name
: A rule name user definessection
:head
orbody
tag
: HTML tagattribute
: Tag attributevalue
: Attribute value of a tagaction
: Expected behavior of the HTML parser +name
: rule name, currently supported rules are: +must-have
+must-have-attribute
+nore-more-than
Fields
seomate laverage the use of css selector and parse fields in cascade manner:
section > tag[attribute=value]
So, every field is dependant with its upper level.
section
head
or body
.
This should be sepcified to avoi cases like the following:
<html>
<head></head>
<body>
<title>This is a title</title>
</body>
</html>
This HTML has the <title>
in the <body>
section, which is still valid but not standard. So, if we configure configDict
as this:
{
"title-rule": {
"section": "head",
"tag": "tag",
"action": {
"name": "must-have"
}
}
}
seomate will tell the non-existence of <title>
as it'll look for <title>
under <head>
section.
tag
An HTML tag.
attribute
A tag attribute.
If tag
is not set, value
will be ignored.
value
An attribute value of a tag.
If attribute
is not set, value
will be ignored.
Rules
must-have
A HTML should have the provided pattern.
Example 1:
{
"title-rule": {
"section": "head",
"tag": "title",
"action": {
"name": "must-have"
}
}
}
This rule can be read as "This HTML must have <title>
."
Example 2:
{
"img-rule": {
"section": "head",
"tag": "body",
"attribute": "alt",
"action": {
"name": "must-have"
}
}
}
This rule can be read as "This HTML must have <img>
with attribute alt
."
Example 3:
{
"meta-robots-rule": {
"section": "head",
"tag": "meta",
"attribute": "name",
"value": "robots",
"action": {
"name": "must-have"
}
}
}
This rule can be read as "This HTML must have <meta>
with attribute name
whose value is robots
, e.g., <meta name='robots'>
"
must-have-attribute
A provided pattern should always have a specified attribute.
For example:
{
"a-rule": {
"section": "body",
"tag": "a",
"attribute": "rel"
},
"action": {
"name": "must-have-attr"
}
}
This rule can be read as "<a>
, if exists, must have attribute rel
." If <a>
is found with no rel
attribute, line numbers will be provide for the ease of debugging.
Notice the field value
is not in use with this rule.
nore-more-than
Numbers of provided pattern should be no more than the specified value.
For example:
{
"strong-rule": {
"section": "head",
"tag": "strong",
"action": {
"name": "no-more-than",
"value" 15
}
}
}
This rule can be read as "<strong>
cannot appear more than 15 times."