header source
my icon
esplo.net
ぷるぷるした直方体
Cover Image for multipostter - Effortless Multi-Posting Tool

multipostter - Effortless Multi-Posting Tool

about13mins to read

Background

The SNS landscape is in chaos. The text-centric microblogging SNS scene is particularly tumultuous.

In the past, one could get most information by just checking Twitter. However, with the disappearance of user-friendly clients and the difficulty in obtaining information, it has become challenging for both information seekers and broadcasters. For broadcasters, posting on Twitter alone no longer guarantees sufficient reach due to user dispersion.

Fragmented Networks

Some SNS platforms use common protocols that allow access to other networks. For example, servers connected via ActivityPub like Mastodon and Misskey can view each other's posts or reply to them. Similarly, platforms like Bluesky, which is based on an open protocol called ATProtocol, make integration easier.

However, if protocols differ, seamless integration becomes difficult. Additionally, each SNS has its own way of handling these integrations. Even Threads' fediverse support took a long time.

Ideally, all networks should be connected so that users can immerse themselves in their preferred SNS while easily accessing others—a single window to view everything would be ideal but practically challenging.

Countermeasures

What feasible countermeasures are there? A simple solution is multi-posting across various networks.

For instance, looking at how Frieren skillfully uses Bluesky magic reveals that some of their old Twitter posts are mirrored on Bluesky. Although it's unclear why not all posts are mirrored (perhaps only important announcements), this multi-posting allows users who use Bluesky clients to access information easily.

Let's explore specific multi-posting methods. Broadly speaking, there are two approaches:

Multi-Posting - Push Type

One method involves simultaneously posting to multiple networks at the time of posting. This is known as the push type and is relatively common.

This approach does not require a server and allows real-time reflection with fine-grained customization for each SNS. It's suitable for those who want to fully utilize the features of various SNS platforms.

However, a significant drawback is the need for specialized clients for posting. Users often find it cumbersome because they cannot use their familiar clients; thus, they might stop using it altogether. While this might be acceptable for corporate control over all posts, it's challenging for general users.

Push Type
Push Type

Multi-Posting - Pull Type

The other method involves detecting posts and mirroring them across multiple networks. This is known as the pull type.

In this method, one primary network is designated (e.g., Misskey.io), and its posts are detected and mirrored onto other networks (e.g., Bluesky and old Twitter). Although there are drawbacks such as requiring a server and potential delays, this approach significantly reduces effort in achieving multi-posting.

Pull Type
Pull Type

For our tool created this time around, we aim to implement multi-posting using the pull type.

Technical Details

Constraints and Design

Given current conditions, we set Misskey.io as our primary network and Bluesky along with old Twitter as mirror targets. These settings can be changed but note that Twitter's API currently only allows free write operations; hence it cannot serve as our primary network.

Next, we define a universal posting format applicable across these SNS platforms by converting detected posts from our primary network into this format before mirroring them onto other networks. The format includes common elements like post text strings, attached images or videos, and timestamps but must consider file attachment constraints specific to each SNS—Misskey.io has fewer restrictions compared to Bluesky's strict limit of one file per post up to 1 MB or old Twitter's limit of four attachments per post.

Detecting Misskey Posts

Using Misskey.io API Doc, we issue HTTP requests to detect posts including replies or renote options[1]. This allows us to easily obtain lists of posts suitable for mirroring onto other networks[1:1].

Handling Bluesky's Size Limitations

As mentioned earlier, Bluesky has stringent file size limits—each attachment must be under 1 MB. To address this issue within our tool:
We use sharp library functions on images attached from Misskey.io posts ensuring they meet size requirements before uploading them onto Bluesky.

Effortless Serverless Configuration

Our tool employs a fully serverless architecture managed via Infrastructure as Code (IaC), making management straightforward:

The core functionality involving detecting posts from our primary network then mirroring them onto other networks runs on AWS Lambda, scheduled every ten minutes[2]. While there may be some delay (~10 minutes), it should still be acceptable given its benefits:

Tracking which posts have been mirrored uses simple records stored within DynamoDB.

This setup not only simplifies management but also fits within free tiers ensuring zero cost[3]. Additionally:
We utilize AWS CDK enabling deployment via single commands making repairs easy if needed[3:1].

Usage

The source code is available on Github requiring knowledge about AWS services along with respective SNS APIs making it less accessible than desired but still worth exploring for interested parties:

https://github.com/esplo/multipostter

Conclusion

API-less SNS platforms are obsolete

脚注
  1. JavaScript clients were available but have been archived https://github.com/misskey-dev/misskey.js/ ↩︎ ↩︎

  2. Integrating sharp library into Lambda functions can be challenging ↩︎

  3. Although minimal costs might incur depending on usage patterns ↩︎ ↩︎

Share