{
  "$type": "site.standard.document",
  "author": "did:plc:ticz2qmqh2vqxnehf5zalkpl",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 18,
                    "byteStart": 0
                  }
                }
              ],
              "level": 3,
              "plaintext": "Content Moderation"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• Domain blocklist — Hardcoded 23+ blocked domains (adult sites, spam job boards like e-hentai, jobs.now)"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 28,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• Keyword pattern matching — Regex filter scanning title/description/textContent/tags for explicit content"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 31,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• DB-backed dynamic blocklist — moderation_blocklist table so you can add/remove domains via SQL without redeploying"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 22,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• Indexer gatekeeper — All moderation runs in indexSiteStandardJob before content enters the DB"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 18,
                    "byteStart": 0
                  }
                }
              ],
              "level": 3,
              "plaintext": "RSS Feed Ecosystem"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 17,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• RSS generator — Reusable src/longform/lib/rss.ts producing valid RSS 2.0 with rich namespaces (dc, atom, content, media, slash)"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "• /feed/latest.xml — Public global feed of latest longform articles"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "• /feed/following.xml?token=... — Personal authenticated feed using opaque tokens"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "• /feed/search.xml?q=... — Search-specific RSS (always sorted by latest)"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "• /feed/tag/:tag.xml — Per-tag RSS feeds"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• Token-based auth — rss_feed_tokens table maps opaque 24-byte tokens to DIDs for unauthenticated RSS reader access"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 21,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• RSS autodiscovery — <link rel=\"alternate\"> tag in the global layout"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 13,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• RSS icons — Visible on home page tabs, search results (far right, vertically centered), subscriptions page, and tag pages — all with orange hover effect"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 13,
                    "byteStart": 0
                  }
                }
              ],
              "level": 3,
              "plaintext": "Tag Ecosystem"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 25,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• Tags on article cards — Up to 4 tag pills per article, styled as rounded pills with dark mode support"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 20,
                    "byteStart": 13
                  }
                }
              ],
              "plaintext": "• /tag/:tag pages — Filtered article listings with #tag heading and tag-specific RSS link"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 25,
                    "byteStart": 4
                  }
                }
              ],
              "plaintext": "• Trending Tags sidebar"
            }
          }
        ],
        "id": "e8577077-98f2-48dc-abe0-76a4c67a9d85"
      }
    ]
  },
  "description": "",
  "path": "/585x9vaidg",
  "publishedAt": "2026-05-14T23:54:03.499Z",
  "site": "at://did:plc:ticz2qmqh2vqxnehf5zalkpl/site.standard.publication/self",
  "tags": [],
  "title": "Longform update 2026.05.14"
}