Find your channels
id is what -i takes. identifier is the network, such as bluesky, wordpress or devto. customer appears when the channel is sorted into a customer. A channel with "disabled": true is turned off in the app and does not publish.
integrations:groups lists your customers as id and name.
Read what a network needs
output object:
Bluesky and Nostr need no settings. WordPress needs a
title and a post type, and DEV needs a title. Read the schema before you post to a network for the first time: examples by network shows the settings each one takes.
Look up a value
Some settings take a value only the network knows, such as a WordPress post type or a DEV tag. Run the helper thatintegrations:settings lists under tools:
-d as JSON, for example -d '{"word":"baking"}' for a Lemmy community search. A name the channel does not offer fails with Tool not found.
Create a post
-s is required: the publish time in ISO 8601. The post is scheduled for that time. The answer lists one postId for each channel.
Save a draft
Save a draft
posts:status. PostQueen checks a draft’s required settings too, so pass them now. The network’s rules on length and media are checked only when you schedule it, so a draft that was accepted can still be refused then.Add images or a video
Add images or a video
Upload each file first, then pass the returned A video has to finish processing first: see upload media.
path with -m. Separate several files with commas:Post a thread or add comments
Post a thread or add comments
Repeat An item may start with
-c. The first is the post, and each one after it is a reply or a comment. -m pairs with the -c in the same position, and -d sets the minutes to wait between items:-, such as -c "- a smaller size": it is posted as written.The extra items become a thread on Bluesky, Nostr, X and Threads, and comments on Facebook, Instagram and Lemmy. YouTube, TikTok, WordPress, DEV, Hashnode and Listmonk publish the first item only. More in comments and threads.Because -m pairs by position, give every item before the last one with media its own -m, and -m "" to an item that has none. Leaving one out moves every later file onto the wrong item:Post to several channels
Post to several channels
List the IDs with commas. Each channel gets its own post:An empty ID, such as the one after a trailing comma in
-i "bluesky-id,", is refused before anything is sent.One --settings object goes to every channel in -i, so mix only channels that take the same settings. For different text or settings per channel, use a --json file.Pass a network's settings
Pass a network's settings
__type) itself, so leave it out.Describe the whole post in a file
Describe the whole post in a file
type, date, shortLink and tags at the top, and one entry in posts per channel, each with its own text and settings. Every item in value needs an image list, empty when there is no media, and each image is the id and path from postqueen upload.campaign.json
type also takes now, which publishes at once. The flags only offer schedule and draft.Good to know
- Before it saves anything, PostQueen checks each post the way the app does: the settings, the length and the media. A draft gets only the settings check and the check that each item has text or media. A refused post names the channel and the reason; see troubleshooting.
--shortLinkis on by default, which lets PostQueen swap links in the text for short links. PostQueen has no link shortener set up today, so links stay as written either way. Pass--no-shortLinkto keep every link exactly as written.- The date is required even for a draft: it is the time the post goes out once you schedule it. A date that has already passed publishes the post at once.
(post:ID)in the text, with the ID of another post of your workspace, becomes that post’s address on its network when this post is published. If that post has no address yet, the placeholder is removed.
List posts
--startDate and --endDate in ISO 8601, and to one customer with --customer. The answer is an object with a posts list:
id, content, publishDate, state (QUEUE, DRAFT, PUBLISHED or ERROR), settings (as a JSON string), releaseURL once published, error when it failed, and its integration.
Change a post
- Its settings
- Draft or scheduled
posts:list, leave out __type.Delete a post
posts:create went to several channels, each channel has its own post, and the others stay. A post that was already published stays on the network: delete it there.
Connect a published post
Sometimes a network does not return a post’s ID after publishing, and analytics cannot find the post. This happens with TikTok.postqueen analytics:post then answers {"missing": true}. Analytics shows how to connect the post with posts:missing and posts:connect.
Next steps
Examples by network
A command for each network, with the settings it needs.
Upload media
Images and videos, and waiting for a video to be ready.
Command reference
Every command and flag on one page.
Troubleshooting agents
What each error means and how to fix it.