I Created a CLI to Cross-Post Your Articles On Dev, Hashnode, and Medium

I Created a CLI to Cross-Post Your Articles On Dev, Hashnode, and Medium

This article was originally published on my personal blog.

If you own a blog like me, but also cross-post your articles on platforms like Dev, Hashnode, and Medium, it gets tedious to post your articles in different places.

So, I created a simple CLI to cross-post my articles on these platforms easily. You can find it on NPM and check the code on GitHub.

In your terminal:

Usage

For the simplicity of the CLI, and considering most of the APIs of each of the platforms do not allow or provide endpoints for user authentication, you will need to get your access tokens, API keys, or integration tokens from your own profile before using cross-post. This will just need to be done the first time or if you want to change the tokens.

The tokens are all stored on your local machine.

Here’s a guide on how to do this for each of the platforms:

After logging into your account on dev.to, click on your profile image and then click on Settings

Settings
Settings

Then, click on the Accounts tab in the sidebar

Accounts
Accounts

Scroll down to the “DEV Community API Keys” section. You need to generate a new key. Enter “Cross Post” in the description text box or any name you want then click “Generate API key”

Generate API Key
Generate API Key

Copy the generated API key, then in your terminal:

You’ll be prompted to enter the API key. Paste the API key you copied earlier and hit enter. The API key will be saved.

After logging into your account on Hashnode, click on your profile image and then click on “Account Settings”

Settings
Settings

In the sidebar click on “Developer”

Developer
Developer

Click the “Generate” button and then copy the generated access token.

Generate
Generate

Run the following in your terminal:

First, you’ll be prompted to enter your access token. Then, you need to enter your Hashnode username. The reason behind that is that when later posting on hashnode your publication id is required, so your username will be used here to retrieve the publication id. Once you do and everything goes well, the configuration will be saved successfully.

After logging into Medium, click on your profile image and then click on “Settings”

Settings
Settings

Then click on “Integration Tokens” in the sidebar

Integration Tokens
Integration Tokens

You have to enter the description of the token then click “Get integration token” and copy the generated token.

Generate token
Generate token

In your terminal run:

Then enter the integration token you copied. A request will also be sent to Medium to get your authorId as it will be used later to post your article on Medium. Once that is done successfully, your configuration will be saved.

To cross-post your articles, you will use the following command:

Whereurlis the URL of your article that you want to cross-post.optionscan be:

  1. -p, --platforms [platforms...]The platform(s) you want to post the article on. By default, if this option is not included, it will be posted on all the platforms. An example of its usage:
  1. -t, --title [title]The title by default will be taken from the URL you supplied, however, if you want to use a different title you can supply it in this option.
  2. -s, --selector [selector]by default, thearticleselector will be used to find your article in the URL you pass as an argument. However, if you need a different selector to be used to find the article, you can pass it here.

This command will find the HTML element in the URL page you pass as an argument and if found, it will extract the title (if no title is passed in the arguments) and cover the image.

It should be noted that on all platforms the article will be posted as a draft, however, due to the limitations of the Hashnode API, it will be posted as “hidden from Hashnode” but it will be public in your publication.

UPDATE: In the latest version of this library, you can now pass the option -pu, --public to publish the article publicly.

If you find any bugs or have any ideas you would like to contribute, please do so on the issues tab in the GitHub Repository!

Full stack developer. http://shahednasser.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store