Reducing social media cross-posting complexity
2024-08-30
What could be useful for me to minimize the complexity of cross-posting to Facebook, Twitter, Bsky, and Mastodon: a Python or Go program that does the following:
- Connects to my accounts via API.
- Uses gum, bubbletea, or huh to prompt the user for the post content.
- Editing, replying, and/or delete functionality would be seamless with the exception of Bsky and Twitter, in which case I'd have to delete the post and redo it.
- Command-line flags for
--facebook
,--twitter
,--bsky
, and--mastodon
to control which accounts to make the post to. If no account flags are supplied, then assume all. If Bsky, Twitter, and Mastodon are explicitly or implicitly passed, provide visual feedback to the user about the number of characters. The complements of each flag could also be supplied to exclude accounts, e.g.--no-twitter
. Accounts can also be configured in a JSON file to avoid using the command-line flags. - Can post photos by providing the absolute path to the file(s) on the local filesystem.
- Allows using content warnings Mastodon-style at the top of the post. On Mastodon it would use the content warning feature. On Twitter, Bsky, and Facebook it would place "CW: <text>" at the top of the post.
- Allows using sensitive content shields for photos.
- Allows adding alt-text.
- Allows tagging accounts by parsing a tag format like "%twitter:@account", "%bsky:@account". Tagged accounts on one platform would only apply to that platform. The tag format syntax would otherwise not show up in the post. Account tags and hashtags would not be used inline; they would be added to the end of the post and based on user input from optional account tag and hashtag prompts.
- Possibly an option for some hacky string gymnastics to prevent URLs from creating link previews. I dunno if this is feasible unless there is a way to opt out of them that is built in to the API methods, e.g. by adding a specific boolean parameter to the API request or something. It seems this would even benefit the platforms by reducing the load on the servers from resolving the links. I haven't looked at the APIs yet, though. But also there might be a reason there isn't, namely so that the platforms can validate the legitimacy of the links.
I'm eager, but not quite ready to get started on this yet, as I have other coding projects to refine and other entropy to clean up.