diff --git a/app/controllers/activitypub/collections_controller.rb b/app/controllers/activitypub/collections_controller.rb
index 989fee385d116e4f27ada0763e20554a910d9f27..a3dade822bcf84f981dc95d12e1d5cebe20477a1 100644
--- a/app/controllers/activitypub/collections_controller.rb
+++ b/app/controllers/activitypub/collections_controller.rb
@@ -7,11 +7,13 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
   before_action :require_signature!, if: :authorized_fetch_mode?
   before_action :set_size
   before_action :set_statuses
+  before_action :set_featured_tags
+  before_action :set_endorsed_accounts
   before_action :set_cache_headers
 
   def show
     expires_in 3.minutes, public: public_fetch_mode?
-    render_with_cache json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter, skip_activities: true
+    render_with_cache json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter
   end
 
   private
@@ -21,10 +23,18 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
     @statuses = cache_collection(@statuses, Status)
   end
 
+  def set_featured_tags
+    @featured_tags = @account.featured_tags
+  end
+
+  def set_endorsed_accounts
+    @endorsed_accounts = @account.endorsed_accounts
+  end
+
   def set_size
     case params[:id]
     when 'featured'
-      @account.pinned_statuses.count
+      @account.pinned_statuses.count + @account.featured_tags.count + @account.account_pins.count
     else
       raise ActiveRecord::RecordNotFound
     end
@@ -46,7 +56,7 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
       id: account_collection_url(@account, params[:id]),
       type: :ordered,
       size: @size,
-      items: @statuses
+      items: @statuses + @featured_tags + @endorsed_accounts
     )
   end
 end
diff --git a/app/serializers/activitypub/collection_serializer.rb b/app/serializers/activitypub/collection_serializer.rb
index da1ba735fc25063c69c83e4aedb88796ce7ed55d..38c4980807dd71770e6bfe2b65a20df5dd8646cd 100644
--- a/app/serializers/activitypub/collection_serializer.rb
+++ b/app/serializers/activitypub/collection_serializer.rb
@@ -2,9 +2,18 @@
 
 class ActivityPub::CollectionSerializer < ActivityPub::Serializer
   def self.serializer_for(model, options)
-    return ActivityPub::NoteSerializer if model.class.name == 'Status'
-    return ActivityPub::CollectionSerializer if model.class.name == 'ActivityPub::CollectionPresenter'
-    super
+    case model.class.name
+    when 'Status'
+      ActivityPub::NoteSerializer
+    when 'FeaturedTag'
+      ActivityPub::HashtagSerializer
+    when 'Account'
+      ActivityPub::MentionSerializer
+    when 'ActivityPub::CollectionPresenter'
+      ActivityPub::CollectionSerializer
+    else
+      super
+    end
   end
 
   attribute :id, if: -> { object.id.present? }
diff --git a/app/serializers/activitypub/hashtag_serializer.rb b/app/serializers/activitypub/hashtag_serializer.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1a56e4dfe4c745f375bacb3b6001d7b6d8d95291
--- /dev/null
+++ b/app/serializers/activitypub/hashtag_serializer.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class ActivityPub::HashtagSerializer < ActivityPub::Serializer
+  include RoutingHelper
+
+  attributes :type, :href, :name
+
+  def type
+    'Hashtag'
+  end
+
+  def name
+    "##{object.name}"
+  end
+
+  def href
+    if object.class.name == 'FeaturedTag'
+      short_account_tag_url(object.account, object.tag)
+    else
+      tag_url(object)
+    end
+  end
+end
diff --git a/app/serializers/activitypub/mention_serializer.rb b/app/serializers/activitypub/mention_serializer.rb
new file mode 100644
index 0000000000000000000000000000000000000000..24bd570fe9fd920cc6d040c671a4576e91572132
--- /dev/null
+++ b/app/serializers/activitypub/mention_serializer.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class ActivityPub::MentionSerializer < ActivityPub::Serializer
+  attributes :type, :href, :name
+
+  def type
+    'Mention'
+  end
+
+  def href
+    ActivityPub::TagManager.instance.uri_for(object)
+  end
+
+  def name
+    "@#{object.acct}"
+  end
+end