In this section, we will cover how to interact with the Blue Sky platform by creating posts (skeets), replying to them, and eventually, if necessary, deleting them.
library(atrrr)
Here's how you can easily post a skeet to your account:
post <- post_skeet(text = "Posting around")
By running the above command, you've successfully created a skeet with the content "Posting around."
Engaging with the Blue Sky community often means replying to existing skeets. Here's how you can craft a reply:
reply <- post_skeet(text = "Replying around", in_reply_to = post$uri)
Notice the in_reply_to parameter? This ensures that our reply is linked to the original post, creating a thread of conversation. If you don't have the URI of a skeet, a link to it will also do.
Whether it's to correct an error, remove outdated information, or any other reason, sometimes you might want to delete a skeet. Here's how:
delete_skeet(post_url = reply$uri)
Threads are a series of connected posts or "skeets" on Blue Sky. They're a great way to communicate longer ideas or stories, where each skeet builds on the previous one. In this section, we'll explore how to create a thread seamlessly.
A thread is essentially a series of individual skeets. Here's how you can do it programmatically using post_thread
:
post_thread(texts = c("This is the first amazing skeet.", "Now I am expanding upon my skeet!", "Conclusion: I skeet therefore I am."))
One of the fundamental ways to connect with other users is by following them, allowing you to see their posts in your feed. Conversely, if you decide that you no longer want to see updates from a particular user, you can unfollow them.
# Follow a user by their handle follow(actor = "benguinaudeau.bsky.social")
Media can be posted by using a path to a file. They can also be included in a thread.
First let's create some plots that we want to send:
# make a basic plot plot <- ggplot(mpg, aes(displ, hwy, colour = class)) + geom_point() # save it to a file f1 <- ggsave(filename = tempfile(pattern = "1", fileext = ".png"), plot = plot) # a second basic plot lty <- c("solid", "dashed", "dotted", "dotdash", "longdash", "twodash") linetypes <- data.frame( y = seq_along(lty), lty = lty ) plot2 <- ggplot(linetypes, aes(0, y)) + geom_segment(aes(xend = 5, yend = y, linetype = lty)) + scale_linetype_identity() + geom_text(aes(label = lty), hjust = 0, nudge_y = 0.2) + scale_x_continuous(NULL, breaks = NULL) + scale_y_reverse(NULL, breaks = NULL) # again we save it to a temporary file f2 <- ggsave(tempfile(pattern = "2", fileext = ".png"), plot = plot2)
Now we post the pictures in a thread:
post_thread(texts = c("This is the first plot on the ggplot2 website", "This is the second plot on the ggplot2 website", "And this is just text sent from the atrrr package by @jbgruber.bsky.social, @benguinaudeau.bsky.social and @favstats.eu"), images = c(f1, f2, ""), image_alts = c("first ggplot2 plot", "second ggplot2 plot", ""))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.