meta-og-scrape

Scrape meta, link & open graph tags from the head of document as a JavaScript object (JSON)

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
meta-og-scrape
101.0.05 months ago5 months agoMinified + gzip package size for meta-og-scrape in KB

Readme

meta-og-scrape
meta-og-scrape, (built from OpenGraphJS) builds a JSON object from a web page which follows the Open Graph Protocol. The JavaScript object returned by this library contains important metadata such as the description, image, and title.
Code Climate Build Status Test Coverage npm

Installation

npm install meta-og-scrape

Usage

Promise support

  • Its easy, if you are using a version of node with Promises you are ready to go!
  • Other versions of node:
- define global.Promise = require('bluebird'); - Feel free to substitute Bluebird with your perferred promise library
// Include it
var ogjs = require('meta-og-scrape');
// Pass in a URL
ogjs({ url: 'http://animateme.app' })
  .then(function (data) {
    console.log(data); // some share data parsed from metatags..
  }, function (err) {
    console.log('It seems that we have fumbled with an error', err);
  });

Callbacks

// Include it
var ogjs = require('meta-og-scrape');
// Pass in a URL
ogjs({ url: 'http://animateme.app' }, function (err, data) {
    if (err) {
      console.log('It seems that we have fumbled with an error', err);
      return;
    }
    
    console.log(data); // some share data parsed from metatags..
  });

Expected ouput

Sample

{ 
  title: 'Open Graph protocol',
  type: 'website',
  url: 'http://ogp.me/',
  description: 'The Open Graph protocol enables any web page to become a rich object in a social graph.',
  image: [{ 
    url: 'http://ogp.me/logo.png',
    type: 'image/png',
    width: '300',
    height: '300' 
  }]
}

Supported properties

<th class="tg-031e">Property Name</th>
<th class="tg-031e">JS Name</th>
<th class="tg-031e">Type</th>
<th class="tg-031e">Description</th>
<td class="tg-031e">og:title</td>
<td class="tg-031e">title</td>
<td class="tg-031e">string</td>
<td class="tg-031e">title set in og:title, if missing uses the page's title tag </td>
<td class="tg-031e">og:type</td>
<td class="tg-031e">type</td>
<td class="tg-031e">string</td>
<td class="tg-031e">open graph type for the current document</td>
<td class="tg-031e">og:url</td>
<td class="tg-031e">url</td>
<td class="tg-031e">string</td>
<td class="tg-031e">sharable url to content</td>
<td class="tg-031e">og:description</td>
<td class="tg-031e">description</td>
<td class="tg-031e">string</td>
<td class="tg-031e">describes the media/page being shared</td>
<td class="tg-031e">og:determiner</td>
<td class="tg-031e">determiner</td>
<td class="tg-031e">string</td>
<td class="tg-031e"></td>
<td class="tg-031e">og:locale</td>
<td class="tg-031e">locale</td>
<td class="tg-031e">object</td>
<td class="tg-031e">has two properties, `name` which contains the default locale <br>and `alternate` which is an array of strings with additional locales</td>
<td class="tg-031e">og:site_name</td>
<td class="tg-031e">siteName</td>
<td class="tg-031e">string</td>
<td class="tg-031e"></td>
<td class="tg-031e">og:image</td>
<td class="tg-031e">image</td>
<td class="tg-031e">array</td>
<td class="tg-031e">Array of objects <br><br>Properties:<br>- url (always present)<br>- secureUrl (optional)<br>- width (optional)<br>- height (optional)</td>
<td class="tg-031e">og:video</td>
<td class="tg-031e">video</td>
<td class="tg-031e">array</td>
<td class="tg-031e">Array of objects <br><br>Properties:<br>- url (always present)<br>- secureUrl (optional)<br>- width (optional)<br>- height (optional)</td>
<td class="tg-031e">og:audio</td>
<td class="tg-031e">audio</td>
<td class="tg-031e">array</td>
<td class="tg-031e">Array of objects <br><br>Properties:<br>- url (always present)<br>- secureUrl (optional)</td>

Credits and Acknowledgements