-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
feat: adds sponsored post UI #7518
base: main
Are you sure you want to change the base?
feat: adds sponsored post UI #7518
Conversation
Okay this is super interesting and I appreciate what yall are driving here. Can you give us 2 weeks to finish some internal conversations? This cross-cuts some very big picture stuff. |
Hi @pfrazee — not to nag, but any update on this? I have several campaigns wanting to launch but I don't feel comfortable doing so until there's some way to flag them as promoted. |
ditto on this @pfrazee - we're basically ready on our end to roll |
It'd be great to see some movement on this, either with regards to merging this PR or elaborating on what the alternative is. I'm actively hosting a discussion with my community on the Game Dev feed about running ads. Being able to properly flag them as ads would be great, but for now we're working out our own solutions — none of which fully address the issue. 😞 An excerpt from the thread:
And the most common response is concern about ads not being flagged as such: A list of relevant quotes from users of the Game Dev feed:
Another solution that's being actively worked on is the AdControls labeler by @yesthatwes.bsky.social. The idea is that users and advertisers would need to opt-in to the labeler, and then they'd see/have the appropriate labels applied based on post content. It's an interesting solution, but requiring users to opt-in means we'll have to see significant user adoption for it to have any impact, and that gets harder every day as the platform grows. A first-party solution is really the only way to approach this issue. |
I'm in favor of |
@aendra-rininsland Do you think it would be helpful to clarify attribution instead of just saying it's a sponsored post? For example, if a cat food company wants one of their posts to show up in my feed, we could disclose that [feed owner DID] is promoting [post DID] from [cat food company DID] Instead of "Sponsored" it could be "Promoted by [feed owner]" That's an interesting social/financial data point, discloses the origin and reason for the content, and provides enough information to disambiguate disclosures so that the appview owner isn't held accountable for the sponsored content. |
This is a really good idea. I was wanting to surface some sort of information like that but I wasn't sure the best way to given the minimal design impact I'm ultimately aiming for with this PR. Let me make an attempt at that and report back... |
How would someone indicate a sponsorship or promotion that is funded by a company that isn't on BlueSky/ATproto? |
I expect that 90% of the time it will be the author of the post that's being promoted. I'm not concerned about legal entities in the real world, just provenance within the AT Proto ecosystem. The funding question gets complicated. Is it Cat Food company that's funding it, or an agency they hired, or even the feed host? I recommend that it would be up to the feed generator to make the appropriate attribution. |
Okay, I just wanted to clarify because it seems like that system would only work if the sponsoring entity has an AT proto DID, which would limit the utility of the sponsorship indicator and may be confusing to users who see sponsored posts that are unlabeled when the reason is just because the sponsor isn't on AT proto...
Yeah, auditing the money trail is a complicated subject and out of scope, I think. That's why I think a Edit: I was thinking of AppViews when I wrote feed generators. |
I've changed the text in the PR to read Is this good? All feedback welcome. |
Dogmatically I'm in the "AT Proto should eat the world" camp and would love to make it required, but pragmatically ... yes, it's an impractical requirement. 😅
Agreed. I was thinking it would be interesting data for tracking provenance ... but we definitely don't want to muddy the waters with some kind of financial auditing concept. A The end goal here is attribution -- whatever mechanism makes that possible. |
We're having to learn a lot really fast to come up with a good answer, so please bear with us. We're talking with Graze actively and would be happy to talk to some more folks directly. I'm not entirely convinced that people will understand the provenance that's being proposed here, even when it's more verbose, but more importantly I'm not sure the appview is outside of the chain of responsibility no matter how this is done. The troll cases concern me quite a bit, and with dynamic responses we have very little upfront auditing time. I hate blocking yall when we want to enable yall, but we need more time to understand the situation. |
I think we're talking about two related concepts that require distinct approaches, and I may have inadvertently muddled the conversation a bit. If so, I apologize. To clarify, let me define them: Boosted content - This refers to posts or accounts whose ranking in an AppView or feed is prioritized by the platform in exchange for payment. The content itself isn't necessarily influenced by money, but its visibility is. Paid endorsements - These are messages where the endorsing account has a financial relationship with the brand. Here, the content is influenced by money, but not necessarily its visibility. To address boosted content, @aendra-rininsland's collection of PRs (particularly the AT proto one), with @peat's idea about linking posts to the DID that paid for the boost, looks like an excellent solution. It seems to provide a mechanism for feed generators to disclose why a post got boosted, enabling AppViews to inform users transparently. For paid endorsements, the concept of the AdControls labeler that @trezy mentioned is a great approach that would be even better with a new global label and a reason (or |
@pfrazee I'd be open to chatting more about this with your team as well. I've been actively courting my Game Dev community about ads for the past week and I've gathered a lot of feedback about their feelings on ads. Without exception, this is the largest concern my users have. Feel free to poke me on Discord (@trezy) if you want to have a more realtime conversation. |
Regarding native advertising types and disclosure: The IAB Native Advertising Playbook guidelines are helpful here since this is an AdTech concern. Check out the sections starting at ~page 15. |
Agree with all of this. The current workaround (asking advertisers to use #sponsored or #ad in any promoted post) is not viable and potentially creates a ton of issues down the line:
|
Assuming [username] here is the advertiser, not the feed owner, I think that makes sense. That way the viewer can tell a) where the post is being promoted: the feed, b) who paid for it: username of advertiser and c) the post itself that is being sponsored. |
Ideally a post is flagged as an #ad or #sponsored in its intended promoted location, and outside of that it's not--that would be confusing. But I do think users should be aware a post is boosted in all contexts and the likes/reposts/comments are less organic due to the boost. My initial thought is a sponsored tag when viewing in a promoted context and a greyed out sponsored tag when viewing the post in a non sponsored context. It just feels weird for sponsored content to present itself as a normal post when viewed outside of a feed it's promoted in. And lastly, some distinction between hand-picked sponsored content picked by a feedmakers as a partner vs general ads would be nice. There's a big difference between turning on general ads for a feed vs feedmakers personally partnering up with brands. |
Good point on transparency. Labeling is a must. I think concerns about 'less organic' engagement apply more to traditional ad network delivery than curation-based promoted media. Since we're all about placement rather than mass distribution or algorithmic reach, engagement on a boosted post isn't necessarily 'less organic' unless it has monetized placement in a bunch of feeds. But even then, it doesn't carry the same engagement network effect as algorithmic distribution. The key question remains how labeling should work in a way that fits the Bluesky feed model. |
I haven't been able to test this at all because I can't get Yarn to install and also because it's reliant on bluesky-social/atproto#3419. If someone could review this with that in mind I'd be most appreciative, it's not a particularly complex PR once the lexicon change gets merged. 🙏
This adds a "⚡ Sponsored" label to any post that has the forthcoming
app.bsky.graph.defs#skeletonReasonSponsored
reason attached to the post. I have chosen the icon and text completely arbitrarily; I have also not provided translations because I don't know how you're generating locales. It's possible another icon (possibly something likeⓘ
) would be better.Please see bluesky-social/atproto#3386 for the rationale for this request.