blogmon

A npm package to fetch blog posts from many blog post publishing websites.

Usage no npm install needed!

<script type="module">
  import blogmon from 'https://cdn.skypack.dev/blogmon';
</script>

README

Blogmon

A npm package to fetch (or paginate) blog posts from many blog post publishing websites. Currently supports only dev.to and hashnode.com

Gotta get'em all!

Blogmon is a fork of blogtraversy.

Installation

npm i blogmon

Quick Start

The Recommended way is to use a BlogPostIterator.

getDevtoPostIterator returns a BlogPostIterator.

import { getDevtoPostIterator } from "blogmon";

const config = {
  userName: "arunmurugan78",
  perPage: 7, // optional, defaults to 6
};

const devto = getDevtoPostIterator(config);

// returns blog posts of given perPage size. Promise<BlogPost[]>
// Useful in Paginating the results
devto.nextPage().then((blogPosts) => {
  if (blogPosts) {
    // do something with the results, like displaying the details.
    // blogPosts will be of length less than or equal to perPage provided in config
    for (const blogPost of blogPosts) {
      console.log(blogPost.title);
    }
  } else {
    // reached end of results
    console.log("end of result. traversed all blog posts!");
  }
});

BlogPost data is of the following form.

// BlogPost.ts
export interface BlogPost {
  url: string;
  coverImageUrl: string;
  title: string;
  description: string;
  dateAdded?: Date;
  dateEdited?: Date;
  tags: string[];
}

Like for dev.to, you can use getHashnodePostIterator.

To get all Blog Posts from all the provided websites use getAllPosts.

import { getDevtoPostIterator } from "blogmon";

// blogPosts will be fetched for the provided usernames
const usernames = {
  devtoUserName: "arunmurugan78",
  hashnodeUserName: "arunmurugan",
};

/**
 * Fetches all the blog posts. might get slow if you have a lot of blog posts.
 */
getAllPosts(usernames).then((blogPosts) => {
  // blogPosts will be in the latest to oldest dateAdded order.
  // do whatever you want to do with blogPosts
});