Friendly Skies puts Bluesky on your WordPress site as five native blocks. Place them
where you want them — in a post, a template part, a sidebar — and they render on your server as
ordinary HTML.
Everything above reads Bluesky’s public API. There is nothing to connect and no credentials to
store — no account, no app password, no key of any kind.
The settings screen has one option on it: how long a response from Bluesky is reused before it
is fetched again. Everything else a block does is configured on the block itself.
Every block is server-rendered and cached. Your readers load your HTML from your host. When
Bluesky can’t be reached, a block shows the last copy it fetched rather than an empty space.
Contrast meets WCAG AA, every control is reachable from the keyboard, animation respects
prefers-reduced-motion, and all output is escaped. None of that is a paid feature.
Everything above is free and stays free. Pro adds two things:
Pro is a separate plugin. You download it from your GhostLabs account, upload it, and activate
it; it then switches this plugin off. Nothing is copied or migrated, because both editions store
their settings in the same place. The FAQ below walks through it.
Friendly Skies contacts one outside service, and never just because the plugin was installed or
activated.
Bluesky (bsky.app / public.api.bsky.app) — every block reads Bluesky’s public API to
render what you asked it to show. The request contains the handle, post URL, feed or list you
put in the block, and nothing about your site or your visitors. It is made by your server, not
by your reader’s browser, and the response is cached. This happens whenever a page containing a
block is rendered, and whenever a block is previewed in the block editor (your server renders
the preview the same way), if the cache has expired. The Follow button contacts Bluesky only when
it is set to show a follower count, and otherwise contacts nothing.
Images are fetched from Bluesky itself. Avatars, profile banners, post
photos, and link-card and video thumbnails are shown from Bluesky’s own image addresses, so when a
page with a block loads, your reader’s browser requests those images from Bluesky, which receives
the reader’s IP address, browser details and the site they are on, like any image request. The
same is true of your own browser while a block is previewed in the editor. No Bluesky script,
iframe or tracking code is added to the page or the editor.
Bluesky’s terms of service: https://bsky.social/about/support/tos
Bluesky’s privacy policy: https://bsky.social/about/support/privacy-policy
Links to GhostLabs — not a service. The plugin links to two GhostLabs sites from wp-admin and
the block editor. It never contacts either one: nothing is requested from them in the background,
and the plugin sends them nothing.
Following either link is an ordinary visit to that site in your browser.
GhostLabs terms of service: https://theghostlab.io/terms-of-service
GhostLabs privacy policy: https://theghostlab.io/privacy-policy
The complete source of this plugin, including the block sources its compiled assets are built
from, is published at:
https://github.com/theghostlab/wp-ghostlabs-friendly-skies
The compiled JavaScript and CSS in this release are readable, not minified. In that repository,
pnpm install –frozen-lockfile && pnpm run build rebuilds them. Later releases may ship the same
sources minified, which GHOSTLABS_MINIFY=1 pnpm run build produces.