Skip to content

Conversation

@kraftbj
Copy link
Contributor

@kraftbj kraftbj commented Feb 2, 2026

Proposed changes:

Being a good Fediverse citizen means being transparent about automated accounts. Mastodon and other platforms display a "BOT" badge on profiles that identify as bots or automated accounts, helping users understand they're interacting with automated content.

This PR adds the ability to mark blog and user profiles as bot accounts:

  • Adds a "Bot Account" checkbox to the Blog Profile settings (Settings → ActivityPub → Blog Profile)
  • Adds a "Bot Account" checkbox to user profile settings (Users → Profile → ActivityPub section)
  • When enabled, changes the Actor type from Person/Group to Service, which Fediverse platforms recognize as a bot
  • Respects the existing relay mode setting (which already implies bot status)

This is useful for:

  • Blogs that primarily syndicate/aggregate content automatically
  • Author accounts that post via automation (IFTTT, Zapier, etc.)
  • Any account that wants to be transparent about its automated nature

This branch is currently running on kraft.beer for the @beers@kraft.beer account.

Screenshots

Screenshot 2026-02-02 at 17 03 24 Screenshot 2026-02-02 at 17 02 54

Other information:

  • Have you written new tests for your changes, if applicable?

Testing instructions:

  1. Go to Settings → ActivityPub → Blog Profile
  2. Look for the "Bot Account" checkbox near the bottom of the settings
  3. Enable it and save
  4. Visit your blog's actor endpoint (e.g., /?author=0) and verify "type": "Service" appears in the JSON
  5. Go to Users → Profile and scroll to the ActivityPub section
  6. Enable the "Bot Account" checkbox for a user and save
  7. Visit that user's actor endpoint and verify "type": "Service" appears
  8. If relay mode is enabled, verify the blog profile shows a notice that bot status is already implied

Changelog entry

  • Automatically create a changelog entry from the details below.
Changelog Entry Details

Significance

  • Minor

Type

  • Added - for new features

Message

Add bot account option for blog and user profiles. When enabled, the profile displays with a "BOT" badge on Mastodon and other Fediverse platforms.

Allow marking blog and user profiles as bot accounts, which
changes the Actor type from Person/Group to Service. This causes
Mastodon and other Fediverse platforms to display a "BOT" badge.

- Add activitypub_blog_is_bot option for blog profile
- Add activitypub_is_bot user option for author profiles
- Modify Blog::get_type() to check bot setting
- Modify User::get_type() to check user bot setting
- Add UI fields to blog profile and user profile settings
- When relay mode is enabled, show notice that bot is implied
Copilot AI review requested due to automatic review settings February 2, 2026 23:03
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds the ability to mark both blog and user profiles as bot/automated accounts in ActivityPub, making them display with a "BOT" badge on Mastodon and other Fediverse platforms. This promotes transparency about automated content by changing the Actor type from Person/Group to Service.

Changes:

  • Added "Bot Account" checkbox settings for both blog profiles and user profiles in the WordPress admin
  • Modified the get_type() methods to return Service when bot mode is enabled
  • Blog profile bot setting respects existing relay mode (which already implies bot status)

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
includes/wp-admin/class-user-settings-fields.php Adds bot account checkbox field to user profile settings
includes/wp-admin/class-blog-settings-fields.php Adds bot account checkbox field to blog profile settings with relay mode awareness
includes/wp-admin/class-admin.php Registers the user bot option in the required user options array
includes/model/class-user.php Updates user actor type to Service when bot flag is enabled
includes/model/class-blog.php Updates blog actor type to Service when bot flag is enabled
includes/class-options.php Registers the blog bot option setting
.github/changelog/add-bot-account-support Adds changelog entry for the new feature

@pfefferle
Copy link
Member

pfefferle commented Feb 4, 2026

I generally like the idea but it might break things! I am not sure if this should be a user facing setting or if it should be done through filters!?

Setting the Blog-User to a Service instead of a Group will break the "FEP-1b12: Group federation" for example.

@kraftbj
Copy link
Contributor Author

kraftbj commented Feb 4, 2026

Would it make sense for a single-user site that has a blog-user to be able to set the tag, but a multiuser site not be able to?

I'm also okay making this only a filter for now and leaving the UI for another PR/another day.

…federation

In multi-user mode, the blog actor is a Group, and changing it to Service
would break FEP-1b12 group federation. This limits the bot option to
single-user mode where the blog actor is Person, making Person → Service
safe. The setting is both hidden from UI and ignored in get_type() when
in multi-user mode.
@kraftbj
Copy link
Contributor Author

kraftbj commented Feb 5, 2026

Good point on the Group → Service concern — that would break FEP-1b12 group federation.

I pushed a commit that scopes the blog bot option to single-user mode only:

  • Single-user mode (blog type is Person): bot checkbox is shown and Person → Service works safely
  • Multi-user mode (blog type is Group): bot checkbox is hidden and the setting is ignored in get_type(), preserving FEP-1b12 compliance
  • User profiles: unchanged — Person → Service is always safe
  • Mode switching: if a site goes from single-user to multi-user, the setting stays in the database but is ignored in both UI and code. Switching back restores it.

One question — when you mentioned this might be better handled through filters rather than a user-facing setting, were you thinking about the whole bot feature (including user profiles), or specifically the blog profile? For user profiles, a simple checkbox feels like the right UX since there's no protocol side effect. Curious about your thinking there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants