Skip to content
This repository was archived by the owner on Oct 4, 2022. It is now read-only.
/ YoastSEO.js Public archive

Analyze content on a page and give SEO feedback as well as render a snippet preview.

License

Notifications You must be signed in to change notification settings

Yoast/YoastSEO.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

220af5c · Feb 25, 2019
Nov 16, 2018
Mar 20, 2018
Jan 11, 2019
Jan 17, 2019
Jan 28, 2019
Mar 22, 2016
Aug 15, 2018
Jan 17, 2019
Jan 17, 2019
Feb 17, 2017
Nov 1, 2017
Sep 12, 2017
Feb 8, 2016
Feb 8, 2016
Oct 10, 2018
Nov 20, 2018
Apr 18, 2016
Oct 8, 2018
Apr 5, 2016
Oct 8, 2018
Feb 25, 2019
Jan 19, 2016
Jan 7, 2019
Mar 23, 2015
Dec 19, 2018
Jan 18, 2016
Dec 7, 2015
Dec 20, 2018
Feb 25, 2019
Apr 19, 2018
Jan 7, 2019

Repository files navigation

Build Status Code Climate Test Coverage Inline docs

YoastSEO.js

Text analysis and assessment library in JavaScript. This library can generate interesting metrics about a text and assess these metrics to give you an assessment which can be used to improve the text.

Screenshot of the assessment of the given text

Also included is a preview of the Google search results which can be assessed using the library.

Installation

You can install YoastSEO.js using npm:

npm install yoastseo

Or using yarn:

yarn add yoastseo

Usage

You can either use YoastSEO.js using the web worker API or use the internal components directly.

Because a web worker must be a separate script in the browser you first need to create a script for inside the web worker:

import { AnalysisWebWorker } from "yoastseo";

const worker = new AnalysisWebWorker( self );
worker.register();

Then in a different script you have the following code:

import { AnalysisWorkerWrapper, createWorker, Paper } from "yoastseo";

// `url` needs to be the full URL to the script for the browser to know where to load the worker script from.
// This should be the script created by the previous code-snippet.
const url = "https://my-site-url.com/path-to-webworker-script.js"

const worker = new AnalysisWorkerWrapper( createWorker( url ) );

worker.initialize( {
    locale: "en_US",
    contentAnalysisActive: true,
    keywordAnalysisActive: true,
    logLevel: "ERROR",
} ).then( () => {
    // The worker has been configured, we can now analyze a Paper.
    const paper = new Paper( "Text to analyze", {
        keyword: "analyze",
    } );
    
    return worker.analyze( paper );
} ).then( ( results ) => {
    console.log( 'Analysis results:' );
    console.log( results );
} ).catch( ( error ) => {
    console.error( 'An error occured while analyzing the text:' );
    console.error( error );
} );

Usage of internal components

If you want to have a more barebones API, or are in an environment without access to Web Worker you can use the internal objects:

import { Researcher, Paper } from "yoastseo";

const paper = new Paper( "Text to analyze", {
    keyword: "analyze",
} );
const researcher = new Researcher( paper );

console.log( researcher.getResearch( "wordCountInText" ) );

Note: This is currently a synchronous API, but will become an asynchronous API in the future.

Supported languages

Language Transition words Flesch reading ease Passive voice Sentence beginnings Sentence length1 Function words2
English
German
Dutch
French
Spanish
Italian
Japanese 3 3 3
Portuguese
Russian
Catalan
Polish 4
Swedish 4

1 This means the default upper limit of 20 words has been verified for this language, or the upper limit has been changed.

2 These are used for internal linking, insights and keyphrase-related analyses.

3 This means that this feature doesn't make sense for the specific language.

4 There is no existing Flesch reading ease formula for these languages.

The following readability assessments are available for all languages:

  • sentence length (with a default upper limit of 20 words, see1 above )
  • paragraph length
  • subheading distribution

Change log

Please see CHANGELOG for more information what has changed recently.

Documentation

The data that will be analyzed by YoastSEO.js can be modified by plugins. Plugins can also add new research and assessments. To find out how to do this, checkout out the customization documentation.

Testing

npm test

Generate coverage using the --coverage flag.

Code style

To test your code style:

grunt check

Testing with Yoast SEO

In the YoastSEO.js directory, run:

npm link

Then, in the Yoast SEO directory, assuming you have a complete development version, run:

npm link yoastseo
grunt build:js && grunt build:css

From that point on you need to re-do grunt build:js && grunt build:css when you make changes to YoastSEO.js. If you want to unlink, simply do:

npm unlink yoastseo

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email security [at] yoast.com instead of using the issue tracker.

Credits

License

We follow the GPL. Please see License file for more information.

About

Analyze content on a page and give SEO feedback as well as render a snippet preview.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages