Hannah's Web log

Putting my Neocities blog on ATProto

31 May, 2026 | 4 minute read

Bluesky just released some very nice custom link cards that work with standard.site links.

v1.122 is rolling out today, featuring a better way to discover and share articles, blog posts and newsletters across the Atmosphere via new, dynamic Standard.site link cards. ๐Ÿงต

[image or embed]

— Bluesky (@bsky.app) May 29, 2026 at 4:09 AM

I saw them and instantly thought: WANT. NEED.

The only issue is I blog manually on Neocities rather than using one of the ATproto blogging services. But, if you like these link cards, I've discovered it is possible to add the required elements into your html files on a basic Neocities site!

Here I present a step-by-step guide. It is easier than it sounds, but will require an extra step every time you publish a new page (which for me is part of the fun). If you're interested, read on!

Part 1: One-time setup

You only need to do this once for your whole site.

Step 1: Log in to PDSls

Go to pdsls.dev and log in with your Bluesky handle.

Step 2: Create your publication record

Click Create Record. In the Collection field at the top, type:

site.standard.publication

Then replace everything in the editor with this, filling in your own details:

{
  "$type": "site.standard.publication",
  "url": "https://yoursite.neocities.org",
  "name": "Your Site Name",
  "description": "A short description of your site",
  "preferences": {
    "showInDiscover": true
  }
}

Click Create. Copy the AT-URI that appears โ€” it looks like:

at://did:plc:abc123.../site.standard.publication/xyz789

Save this somewhere safe โ€” you'll need it for every new page.


(edit 1/6/2026): Optional but recommended: You may want your own icon to appear here. We need to create a "blob" first. Here's one way to do it:

  1. Post your icon as a square image with a size at least 256x256 to Bluesky as a normal post.
  2. In PDSls, view your repository and browse your app.bsky.feed.post records and find the post you just made.
  3. Inside the record you'll see an image array. Go into the editor and copy this part:
      "image": {
              "ref": {
                "$link": "abc123..."
              },
              "size": 12345,
              "$type": "blob",
              "mimeType": "image/filetype"
            },
    
  4. Paste this into your publication record in PDSls but replace "image" with "icon". So your whole JSON should be:
    {
      "$type": "site.standard.publication",
      "url": "https://yoursite.neocities.org",
      "icon": {
        "ref": {
          "$link": "abc123..."
        },
        "size": 12345,
        "$type": "blob",
        "mimeType": "image/filetype"
      },
      "name": "Your Site Name",
      "description": "A short description of your site",
      "preferences": {
        "showInDiscover": true
      }
    }
  5. Once you've saved the publication record, you can delete the Bluesky post if you prefer. The icon will remain because it's now referenced by your publication record.

Step 3: Add a verification file to Neocities

  1. Paste your AT-URI into a text editor such as Notepad. Save it as site.standard.publication
  2. The file should contain just your publication AT-URI on a single line โ€” nothing else
  3. In your Neocities file manager, create a folder called .well-known
  4. Inside it, upload the .publication file

Note: the file may prompt a download rather than displaying in the browser โ€” that's fine! It will still validate correctly.

Step 4: Add a link tag to your homepage

Open your index.html in the Neocities editor and add this inside the <head> section, using your own publication AT-URI:

<link rel="site.standard.publication"
  href="at://did:plc:abc123.../site.standard.publication/xyz789" />

Part 2: Every time you publish a new page

Repeat these steps for each new page.

Step 1: Create a document record in PDSls

Go back to pdsls.dev, click Create Record, and set the Collection to:

site.standard.document

Replace the editor content with this:

{
  "$type": "site.standard.document",
  "site": "at://did:plc:abc123.../site.standard.publication/xyz789",
  "title": "Your Page Title",
  "path": "/your-page.html",
  "description": "A short description of your page",
  "publishedAt": "2026-01-01T00:00:00.000Z",
  "textContent": "Paste the full plain text of your page here"
}

Click Create and save the document AT-URI that appears.

Some good news: Unlike posting to Bluesky, it is possible to retroactively edit your ATProto records you posted directly from PDSls :)

Step 2: Add tags to your page's HTML

Open your page in the Neocities editor and add all of this inside the <head> section:

<!-- Standard.site link tags -->
<link rel="site.standard.document"
  href="at://did:plc:abc123.../site.standard.document/xyz789" />
<link rel="site.standard.publication"
  href="at://did:plc:abc123.../site.standard.publication/xyz789" />
<!-- Open Graph tags -->
<meta property="og:title" content="Your Page Title" />
<meta property="og:description" content="A short description." />
<meta property="og:image" content="https://yoursite.neocities.org/image.jpg" />
<meta property="og:url" content="https://yoursite.neocities.org/your-page.html" />

Replace all placeholder values with your real AT-URIs and page details. be careful not to confuse the links for your DOCUMENT (individual page) and PUBLICATION (overall site).

Want to check everything is set up correctly?
Paste your page URL into the Standard.site Validator.

Step 3: Share on Bluesky

Paste your page URL into Bluesky and wait for the preview to load before hitting post.

Important: make sure your URL includes the .html extension โ€” e.g. https://yoursite.neocities.org/your-page.html โ€” otherwise the enhanced card may not appear.


Discuss on Bluesky

I just got the lovely new @standard.site link cards working with pages made in @neocities.org! And it wasn't hard! Here is a quick guide.

[image or embed]

— Hannah Shelley, MLIS (Metadata, Lattes & Impostor Syndrome) (@hannahshelley.site) May 31, 2026 at 2:29 PM

โ† Older | Back to Blog Index | Newer โ†’

Get RSS feed