metatags-generator
v1.1.8
Published
SEO meta tags generator for Node.js applications. Written in TypeScript. Zero dependencies.
Downloads
687
Maintainers
Readme
Meta tags generator
SEO meta tags generator for Node.js applications. Written in TypeScript. Zero dependencies.
Installation
npm install metatags-generator
API
Look at /docs/
Benchmarking
In general, generator can make ~10k records per seconds and use ~80Mb memory for this. That's mean meta tags generation not be bottleneck with up to 10k RPS.
You can recheck in ./benchmark
directory.
How to use
Typescript
import { MetadataGenerator } from 'metatags-generator';
Pure Nodejs
const MetadataGenerator = require('metatags-generator');
const settings = {
structuredData: true,
androidChromeIcons: true,
msTags: true,
safariTags: true,
appleTags: true,
openGraphTags: true,
twitterTags: true,
facebookTags: true
};
const generator = new MetadataGenerator();
const preparedData = generator
.configure(settings)
.setRobots('index, follow')
.setShortLink('https://bit.ly/1ahy')
.setLocalVersion('en_US', 'https://example.com', true)
.setAlternateHandheld('https://m.example.com')
.setProjectMeta({
name: 'Example app',
url: 'https://example.com',
logo: '/path/logo.png',
primaryColor: '#333333',
backgroundColor: '#ffffff'
})
.setPageMeta({
title: 'Home',
description: 'This is home page',
url: 'https://example.com',
image: '/path/cover.jpg',
keywords: 'site, app, example, pug',
locale: 'en_US'
})
.openGraphData('video.movie')
.setCanonical('https://example.com')
.breadcrumb(data)
.setIcons(icons)
.setTwitterMeta({
card: 'summary_large_image',
site: '@nytimesbits',
creator: '@nickbilton'
})
.setFacebookMeta(5233)
.build();
Then you can use HTML output for inject in your page.
Express + Pug example
Install dependencies
npm i express pug metatags-generator
Create files:
index.js
const express = require('express');
const { MetadataGenerator } = require('metatags-generator');
const app = express();
const port = 3000;
app.set('views', `${__dirname}`);
app.set('view engine', 'pug');
const generator = new MetadataGenerator();
const data = [
{ title: 'Home', url: 'https://example.com' },
{ title: 'About', url: 'https://example.com/about' }
];
const icons = ['/path/icon-72x72.png', '/path/icon-180x180.png'];
const preparedData = generator
.setRobots('index')
.setRobots('index, follow')
.setShortLink('https://bit.ly/1ahy')
.setLocalVersion('en_US', 'https://example.com', true)
.setAlternateHandheld('https://m.example.com')
.setProjectMeta({
name: 'Example app',
url: 'https://example.com',
logo: '/path/logo.png',
primaryColor: '#333333',
backgroundColor: '#ffffff'
})
.setPageMeta({
title: 'Home',
description: 'This is home page',
url: 'https://example.com',
image: '/path/cover.jpg',
keywords: 'site, app, example, pug',
locale: 'en_US'
})
.openGraphData('video.movie')
.setCanonical('https://example.com')
.breadcrumb(data)
.setIcons(icons)
.setTwitterMeta({
card: 'summary_large_image',
site: '@nytimesbits',
creator: '@nickbilton'
})
.setFacebookMeta(5233)
.build();
app.get('/', (req, res) => {
res.render('index', { head: preparedData.head, body: preparedData.body });
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
index.pug
doctype html
html(lang="en", prefix="og: http://ogp.me/ns#")
head
| !{head}
body
| !{body}
h1 Hello World