Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Syndicate natively to Twitter & Mastodon #84

Open
MaybeThisIsRu opened this issue Jul 3, 2021 · 5 comments
Open

Syndicate natively to Twitter & Mastodon #84

MaybeThisIsRu opened this issue Jul 3, 2021 · 5 comments
Labels
enhancement New feature or request

Comments

@MaybeThisIsRu
Copy link

MaybeThisIsRu commented Jul 3, 2021

One reason I disliked being on IndieWeb was the number of moving parts. Which is also why I'm liking this project - it's all a one big implementation that relies on just one server.

It would be cool to support native syndication rather than using brid.gy for Twitter and Mastodon, for starters.

Sorry if this is already done - I just couldn't find anything about this anywhere!

@MaybeThisIsRu
Copy link
Author

This would also involve syndicating image as attachments with alts!

Another thing to consider would be rich content: links wouldn't translate well with Twitter or Mastodon. So perhaps an individual option for each post to syndicate content or post link to the wider web.

@jamesvandyne
Copy link
Owner

Agreed – being able to syndicate content directly from Tanzawa would be ideal. All syndication is currently manual (it doesn't hurt enough to automate it, yet).

Base Thoughts

If we can figure out what the workflow would look like, I think we can define some base requirements for the feature. A couple of general thoughts about syndication:

  1. I don't think posting should be syndicated automatically on publish. There's a couple of reasons for this:

    1. Tanzawa doesn't support any kind of background tasks. Posts that have a bunch of links take a while to complete it tries to send webmentions. Adding more external requests could increase the response time to longer than the request timeout allows quite easily. This is especially true because webmentions require 2 requests per save (before content update and after content update). We could probably process webmentions concurrently to speed this up, but that feels like a bit much at this point? It may be easy with asyncio, but I'd need to research it.
    2. When I was posting with Wordpress there was a syndication checkbox (via brid.gy) and found it you'd get errors if you saved twice as the post had already been syndicated. Because there also wasn't a preview, it was always a bit of a gamble for how it would post.
  2. Syndication is a separate concern from authoring posts themselves. And as such warrants dedicated screens to make it right. Initially I had thought it might work well to handle syndication via a modal on the edit post page, but the more I think about it, it would box us in.

  3. Brid.gy is still super handy for backfeeding likes/replies as webmentions. I still think brid.gy is useful / "required" unless we were to build in some kind of polling mechanism, which is difficult without support for cron/background tasks. ( It could be done "easily" with a django management command, I'm hesitant to introduce undue complexity).

  4. "Syndication" feels a bit jargony to me. Is "Cross post" (or something similar) a better term to use in the interface?

  5. Each syndication destination is going to require some kind of settings (API keys, mostly). These can / should be managed via the Django admin?

Workflow

Create of Syndication/Cross Posts

This is assuming that all syndication can be handled with the same form.

  • Creating a new syndication would happen from the edit post button. The button should be on the meta menu (on the right), below the publish buttons and only display once the post is published (you can't syndicate a draft).

  • Clicking this button would take you to dedicated syndication page.

  • The top of the page would be a form. The form would display the syndication text and up to 4 photos (with the caption).

    The syndication text is free text and pre-filled with either the post title + link or the first 280 chars of the note. Above the text field itself would be a segmented control (tabs? radio button?) that when clicked would let you toggle between the different presets.

    You may not want to syndicate each photo, so perhaps a checkbox is warranted to let you select which photos will be sent.

  • Finally at the bottom there's some checkboxes for which networks to syndicate to. As you can only syndicate a post once per network, posts that have already been syndicated to would be disabled with text explaining that you've already syndicated to that network for this post.

  • Once syndicated they'd store the url of the syndication and create a TSyndication record.

Syndication List

I think we'd want a separate section for syndication, like we do with "Posts / Files" on the left for syndications / cross posts.

Clicking that would show you a list of your most recent syndication activity ( syndication destination (link to twitter etc..), syndicated text, link to the related post).

Selecting a crosspost would show you a (readonly?) version of the syndication Create form.


Does that sound about right? Anything you'd change or we should consider (especially regards to Mastodon, I don't have an account/haven't used it before).

@jamesvandyne jamesvandyne added the enhancement New feature or request label Jul 3, 2021
@rmdes
Copy link

rmdes commented Nov 7, 2021

for Point 2, I think Known approach was great, either for the Twitter or Mastodon plugin, you first have to add your consumer keys & secrets for twitter or token for Mastodon in the "admin view" of the plugin, then you actually connect your twitter or mastodon account, using the "admin credentials" configured in the "admin view" of each plugin.

Next you get to see the different accounts to syndicate to on the front-end, when you are publishing a post or bookmark or article, the syndication targets sit next to the publish button and you can decide to syndicate at the moment of publishing or later by editing the post and selecting a syndication target.

to respect mastodon/twitter "good practice" no more than one account should be connected per "service"
1 twitter,
1 mastodon
1 another service

Then, below each syndicated posts/articles/bookmark you can see just before the comment area, where those posts got syndicate to.

@rmdes
Copy link

rmdes commented Nov 7, 2021

Another point : the syndication targets (twitter, mastodon etc..) if/when well implemented can also be "read" by any micropub app, so that, even when using third party tools to publish the syndication target are served via the mobile app interface (Indigenous does that really well) allowing the user to publish & syndicate right from the mobile app.

@rmdes
Copy link

rmdes commented Feb 13, 2022

I'm willing to test this part, since I have a twitter/mastodon account, I just need to know how to configure syndication targets, try it out, document it and contribute to the wiki or somewhere on how to do this .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants