Automated retweets: Question about rule changes

restapi
retweet
api
automation

#1

Hi all!

I have a question, about this specific part of the Twitter Automation rules and best practices:

“Automated Retweets: Provided you comply with all other rules, you may Retweet or Quote Tweet in an automated manner for entertainment, informational, or novelty purposes. Automated Retweets often lead to negative user experiences, and bulk, aggressive, or spammy Retweeting is a violation of the Twitter Rules.”

Unless I’m mistaken, this has changed recently, because in the past I recall the rules stating very clearly that any form of automated retweeting was prohibited (essentially the first sentence wasn’t there).

My question relates to how exactly Twitter interprets/defines “bulk, aggressive, or spammy retweeting”. I’m aware this is likely to be a common sense issue, but I felt it was best to clarify it as I’ve found Twitter’s machine learning algorithms to be rather overzealous in the past when deciding what constitutes bad behaviour.

I use my Twitter account to automatically tweet artwork from a lot of artists - approximately a thousand or so - which I manage internally in my app with a queuing system to ensure I can post at consistent intervals. However, I can see a potential problem with retweeting here, in that the twitter machine learning algorithms, not seeing my internal management, might see my account retweeting all manner of seemingly “random” or “unrelated” tweets from different users and thus consider it to be “aggressive” or “spam”.

Any information about how Twitter views this (specifically, how Twitter intended this feature to be used) would be greatly appreciated :slight_smile:


#2

You’re right that we recently clarified the rules:

I’d have to ask someone on our policy side to answer in more detail if they are able, but in the meantime I’d also point out that it’s very difficult for us to put definitive statements out around “how exactly” we define certain spammy parameters, because our algorithms are adaptive and need to be able to respond to changes from bad actors. In general though yes, I’d suggest taking a common sense approach and avoiding exclusively Retweeting, adding specific hashtags or “overdoing it”.


#3

Ahh, thanks for showing me that (also, sorry for putting this in the wrong forum category, I noticed you moved it).

That’s no problem - I understand it’s unreasonable to expect a precise definition of that considering the algorithms adapt themselves. What I intend to do is have retweets every 5-20 minutes for half the day, and every 30mins-2hours for the other half, with automatic non-retweet posts scattered in between. Essentially, I’ll be retweeting when an artist is on twitter, and posting automatically from other sources when they don’t use it - hopefully that should be fine to avoid being seen as exclusively retweeting, though as of yet I’ve no clue what the ratio of retweets to non-retweets will be.

Anyway, if you could ask if there’s any more information about that from someone on the policy side of things, I’d be very grateful (though I understand it’s likely there might not be any extra info on it) :slight_smile:

Accidentally submitted this post before I finished writing it earlier by enter instead of shift-enter, whoops, sorry for edit :stuck_out_tongue:


#4

We’ve always allowed automated retweeting, but, given the potential for spam, we take a fairly aggressive stance towards enforcing our rules here. Automated, low-quality retweets can be annoying or disruptive to our users, and we want to keep the platform spam-free and safe for all.

As @andypiper noted, it’s difficult for us to provide any kind of hard and fast rule around what might be detected by our systems as bulk retweeting. But the frequency you’re describing sounds like something that our systems would likely catch as automated bulk retweeting. Content aggregation can be a valuable use case, but at high volume, it tends to be more disruptive than useful.

The last note I’d add from a policy standpoint is that the use of hashtags (and particularly, any kind of trending or high-profile hashtag) with automatically posted or retweeted content can be especially disruptive, and is held to higher scrutiny under our Automation Rules. Please bear that in mind as considering your uses of the platform.

Thanks!


#5

Hi Yoel,

Thanks for your answer on this. If it’s okay to ask, I have some further questions/clarifications:

I made a slight error above, in that I’d be unlikely to be posting retweets as often as 5-20 minutes, as sometimes I’m posting content from external sources and so tweet it directly myself.
My app, in its current form, effectively does this:

  • Count total number of unposted art tweets (not retweets) currently in my database
  • Count total number of unposted retweets in said database
  • Pick a random tweet out of those, weighted based on the count of each, and post that. Example: if I have 80 unposted tweets, and 20 unposted retweets, every 5-20 minutes it has an 80% chance to call statuses/update, and a 20% chance of calling statuses/retweet. It decides that chance each time it posts, so if later I had only 20 tweets and still had 20 retweets, it would be 50/50.

I would imagine based on my usual database population (approximately) that would mean an average retweeting frequency of every 20-60 minutes at most during peak times, but I suppose in a sense the numbers are not really relevant here, as I’m aware that there is - as both yourself and @andypiper have stated - no specific information available about what constitutes “spammy” usage of the API in this situation.

What I am trying to understand is the spirit of the rules, and what their purpose is. Unless I am mistaken, Twitter has no way of distinguishing between API calls in an app that were manually clicked on by a user (e.g. a retweet button within the app), and API calls in an app that were called automatically (by for example an automated queue system, in the manner that I do), outside of its adaptive algorithms learning what “average user behaviour” looks like and comparing the frequency of tweets against such behaviour. Come to think of it, I suppose things like user numbers for an app, whether the API’s called by app OAuth or user OAuth, ratio of automated retweets to other posts and so on could be part of that consideration; I suppose it’s possible that an app like mine that I wrote for myself might be seen in a less forgiving light in terms of automation.

What, precisely, would the Twitter team consider an acceptable use case for the statuses/retweet endpoint? Every use case I come up with in my head essentially comes down to “hope and pray the adaptive algorithms don’t consider your automated retweeting to be excessive”, as it seems prima facie as though it would be incredibly hard even for an algorithm to differentiate between a user who likes to retweet a lot doing so via an app, and a bad actor implementing an automated system designed to mimick the retweet behaviour of a normal user.

The last note I’d add from a policy standpoint is that the use of hashtags (and particularly, any kind of trending or high-profile hashtag) with automatically posted or retweeted content can be especially disruptive, and is held to higher scrutiny under our Automation Rules.

That certainly explains why previous versions of my app were being flagged up - I wasn’t aware that hashtags (specifically, non-trending hashtags related to the content being posted) would be held in higher scrutiny. I really think it would be a good idea to make that more clear in the automation rules themselves, as there’s no mention of how hashtags should be used in automated situations at all that I can see.


#6

Thanks for your questions — and for the amount of thought you’ve put into developing your app.

At a high level, Twitter’s policies around automation and spam are intended to keep people’s experiences on Twitter spam-free. We’ve heard a lot of feedback from users that automated activity, including retweets, can be annoying, low-quality, or frustrating — and our policies are based on a careful consideration of how to keep Twitter a safe place for organic conversations.

As for the more specific questions you’ve asked, including how we differentiate between acceptable and unacceptable uses of our API for automation: While I can’t share specifics (because doing so might enable malicious actors to try to reverse-engineer our protections), I would echo @andypiper’s note that we’ve invested extensively in building systems that are able to make determinations about malicious vs legitimate automation at Twitter scale, and we continually work to refine those systems to accommodate new use cases while protecting our platform from spam and malicious use.

Since it sounds like you’ve run into some issues here in the past, I would note that this forum isn’t the right place to get support for specific policy enforcement actions taken against your apps (or which may have been taken in the past). You can always write in to our platform support team for help.

And finally, thank you for the suggestion to clarify our rules around hashtags. We recently published an update to the Twitter Rules regarding spam which should help; but we’re always happy to get suggestions for ways we can communicate more clearly about our policies.


#7

Thanks Yoel - that’s all fine, I understand this isn’t the place for app-specific issues. I just thought it was worth mentioning in the context of hashtags being something that are put under higher scrutiny in automated tweets.

As you’ve stated, I imagine the systems you’ve been building to make these determinations are highly advanced given the importance of them to Twitter’s user experience, so I should really put more faith in them to be able to differentiate these things. I’ll continue to do my best to design my app to try and be, for lack of a better phrase, a “good actor”, and go from there. I’ll keep in mind what both of you have said here when doing so and try to clarify anything else I run into along the way.

Thanks again to both yourself and @andypiper for your answers on this! :grinning:


#8