Friendly Skies puts Bluesky on your WordPress site as five blocks: Bluesky Post, Feed, Thread, Profile Card and Follow Button. Each block is rendered by your site as ordinary HTML and cached, and none of them needs a Bluesky account.
Friendly Skies Pro adds three more sources and four more layouts to the Feed block, and Import from Bluesky, which brings your own Bluesky posts into WordPress on a schedule. Sections that only apply to Pro say so in their heading.
Friendly Skies reads from Bluesky and never writes to it.
Installation
Friendly Skies
Friendly Skies is not in the WordPress.org plugin directory yet, and the steps for installing it from there will be added here once it is.
Friendly Skies Pro
After you buy Friendly Skies Pro, the receipt screen shows two values that look alike. The one the plugin needs is the License key. The License ID above it is not a key. Copy the license key, then download the plugin zip file from the same screen. The license key is also in your receipt email.
If you leave the receipt before copying the key, sign in to your account and open Licenses. For an active license, click the key icon beside Friendly Skies Pro to copy the key again, or the download icon to download the zip again.
Then, in WordPress:
- Go to Plugins and open the Add Plugins screen, then click Upload Plugin at the top.
- Choose the zip file and click Install Now.
- Click Activate Plugin.
- Go to Settings → Friendly Skies. On the Licenses tab, paste your key into the License Key field and save it.
Switching from Friendly Skies to Pro
Friendly Skies Pro is a separate plugin. Install it as above, with the free plugin still active. When Friendly Skies Pro starts, it deactivates the free plugin.
Every block on every page keeps working through the switch, because both plugins use the same blocks and the same stored settings. The free plugin is left installed but inactive, and you can delete it whenever you like.
Adding a block
In the block editor, search the inserter for bluesky. The five Friendly Skies blocks are listed by name:
- Friendly Skies: Bluesky Post
- Friendly Skies: Feed
- Friendly Skies: Thread
- Friendly Skies: Profile Card
- Friendly Skies: Follow Button
A new block asks for one thing: a post URL, a thread URL or a handle. Everything else is in the
block's sidebar. A handle is the name after the @ on Bluesky, such as yourname.bsky.social.
Posts, threads, feeds and lists are pasted as their bsky.app links.
The blocks work anywhere a block goes: in a post or page, in a template part, or in a sidebar.
Bluesky Post
Shows one post: the author, the text, images, video thumbnails, quoted posts, link cards and engagement counts. Paste the post's bsky.app URL. To change it later, use Edit URL in the block toolbar.
Settings, under Embed Settings:
- Theme — System, Light or Dark.
- Display Mode — Bluesky Card draws the post in a card of its own. Theme Integrated removes the card's background, border and padding, and uses your theme's font and text color.
- Show engagement counts and Show timestamp.
- Click behavior — Open on Bluesky, or No link.
Feed
Shows a stream of posts.
Source
Choose a Source Type, then fill in its field:
- User Feed — the posts of one account. Enter its Handle.
- Search (Friendly Skies Pro) — posts matching a Search Query, from across Bluesky rather than one account.
- Custom Feed (Friendly Skies Pro) — any Bluesky custom feed. Paste its Feed URL.
- List (Friendly Skies Pro) — the posts from the accounts on a Bluesky list. Paste its List URL.
When you add a new Feed block, you can paste a custom feed or list link from bsky.app instead, and the block switches to that source. Both are Friendly Skies Pro sources.
Layout
- List — one post after another.
- Grid — with 2, 3 or 4 Columns.
- Masonry (Friendly Skies Pro) — staggered columns of varying height, so posts keep their natural proportions. Set the Gap (px).
- Carousel (Friendly Skies Pro) — a horizontal slider with arrows and pagination. Settings: Autoplay and Autoplay speed (ms), Arrow Style (Rounded, Square or Minimal), and Auto height, which fits the carousel's height to each slide.
- Highlight (Friendly Skies Pro) — one featured post shown large, above a row of smaller ones. Featured Post picks it: Newest, Most Liked, or Pinned, which features the post in Pinned Post URL (under Filters and display). While a pinned post is set and in the feed, Newest features it too.
- Ticker (Friendly Skies Pro) — a single line of posts scrolling continuously. Set its Scroll Speed (px/sec) and Direction.
In the free plugin
The free Feed block still lists the Pro sources and layouts. Choosing one shows a notice that names what it needs, and the block keeps the free choice it had. Nothing on your page changes.
Filters and display
- Maximum Posts.
- Include replies and Include reposts.
- Content Filter — All, Text only, With images, With video, or With links.
- Pinned Post URL — moves that post to the top, if it is among the posts the feed shows. It does not bring in an older post.
- Theme — System, Light or Dark.
- Show engagement counts, Show timestamps, and Truncate long posts at a number of characters you choose.
Thread
Shows a whole conversation: the first post and its replies, with each level of reply indented under the post it answers. Paste the Thread URL, which is the bsky.app URL of the first post.
Settings:
- Reply Depth — how many levels of replies to show.
- Show only OP replies — only the replies written by the thread's author.
- Collapse after N posts — posts past this number, counting the first post, are folded away behind a Show more replies button.
- Theme, and Show engagement counts.
- Click Behavior — Open on Bluesky, or Expand only.
Profile Card
Shows a profile's avatar, banner, bio and stats. Enter the account's handle.
Settings, under Profile Settings:
- Theme — System, Light or Dark.
- Card Style — Full, Compact or Minimal.
- Show stats and Show bio.
- CTA button — None, View Profile, or Follow on Bluesky.
The Minimal style shows the avatar, name and handle only, so it leaves out the stats, the bio and the CTA button whatever those settings say.
Follow Button
A styled link to a Bluesky profile. Enter the account's handle.
Settings, under Button Settings:
- Label — the button's text. It starts as Follow on Bluesky.
- Style — Primary, Secondary, Outline or Minimal.
- Size — Small, Medium or Large.
- Theme — System, Light or Dark.
- Show Bluesky icon, and Show follower count.
Colors and styling
Every block has a Theme setting. System follows the reader's light or dark preference, and Light and Dark fix one.
The blocks are styled with CSS custom properties. Each block sets them on its own wrapper, so
override them on [data-ghostlabs-fs-theme]; a value set on :root or body has no effect:
--ghostlabs-fs-bg--ghostlabs-fs-text--ghostlabs-fs-text-secondary--ghostlabs-fs-link--ghostlabs-fs-border--ghostlabs-fs-hover--ghostlabs-fs-engagement
Caching, and when Bluesky can't be reached
Each block saves what it fetched from Bluesky for a while, so most page views make no request to Bluesky at all.
In the free plugin, Settings → Friendly Skies has one setting: Cache duration, from 5 minutes to a day. Until you save a duration there, each kind of block uses its own default: 5 minutes for a feed, 15 for a post or a thread, and an hour for a profile. Friendly Skies Pro uses those defaults, and has no setting for them.
When the saved copy has expired and Bluesky can't be reached, the block shows a short message in its place rather than an empty space. A Bluesky Post or Profile Card block adds a link to the post or profile on Bluesky. A Follow Button still shows, without its follower count.
Import from Bluesky — Friendly Skies Pro
Import from Bluesky brings your own Bluesky posts into WordPress, on a schedule. It is on the Import from Bluesky tab of Settings → Friendly Skies, and it needs your license key saved on the Licenses tab first. An expired key still works.
Connecting your account
Import is the one part of Friendly Skies that signs in to Bluesky, because it reads your own account. It uses an app password, not your Bluesky password. Create one at bsky.app/settings/app-passwords, the page the tab links to.
- Enter your Handle and the App Password.
- Click Test Connection to check them, then Connect.
Once connected, the tab shows the Connected Account and its Sync Status, with Sync Now to import straight away and Disconnect to stop.
Import settings
- Sync Frequency — Every 15 Minutes, Every 30 Minutes, Hourly, Twice Daily, or Daily. Hourly to start with.
- Destination — WordPress Posts, or a Custom Post Type that Friendly Skies creates for the imports. For a custom post type, set its URL Slug (the path its posts live under) and its CPT Label (its name in the admin menu).
- Post Style — see below.
- Import Hashtags As — Tags, Categories, Both, or None. Tags to start with.
- Filters — Include replies, Include reposts, and Media only (skip text-only posts). All three start off. With Include reposts on, the posts you reposted come in too, and those were written by other people.
- Publishing — Auto-publish imported posts. Off to start with, so imported posts are saved as drafts for you to review.
- Sync Limits — how many posts the first import brings in (Initial sync, 50 to start with), and how many each scheduled import after it brings in (Ongoing sync, 25 to start with).
Click Save Settings when you are done.
What an imported post contains
Post Style decides what is stored:
- Bluesky Embed Block, the default, stores the post's link in a Friendly Skies Bluesky Post block, with a title taken from the start of the post. The post's text and images come from Bluesky when the page is shown, the same way as any Bluesky Post block.
- Theme Native (rich text) writes the post's text into WordPress as paragraphs, in your theme's own style, with its images, link card or video thumbnail below. The text and links are stored in your database.
Either way, images are shown from Bluesky's own image addresses. They are not copied into your Media Library.
Updates and your license — Friendly Skies Pro
Friendly Skies Pro updates from the Plugins screen like any other plugin.
Each license covers the number of sites you bought it for. If it expires, Friendly Skies Pro keeps working: the blocks, the Pro sources and layouts, and Import from Bluesky. Only updates stop until the license is renewed.
Your data, and removing the plugin
Deactivating or deleting Friendly Skies or Friendly Skies Pro deletes nothing. Your settings stay in the database, and so do imported posts. Posts imported into Friendly Skies' custom post type are only shown while Friendly Skies Pro is active, because the plugin is what registers that post type.
External services
Bluesky (public.api.bsky.app and api.bsky.app). Every block reads Bluesky's public API to show what you asked it to: the request carries the handle, post, feed, list or search you put in the block. Like every request WordPress makes, it also carries your WordPress version and your site's address. Nothing about your visitors is sent. The request is made by your server, not your reader's browser, and the answer is cached.
Images are the one thing your reader's browser loads from Bluesky itself. Avatars, profile banners, post photos, and link-card and video thumbnails are shown from Bluesky's own image addresses, so the browser requests them from Bluesky, as it would any image. No Bluesky script, iframe or tracking code is added to the page.
Bluesky sign-in (bsky.social) — Friendly Skies Pro, Import from Bluesky only. To read your own posts, the plugin signs in with your handle and app password. It keeps the session Bluesky returns, encrypted, rather than the app password.
The GhostLabs license server (enter.theghostlab.io) — Friendly Skies Pro only. To check your license and offer updates, the plugin sends your license key, your site's domain name, and the plugin's name and edition. Like every request WordPress makes, it also carries your WordPress version and your site's address. The answer is cached for up to a day, so this is not a request on every page. Nothing about your visitors or your content is sent.
Bluesky's terms of service and privacy policy apply to its services.
Requirements
- WordPress 7.1 or later
- PHP 8.1 or later
Getting help
The Help Center has contact details.