See the best posts from any Bluesky account
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use h1 for profile display name

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+6 -4
+2 -2
SEO-TODO.md
··· 9 9 ## P1 — High 10 10 11 11 4. ~~**Profile avatars use `alt=""`**~~ — **DONE.** Profile header avatar now uses `alt="@handle avatar"`. Search-ahead avatar left empty (decorative; handle rendered alongside). 12 - 5. **Weak heading hierarchy** — display name is a styled `<div>` (`profile/show.edge:28`), no `<h1>`. Replace with semantic heading. 12 + 5. ~~**Weak heading hierarchy**~~ — **DONE.** Display name (or `@handle` when no display name) is now an `<h1>`. 13 13 6. **No JSON-LD structured data** — add `Person` schema on profile pages, `ItemList` for post lists, to unlock rich results in Google SERPs. 14 14 15 15 ## P2 — Medium ··· 36 36 2. ~~Meta descriptions~~ (~10 min) — **done** 37 37 3. ~~Avatar alt text~~ (~5 min) — **done** 38 38 4. JSON-LD Person + ItemList (~30 min) 39 - 5. Heading hierarchy fix (~10 min) 39 + 5. ~~Heading hierarchy fix~~ (~10 min) — **done** 40 40 6. ~~Dynamic sitemap.xml~~ (~20 min) — **done**
+4 -2
resources/views/pages/profile/show.edge
··· 25 25 @endif 26 26 <div> 27 27 @if(displayName) 28 - <div class="font-heading text-xl font-bold group-hover:underline leading-tight">{{ displayName }}</div> 28 + <h1 class="font-heading text-xl font-bold group-hover:underline leading-tight">{{ displayName }}</h1> 29 + <div class="text-gray-600 dark:text-gray-400 group-hover:underline">{{ '@' + handle }}</div> 30 + @else 31 + <h1 class="font-heading text-xl font-bold group-hover:underline leading-tight">{{ '@' + handle }}</h1> 29 32 @endif 30 - <div class="text-gray-600 dark:text-gray-400 group-hover:underline">{{ '@' + handle }}</div> 31 33 </div> 32 34 </a> 33 35 @if(auth.isAuthenticated && auth.user.handle === handle)