Sign in

Blue Bots, Done Quick!

@bluebotsdonequick.com
1K followers 26 following 309 posts

Information and updates about Blue Bots, Done Quick! - a free tool that allows you to easily build your own Bluesky bot using Tracery code. Make your own at bluebotsdonequick.com! (Created by @olafmoriarty.no)

PostsRepliesMedia
Blue Bots, Done Quick! @bluebotsdonequick.com · 24/07/2025
No workaround needed for that - just create a bot, and under "Posting frequency" you select "At custom times" and enter when you want it to post and what text (or Tracery rule) you want it to post.
Screenshot from bluebotsdonequick.com.

Posting frequency
How often do you want the bot to post?

(Unselected option) At a regular interval
(Selected option) At custom times

Type (dropdown menu): Daily
Time (dropdown menu): 08:30, UTC+02:00
Tracery rule (text input): Don't forget to hug someone today!
If you leave this field blank, #origin# will be posted.
Icon: trashcan
Button: Add another row...

Note: Bots that post frequently will be less accurate than bots that post less frequently. Bots that are set to post every ten minutes may realistically only post every 15-20 minutes, while a bot that posts weekly will normally post on time every week.
120
Blue Bots, Done Quick! @bluebotsdonequick.com · 29/05/2025
NEW FUNCTION: BBDQ now has an advanced post scheduler! - Scroll down to "Posting frequency" and select "At custom times" - Add daily, weekly or monthly posting schedules, as many as you want - Enter times in your own local timezone - Enter what text to post at that time - or stick with the default
Screenshot of the "Posting frequency" box on bluebotsdonequick.com.

Posting frequency

How often do you want the bot to post?
Radio button: At a regular interval
Radio button (selected): At custom times

Type
Dropdown menu set to "Daily"

Time
A text field containing "13:50"
UTC+02:00

Tracery rule
An input field with placeholder text #origin#
If you leave this field blank, #origin# will be posted.

Button: Add another row...

Note: Bots that post frequently will be less accurate than bots that post less frequently. Bots that are set to post every ten minutes may realistically only post every 15-20 minutes, while a bot that posts weekly will normally post on time every week.
2217
Blue Bots, Done Quick! @bluebotsdonequick.com · 24/05/2025
(Here's what I have so far. I should probably post these things on the Patreon, but I'm hoping it's not too annoying of an update even though it's a WIP.)
A box with the header "Posting frequency".
Under the question "How often do you want the bot to post?", you can pick "At a regular interval" or "At custom times", and "At custom times" is selected. Below, three yellow boxes each contain a "Type" dropdown, set to "Daily", "Weekly" and "Monthly" respectively. The Weekly row has checkboxes to select days of the week, the Monthly row has an input field to enter dates, e.g. "7" or "7,14,21,28" (as described in a help text below the input). Each row also has a Time field to enter a value in UTC+02:00, a field for entering a Tracery rule, and a trashcan icon to delete the row. At te bottom there's a green "Add another row..." button.
151
Blue Bots, Done Quick! @bluebotsdonequick.com · 05/05/2025
These are the thirty-nine I find when I search the database for "scripts that contain '{svg' and either '{alt' or '</svg> ' (with a blank space after it)". No guarantee for the quality of the alt texts, but if you want to check them out manually this list would be a decent place to start.
aliensaliens.bsky.social
animalsholbox.bsky.social
anxietybot.bsky.social
aprbot.bsky.social
blueskiesbot.bsky.social
carbonpaper.bsky.social
caturday.bsky.social
cuteslimebot.bsky.social
danielsdgahbot.bsky.social
dentdelleo.bsky.social
disbot.bsky.social
emrisius.bsky.social
fabdul.bsky.social
fakejamesbond.bsky.social
fitbott.bsky.social
foodcombinationbot.bsky.social
fromsoftbot.bsky.social
fryskefreon.bsky.social
grandmas-quilt.bsky.social
happyworkbot.bsky.social
hitomezashibot.bsky.social
inkle-pattern-bot.bsky.social
leithel.bsky.social
lifebot.bsky.social
maslowbot.bsky.social
meandude.bsky.social
missingpetsmx.bsky.social
quiltybot.bsky.social
recipeinventorbot.bsky.social
shwrthghts.bsky.social
socksbot.bsky.social
soft-skylines.bsky.social
somenicecake.bsky.social
spacerays.bsky.social
svgbot.bsky.social
tenprint.bsky.social
textflowers.bsky.social
vivivviiviek.bsky.social
zhouk2.bsky.social
020
Blue Bots, Done Quick! @bluebotsdonequick.com · 27/04/2025
The automated fix will take a couple of days, but if you want to expedite the process of getting your bot back up and you want to help me out, here's what you can do.
How to get your BBDQ bot up and running again
Open your browser’s Dev Tools. In most browsers, you can do this by pressing F12. A new sidebar will open (in Chrome and Edge it opens in the right part of the window, in Firefox it opens at the bottom of the window.
Find the «Network» tab and click on it. If you see a row of buttons like the one pictured here (“All”, “Fetch/XHR”, “Doc” etc.), click Fetch/XHR. (This step is not required but makes the next steps easier.)
  
Open Bluesky (https://bsky.app).
Log in to your bot account, or switch to your bot account.
You’ll notice that as data is loading, new entries are added to the list of rows in the Network tab. Click on one that begins in app.bsky. and click it.In the “Headers” tab, find the “Request URL” and copy the domain part of it – that is, everything before /xrpc/. 
Send me (@bluebotsdonequick.com) a DM with the request URL domain so that I can add it to the database. I’ll send you a reply when I’ve updated it (done manually, so it can take a few hours, more if I’m sleeping), and at that point your bot should work as normal again.
If you have multiple bots you need to get up, repeat the whole process.
Note – This is something that will be fixed in the future, but for now, this change will affect how you log in to bluebotsdonequick.com. Above the login form, where it says “Provider: https://bsky.social”, you have to click “edit” and change this to the request URL domain you sent me on DM.
 
Note 2 – As soon as I have the time for it, hopefully next week, I will find a way to automatically update providers for all remaining bots.
Note 3 – For now this fix only works for existing bots. You will still receive an error message when trying to create a new bot.
5184
Blue Bots, Done Quick! @bluebotsdonequick.com · 23/04/2025
I believe it's these, although I'll admit I haven't double-checked it (those are the font-families of all fonts that show up when I use the "list fonts" command in imagick).
AvantGarde
Bookman
C059
Century Schoolbook L
Courier
D050000L
DejaVu Sans
DejaVu Sans Mono
DejaVu Serif
Dingbats
Droid Sans Fallback
Helvetica
Helvetica Narrow
NewCenturySchlbk
Nimbus Mono L
Nimbus Mono PS
Nimbus Roman
Nimbus Roman No9 L
Nimbus Sans
Nimbus Sans L
Nimbus Sans Narrow
Noto Mono
P052
Palatino
Standard Symbols L
Standard Symbols PS
Symbol
Times
URW Bookman
URW Bookman L
URW Chancery L
URW Gothic
URW Gothic L
URW Palladio L
Z003
111
Blue Bots, Done Quick! @bluebotsdonequick.com · 20/04/2025
BLUE BOTS, DONE QUICK EASTER UPDATE! - You can now (*finally!*) set your bot to generate custom replies based on the message it's replying to! - There's now a main menu - this should make some pages easier to find! - Oh, yeah, and I added a Patreon. Let me know what you think!
Screenshot from bluebotsdonequick.com. In a box titled "Replies" a dropdown menu is set to "Post a custom reply". A large yellow box (a tab on top is titled "Editor view", the other tab possible is "JSON view") contains a list of input fields, containing:

"If message contains"
dinner
"Reply with"
My dinner suggestion for today is: #dinnerSuggestion#

"Else if message contains"
ice cream
"Reply with"
My current favorite ice cream flavor is #iceCreamFlavors#

"Else if message contains"
(the input field is blank)
"Reply with"
(the input field is blank)

"For all other messages: Reply with"
Ask me about dinner or ice cream!

At the bottom of the yellow box, it says "Keyword fields are case-insensitive and can contain regular expressions."

Below the yellow box, there is a "Reply preview" header (with a link to reroll it), and an input field labeled "Input (change this to see how the bot will respond to different user messages):", containing lorem ipsum text. And then there's a preview of a bluesky post, saying "Ask me about dinner or ice cream!".
1309
Blue Bots, Done Quick! @bluebotsdonequick.com · 27/03/2025
{ "origin": [ "[nameA:#name#]#nameA# is the same name as #nameA#" ], "name": [ "Alpha", "Bravo", "Charlie", "Delta" ] } ("nameA" can be anything, doesn't have to start with name)
{
	"origin": [
		"[nameA:#name#]#nameA# is the same name as #nameA#"
	],
	"name": [
		"Alpha",
		"Bravo",
		"Charlie",
		"Delta"
	]
}
210
Blue Bots, Done Quick! @bluebotsdonequick.com · 23/03/2025
They're there, but yeah... They're ridiculously hard to find. But that's where clicking this tiny question mark takes you.
The editor window of bluebotsdonequick.com. next to the editor view and json view tabs there are two icons, a question mark and a cog.
111
Blue Bots, Done Quick! @bluebotsdonequick.com · 13/03/2025
Yes (for posts containing images):
{label}: Add a label to suggestive images
Use {label [label-name]} to add a label to your post, declaring that it contains adult content. [label-name] can be one of the following values:

porn - for adult content
sexual - for what BlueSky calls "less intense sexual content"
nudity - for non-sexual nudity
graphic-media - for violence / gore
Other values than one of these four, as far as I know, will not work.

The label will only be attached to the post if it contains images (including SVGs).

{
	"origin": [
		 "{img https://bluebotsdonequick.com/image.png An oil painting of a naked man attacking a Tesla with a battle mace.}{label nudity}"
	 ]
}
121
Blue Bots, Done Quick! @bluebotsdonequick.com · 25/01/2025
Yeah, that functionality already exists. 😊 It's probably easiest to set up with the {item} tag (I'm using that for my Dracula bot). You'd have to map hours onto "part of day" tags yourself, but it shouldn't be too difficult - here's a quick mockup on how to do it.
{
	"origin": [
		"{item #deborahTimes# {hour}}"
	],
	"deborahTimes": [
		"#deborahNight#", "#deborahNight#", "#deborahNight#", "#deborahNight#", "#deborahNight#",
		"#deborahEarlyMorning#", "#deborahEarlyMorning#", "#deborahEarlyMorning#",
		"#deborahMidMorning#", "#deborahMidMorning#", "#deborahMidMorning#",
		"#deborahAroundNoon#", "#deborahAroundNoon#", "#deborahAroundNoon#",
		"#deborahAfternoon#", "#deborahAfternoon#", "#deborahAfternoon#", "#deborahAfternoon#",
		"#deborahEvening#", "#deborahEvening#", "#deborahEvening#", 
		"#deborahLateEvening#", "#deborahLateEvening#",
		"#deborahNight#"
	],
	"deborahEvening": ["This message will only be displayed between 6 PM and 8:59 PM (UTC, so adapt to your timezone!)."]
}
220
Blue Bots, Done Quick! @bluebotsdonequick.com · 25/01/2025
Hmm, I do believe it should be possible to do that already using e.g. the {hour} shortcode. (I also have a super-crazy to-be-added-soon very-out-of-the-box shortcode idea that I think would add a lot of nuance to a project like that.)
{date}, {hour}, {month}, {monthName}, {weekday}, {weekdayName}: Date and time

Add the current time or date to your output, or use it to generate output. All given times are UTC.

Use {date [php date format]} to insert any date, where the attribute is a PHP datetime format:

{
	"origin": [
		 "Today is {date F jS, Y}."
	 ]
}

For simplicity I've also added shortcodes for a couple of the most common date strings:

{hour} returns the current hour in UTC time on a 24-hour clock as a two digit number between 00 and 23.
{month} returns the current month as a two digit number between 01 and 12.
{monthName} returns the current month, January-December.
{weekday} returns the current day of the week as a number between 0 (Sunday) and 6 (Saturday).
{weekdayName} returns the current day of the week, Sunday-Saturday.

Dates are parsed before the Tracery code runs, so it can be used in tag names:

{
	"origin": [ "{weekdayName} is a #rhyme{weekday}#" ],
	"rhyme1": "bon day",
	"rhyme2": "blues day",
	"rhyme3": "Heaven's day",
	"rhyme4": "worse day",
	"rhyme5": "bi day",
	"rhyme6": "latter day",
	"rhyme0": "fun day"
}

While this is possible, in most cases it would probably be a better idea to use the {item} tag.
240
Blue Bots, Done Quick! @bluebotsdonequick.com · 28/12/2024
Yep, and with very little brain/learning involved. 1. Register a new bluesky account 2. Create a bot password and log in to bluebotsdonequick.com 3. Write "KEEP CALM\nAND\n#something#" in the origin box 4. Click "something" and write your list 5. Fill out the rest of the settings and activate bot
The editor view on Bluebotsdonequick.com. The origin box contains the text "KEEP CALM\nAND\n#something#". Under the textbox there's a "something" button.The editor view on Bluebotsdonequick.com. The "something" rule is open as a child of origin and contains the list

GO ON
RUN A MARATHON
RAISE YOUR SON
FEEL LIKE YOU BELONG
SING A SONG
SEW A THONG
DO IT WRONG
WATCH KING KONG
FORGET THE RHYME STRUCTURE
4173
Blue Bots, Done Quick! @bluebotsdonequick.com · 20/12/2024
There's even a shortcode that makes this even easier: {item [#rule-name#] [number]} {item #foods# 2} returns the third item in the "foods" rule (zero is the first). {item #foods# {weekday}} returns the sixth item from "foods" on Fridays, the third on Tuesdays, etc. {item #foods# {n}} works, too!
JSON:
{
	"origin": [ "{weekdayName} is a {item #rhymes# {weekday}}." ],
	"rhymes": [ "fun day", "bon day", "blues day", "Heaven's day", "worse day", "bi day", "latter day" ]
}

{
	"origin": [ "{n} is an {item #parity# {n}} number." ],
	"parity": [ "even", "odd" ]
}
160
Blue Bots, Done Quick! @bluebotsdonequick.com · 20/12/2024
If that sounds pointless, let me add that both date/time functions and the n function *can be used inside tag names*. Which means you can now write a bot that returns different content based on what month it is, or a bot that loops through a dataset and moves on to the next dataset when complete.
JSON:

{
	"origin": [ "{weekdayName} is a #rhyme{weekday}#" ],
	"rhyme1": "bon day",
	"rhyme2": "blues day",
	"rhyme3": "Heaven's day",
	"rhyme4": "worse day",
	"rhyme5": "bi day",
	"rhyme6": "latter day",
	"rhyme0": "fun day"
}JSON:
{
	"origin": [ "This message has been displayed #parity{n % 2}.a# number of times. " ],
	"parity0": [ "even" ],
	"parity1": [ "odd" ]
}
172
Blue Bots, Done Quick! @bluebotsdonequick.com · 20/12/2024
NEW SHORTCODES: Labels! You can now self-label your images with: {label porn} {label sexual} {label nudity} {label graphic-media} Languages! If your post contains multiple languages, or you need to set it to another language than your default, use {lang [ISO 639-1 language code]}
JSON:

{
	"origin": [
		 "{img https://bluebotsdonequick.com/image.png An oil painting of a naked man attacking a Tesla with a battle mace.}{label nudity}"
	 ]
}JSON: 
{
	"origin": [ "#welcome.capitalize#, #welcome#, #welcome#!" ],
	"welcome": [ "willkommen{lang de}", "bienvenue{lang fr}", "welcome{lang en}" ]
}
150
Blue Bots, Done Quick! @bluebotsdonequick.com · 20/12/2024
What's that, you prefer to edit JSON directly? Well, you can still do that by clicking the JSON tab. And now it has syntax highlighting! (Caveat: a LOT of syntax highlighting makes the website go SLOW. So you CAN turn it off, and it will always be turned off if your code is > 100,000 characters.)
An editor window containing a JSON object with syntax highlighting.
150
Blue Bots, Done Quick! @bluebotsdonequick.com · 20/12/2024
To edit another rule, double-click it directly in the editor window, or click the button corresponding to the rule underneath the textarea. Type in a reference to a new rule, and the corresponding button will appear automatically. Is a single newline a bad separator for you? Change it in the menu.
The same editor, but there is now a button on top to go back to origin, and the editor window is labeled "adjective" instead of origin and contains the contents of the adjective rule.A menu where you can choose mode (editor view or JSON view), syntax highlighting (On or Off) and Separator (Newline, Double newline, or {{SEPARATOR}}).
140
Blue Bots, Done Quick! @bluebotsdonequick.com · 20/12/2024
The next time you log in to your bot dashboard, the default editor looks like this. These are the elements in your origin rule, one element on each line. No quotation marks = no need to escape contents. And since you're not writing the JSON - no syntax errors!
The new BBDQ editor window, which looks more like a textarea with text than a JSON object. Also it has syntax highlighting. Under the textarea are clickable buttons, one for each Tracery rule referenced in the textarea.
150
Blue Bots, Done Quick! @bluebotsdonequick.com · 19/11/2024
A few more changes to BBDQ: - You can now set your posting frequency to "Never" to make a bot that posts replies and nothing else. - Post preview now shows alt texts. It also warns you if your images don't have alt text. - Post previews can now be regenerated by clicking "Reroll".
The "Posting frequency" dropdown. The top option is now "Never".A post preview with images now contain text underneath the images. The first line is "Alt text 1" followed by the alt text, the second line is "Alt text 2: Alt text is missing for this image" in red.There is now a "Reroll..." link under the post preview.
2162
Blue Bots, Done Quick! @bluebotsdonequick.com · 08/11/2024
Did some changes to the post previews that show up when you edit your bot. Images and SVGs in posts now show up in previews instead of it just saying "[Image]". Also, changed the design of them so that they look more like bluesky posts, instead of just being grey boxes.
The header "Post preview", followed by what looks like a bluesky post from "Wanna feel old? (bot)" with the text "Sarah Michelle Gellar is the same age in 2024 that Mark Hamill was in 1998."
072