> ## Documentation Index
> Fetch the complete documentation index at: https://docs.postqueen.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> PostQueen's hosted API is https://api.postqueen.ai. The public API base is https://api.postqueen.ai/public/v1 and takes the raw API key in the Authorization header, with no Bearer prefix.
> The MCP server for posting is https://api.postqueen.ai/mcp/YOUR_API_KEY (or /mcp with Authorization: Bearer YOUR_API_KEY). docs.postqueen.ai/mcp only searches these docs and cannot post.
> The API key is under Connections > API Keys in the app, and only workspace admins can see it.

# Hashnode

> Connect Hashnode to PostQueen with a personal access token, what you can publish to it, and the limits PostQueen checks before an article is scheduled.

export const ChannelStatus = ({status, children}) => {
  const look = ({
    available: {
      color: 'green',
      label: 'Available'
    },
    'in-review': {
      color: 'yellow',
      label: 'In review'
    },
    soon: {
      color: 'gray',
      label: 'Soon'
    }
  })[status] || ({
    color: 'gray',
    label: status
  });
  return <div className="pq-status not-prose" data-status={status}>
      <Badge color={look.color} shape="pill" size="md">{look.label}</Badge>
      {children ? <span className="pq-status-note">{children}</span> : null}
    </div>;
};

<ChannelStatus status="available">Needs Hashnode's Pro plan on the publication you connect.</ChannelStatus>

Publish Markdown articles to your Hashnode publication on schedule, with a title, subtitle, cover image, canonical URL and tags. You connect with a Hashnode personal access token.

<div className="pq-visual pq-visual-card pq-tint-lilac">
  <img noZoom src="https://mintcdn.com/forceplay/CEQwaAjYodG7Gh_r/images/site/channels/hashnode.webp?fit=max&auto=format&n=CEQwaAjYodG7Gh_r&q=85&s=7ef94d36eda5dd88619ee1d3208aaa89" alt="A new Hashnode post in the PostQueen composer, with the post types Hashnode takes and the time it goes out" width="1200" height="1078" data-path="images/site/channels/hashnode.webp" />
</div>

## What you can post

<CardGroup cols={2}>
  <Card title="Text" icon="type">
    An article body of up to 10,000 characters, written in Markdown, and a title of at least 6 characters.
  </Card>

  <Card title="Media" icon="image">
    One cover image. Pictures inside the article are not uploaded.
  </Card>

  <Card title="Post types" icon="layers">
    A published article in the publication you pick, with a subtitle, cover image, canonical link and 1 to 4 tags.
  </Card>

  <Card title="Analytics" icon="chart-line">
    No analytics for Hashnode.
  </Card>
</CardGroup>

**Not supported:** Hashnode drafts (an article is always published), scheduling inside Hashnode, series, code-block or embed editing in the editor, and follow-up comments.

## Checked before scheduling

PostQueen refuses a post that breaks these rules and shows the message in the composer:

| Rule                                                    | Message                                                 |
| ------------------------------------------------------- | ------------------------------------------------------- |
| A title of at least 6 characters                        | “title must be longer than or equal to 6 characters”    |
| A subtitle, when you give one, of at least 2 characters | “subtitle must be longer than or equal to 2 characters” |
| A publication is picked                                 | “publication should not be null or undefined”           |
| At least 1 tag                                          | “tags must contain at least 1 elements”                 |
| **Canonical Link** is a web address                     | “Invalid URL”                                           |
| Text within 10,000 characters                           | “post is too long, please fix it”                       |

The tag picker stops at 4. The Pro plan is not checked first: Hashnode itself refuses a publication without it.

## Connect Hashnode

<Note>
  Hashnode answers API requests only for publications on its Pro plan, and PostQueen publishes through that API. Without Pro, Hashnode refuses the connection, or the article when it is published, with its own upgrade message. PostQueen does not include Hashnode Pro.
</Note>

<Steps>
  <Step title="Check the plan of your publication">
    In the dashboard of the Hashnode blog you want to publish to, open **Billing** and make sure it is on the Pro plan.
  </Step>

  <Step title="Generate a personal access token">
    On Hashnode, open **Settings**, then **Developer** ([hashnode.com/settings/developer](https://hashnode.com/settings/developer)), generate a new token and copy it.
  </Step>

  <Step title="Open Add Channel">
    In PostQueen, open **Channels** and choose **Add Channel**, then **Hashnode** and **Enter details**.
  </Step>

  <Step title="Paste the token">
    Paste the token in **API key** and choose **Connect**.
  </Step>

  <Step title="Check that it connected">
    The channel appears in the **Channels** list with your Hashnode avatar and name.
  </Step>
</Steps>

<Warning>
  **Never share your API keys, passwords or access tokens with anyone, including PostQueen staff.**

  A key, app password or private key a channel asks for goes into its connect form in PostQueen and nowhere else. Nobody from PostQueen will ask you to send one by email or chat, and you can disconnect the channel at any time.
</Warning>

## Post settings

Each Hashnode post in the composer has these settings:

* **Title**: required, at least 6 characters.
* **Subtitle**: optional, at least 2 characters when you give one.
* **Canonical Link**: where the article first appeared. Type a web address, or choose the lightning icon next to the label to pick another post you scheduled in PostQueen: its live address is filled in when the article is published.
* **Cover picture**: the image at the top of the article.
* **Select publication**: where the article goes. Required. The list shows your first 50 publications.
* **Tags**: 1 to 4 tags from Hashnode's list.

The field names and values for the API are on [Hashnode posting settings](/public-api/providers/hashnode).

## Comments and threads

Hashnode takes no follow-up comments, so the composer shows no **Add comment** button for a Hashnode post.

## Good to know

* The article is published on Hashnode at the scheduled time. It is never saved as a Hashnode draft.
* When a connect fails, PostQueen tells a wrong token apart from a publication without Pro, and shows Hashnode's own message for the plan.
* If Hashnode stops accepting the token when an article goes out, the channel shows **Needs reconnecting**. Generate a new token and enter it with **Update Credentials** under **Access** on the channel's page.
* **Invite by link** does not offer Hashnode, because the token is typed into PostQueen. Connect it with **Connect myself**.
* During the free trial, a Hashnode account that another PostQueen workspace already connected is refused until you end the trial.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Invalid credentials">
    Hashnode did not accept the token. Generate a new one under **Settings**, **Developer**, and connect again.
  </Accordion>

  <Accordion title="Hashnode's message about the Pro plan">
    The publication is not on Hashnode Pro. Upgrade it under **Billing** in its dashboard, then connect again or schedule the article again.
  </Accordion>

  <Accordion title="Could not reach the Hashnode API. Please try again later.">
    Hashnode did not answer. Wait a few minutes and connect again.
  </Accordion>

  <Accordion title="Hashnode did not publish the post">
    Hashnode refused the article without saying why. Check the title, the tags and the publication, then schedule it again.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Create a post" icon="square-pen" href="/using/create-a-post">
    Write once for several channels, then schedule it, save a draft or post now.
  </Card>

  <Card title="Channels and their status" icon="layout-grid" href="/channels/overview">
    Which networks you can connect today, what each one posts, and its text limit.
  </Card>

  <Card title="Post from an AI agent" icon="bot" href="/agents/overview">
    Ask Claude, ChatGPT, Grok Bot or another agent to schedule the post for you.
  </Card>

  <Card title="A post did not go out" icon="triangle-alert" href="/troubleshooting/post-failed">
    Why a post fails and what to do about it.
  </Card>
</CardGroup>
