{
    "version": "https://jsonfeed.org/version/1",
    "title": "Bluesky Protocol Services",
    "home_page_url": "https://bsky.network/ja/blog",
    "description": "Service changes, deprecations, and operational notes for Bluesky Protocol Services.",
    "items": [
        {
            "id": "https://bsky.network/ja/blog/content-visibility-declaration",
            "content_html": "<p>A key principle of the atproto ethos is giving people control of their data online. The Bluesky app expresses this value with features like custom feeds and composable moderation to give people more control over their experience using the app.</p>\n<p>This week, <a href=\"https://bsky.app/profile/bsky.app/post/3mu3jzayuys2k\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">the Bluesky app shipped a setting to allow people to ask apps to hide their posts from algorithmic recommendations</a>. This is designed to accommodate a longstanding feature request to prevent posts from, for example, going viral via the Discover feed.</p>\n<!-- -->\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"A screenshot of the Bluesky app&amp;#39;s content visibility declaration setting\" src=\"https://bsky.network/ja/assets/images/bsky-content-setting-fed4715061bd366ccfbaa184f9455ba5.png\" width=\"1280\" height=\"1600\" class=\"img_ev3q\"></p>\n<p>Of course, Bluesky posts don’t simply live on Bluesky, and in an effort to provide other apps, feed generators, and services with access to this setting, the app will write a new <code>app.bsky.actor.contentVisibilityDeclaration</code> record to a person’s repo when they activate the setting. The record itself is minimal:</p>\n<div class=\"language-json codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-json codeBlock_bY9V thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#393A34\"><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token property\" style=\"color:#36acaa\">\"$type\"</span><span class=\"token operator\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:#e3116c\">\"app.bsky.actor.contentVisibilityDeclaration\"</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token property\" style=\"color:#36acaa\">\"hideFromAlgorithmicRecommendations\"</span><span class=\"token operator\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:#36acaa\">true</span><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><br></div></code></pre></div></div>\n<p>There’s a single required boolean value, <code>hideFromAlgorithmicRecommendations</code> and if it’s set to <code>true</code>, apps should respect the declaration by limiting their posts in algorithmic feeds like Bluesky’s Discover. If the record doesn’t exist, treat it the same as the value being set to <code>false</code>. For accounts that haven’t activated the setting, nothing changes.</p>\n<p>The <code>contentVisibilityDeclaration</code> is not meant to hide all posts or even prevent someone’s posts from showing up in any feed. Feeds based on lists of users, or around specific topics like <a href=\"https://bsky.app/profile/bossett.social/feed/for-science\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Science</a> or <a href=\"https://bsky.app/profile/clarabelle.xyz/feed/aaabrbjcg4hmk\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">BookSky</a>, don’t need to use the setting. Those feeds give posts organic reach to people who have sought out posts around a specific topic.</p>\n<p>Bluesky’s Discover feed, which has the ability to make a post go viral and invite potentially unwanted attention, will respect the setting.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"how-to-use-the-new-declaration-in-your-apps\">How to use the new declaration in your apps<a href=\"https://bsky.network/ja/blog/content-visibility-declaration#how-to-use-the-new-declaration-in-your-apps\" class=\"hash-link\" aria-label=\"How to use the new declaration in your apps への直接リンク\" title=\"How to use the new declaration in your apps への直接リンク\" translate=\"no\">​</a></h2>\n<p>The intention of this setting is to let people opt out of having their posts get actively distributed outside of their own known network. In the case of the Bluesky Discover algorithm, this means setting the option to <code>true</code> will prevent someone’s posts from showing up in a stranger’s Discover feed, however their posts might still show up in the Discover feed of a follower.</p>\n<p>What constitutes an “algorithmic recommendation” is fairly broad and open to interpretation. Feeds built around a specific topic are not the intended audience for this setting. Aggregators that cast a wide net and perform a version of “based on your profile, interests or activities, we thought you might enjoy these posts” should consider adopting this setting.</p>\n<p>When evaluating whether to implement this feature, it may be helpful to think of the feature across two axes: <strong>intent</strong> and <strong>reach</strong>.</p>\n<p><strong>Intent</strong> is whether the person who shows up in your app or feed wants to be there. If they are posting pictures of moss with the hashtags <code>#forest #photography</code> it’s probably safe to assume they are ok with their post appearing in a feed dedicated to nature photos. If someone is just posting bons mots about the trials and tribulations of modernity, you might want to check the declaration before including their post in an off-site aggregator of slice-of-life posts.</p>\n<p><strong>Reach</strong> is how far beyond someone’s existing social network a post might travel. If you’re building an internet reader app just for yourself, the reach is very small and won’t result in anyone’s posts unexpectedly going viral. If you’re watching the atproto firehose to collect the all time funniest posts for a digital media website filled with the best viral content, you’ll absolutely want to check for the declaration.</p>\n<p>The Discover feed built in to Bluesky is both low intent (no one is able to actively signal they want their post in Discover) and high reach (because it’s the default, it has the potential to reach millions of people instantly). Discover is the canonical feed this declaration was designed for. Even feeds that perform a similar function to Discover might not meet the same threshold for intent and reach.</p>\n<p>We’re asking apps and feed operators to use their best judgment, respond to good-faith feedback with care, and reach out with questions. If you manage an app, feed, or service that uses algorithmic recommendations to discover posts that are low intent and high reach, please adopt this declaration.</p>\n<p>Bluesky is adding this to help people add a bit of nuance to how their posts show up and are distributed across the app. The Atmosphere is different from centralized social media, we don’t have to rely on the old binaries of “all public vs. all private” and can offer people new ways of being online that better capture that fullness of being a person.</p>",
            "url": "https://bsky.network/ja/blog/content-visibility-declaration",
            "title": "Using the Content Visibility Declaration",
            "summary": "The Bluesky app is shipping a new content visibility declaration setting to give people more control over where and how their posts show up via algorithmic recommendation engines.",
            "date_modified": "2026-09-01T00:00:00.000Z",
            "author": {
                "name": "Jim Ray",
                "url": "https://bsky.app/profile/did:plc:lysqukqdu6hsrhet5v2brjgo"
            },
            "tags": []
        },
        {
            "id": "https://bsky.network/ja/blog/welcome",
            "content_html": "<p>Bluesky Protocol Services manages infrastructure built on <a href=\"https://atproto.com/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AT Protocol</a>. This includes the <a href=\"https://bsky.network/docs/bluesky-api\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Bluesky API</a>, the <a href=\"https://bsky.network/docs/relay\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">firehose</a> of public content on the network, and the <a href=\"https://bsky.network/docs/jetstream\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Jetstream</a> for filtering the firehose.</p>\n<p>This blog is where we'll announce new features, post operational updates, and let you know about any deprecations. Expect the volume to be pretty low.</p>\n<!-- -->\n<p>Bluesky product announcements will continue to happen on the <a href=\"https://bsky.social/about/blog\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">company blog</a> and writing about the protocol will likewise continue on the <a href=\"https://atproto.com/blog\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">atproto blog</a>.</p>\n<p>BPS is its own thing and deserves a place for announcements.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"subscribing\">Subscribing<a href=\"https://bsky.network/ja/blog/welcome#subscribing\" class=\"hash-link\" aria-label=\"Subscribing への直接リンク\" title=\"Subscribing への直接リンク\" translate=\"no\">​</a></h2>\n<p>Follow <a href=\"https://bsky.app/profile/bsky.network\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@bsky.network on Bluesky</a> for updates.</p>\n<p>Alternatively, subscribe to the <a href=\"https://bsky.network/ja/blog/rss.xml\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">RSS</a>,\n<a href=\"https://bsky.network/ja/blog/atom.xml\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Atom</a>, and/or <a href=\"https://bsky.network/ja/blog/feed.json\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">JSON</a>\nfeeds.</p>",
            "url": "https://bsky.network/ja/blog/welcome",
            "title": "A Blog for Bluesky Protocol Services",
            "summary": "Where service changes, deprecations, and operational notes for Bluesky Protocol Services get written down.",
            "date_modified": "2026-08-30T00:00:00.000Z",
            "author": {
                "name": "Jim Ray",
                "url": "https://bsky.app/profile/did:plc:lysqukqdu6hsrhet5v2brjgo"
            },
            "tags": []
        }
    ]
}