feat(bluesky): add external embed cards for URL previews
What kind of change does this PR introduce?
Adds support for app.bsky.embed.external when posting to Bluesky with URLs but no media attachments. Fetches Open Graph metadata (title, description, thumbnail) and creates rich link preview cards.
How it works: Detects the first URL in posts without media attachments Fetches Open Graph/Twitter Card metadata (title, description, image) Uploads the thumbnail to Bluesky and creates an app.bsky.embed.external embed Falls back gracefully if metadata fetch fails (post still publishes, just without the card)
Why was this change needed?
Because links are not noticeable in BlueSky compared to other posts and do not stand out, degrading the user experience when scheduling posts with BlueSky
Other information:
Closes https://github.com/gitroomhq/postiz-app/issues/667
I posted it on Discord and the bot said PRs are welcomed, tested the fix on my docker image.
Checklist:
Put a "X" in the boxes below to indicate you have followed the checklist;
- [X] I have read the CONTRIBUTING guide.
- [X] I checked that there were not similar issues or PRs already open for this.
- [X] This PR fixes just ONE issue (do not include multiple issues or types of change in the same PR) For example, don't try and fix a UI issue and include new dependencies in the same PR.