coatless-quarto / bluesky-comments

A Quarto Shortcode Extension to Embed Comments from Bluesky
https://quarto.thecoatlessprofessor.com/bluesky-comments/
2 stars 1 forks source link

Muting / moderation #1

Closed noamross closed 6 days ago

noamross commented 1 week ago

Looking at the large number of 📌 replies in the example, it occurs to me that one probably wants some kind of moderation controls on this.

Describe the solution you'd like A "client-side" or muting like approach would be to enable some kind of filtering by content or metadata. A file in the site source, listing words, regexes, and/or people to mute, could pass this info to the JS that fetches the comments and filters those things out.

Describe alternatives you've considered An AT-native moderation approach probably would require your site to have some kind of AT identity so that moderation tools could be used - e.g., blocking users from interacting with posts from the site.

coatless commented 1 week ago

Agreed, it would be nice to have. On the AT moderation tools, I think that relies upon a login to access via app.bsky.actor.getPreferences, which this is setup to avoid given the static nature of deployments.

There are two approaches that I can implement to address it:

  1. Each post currently has a labels attribute that I think contains different kinds of flags (spam/nsfw/trigger/???)
  2. A filtering system built into _quarto.yml like:
bluesky-comments:
  mute-patterns: 
    - "📌"
    - "🔥"
    - "spam"
  muted-users:
    - "did:plc:someuserdid123"
    - "did:plc:anotheruserdid456"
  filter-empty-replies: true
  visible-comments: 3
  visible-subcomments: 5

The configuration options listed are:

Thoughts?

coatless commented 6 days ago
Before After
Before: No moderation settings present

No moderation settings present

After: Moderation settings were applied

Moderation settings were applied

Note the suppression of 📌 and there is also now on the page a "Show more comments"/ "Show more replies".

New warning on labeled skeets (note: only the label changes):

Warn on label skeet