<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Indieweb on ege&#39;s weblog</title>
    <link>https://hypersubject.net/tags/indieweb/</link>
    <description>We must reclaim the cyberspace.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>&#169; 2026 ege&#39;s weblog</copyright>
    <lastBuildDate>Sat, 06 Jun 2026 21:46:26 +0000</lastBuildDate>
    <atom:link href="https://hypersubject.net/tags/indieweb/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Integrating standard.site with My Hugo Blog</title>
      <link>https://hypersubject.net/entries/2026/06/integrating-standard.site-with-my-hugo-blog/</link>
      <pubDate>Sun, 07 Jun 2026 00:34:54 +0300</pubDate>
      <guid isPermaLink="false">https://hypersubject.net/entries/2026/06/integrating-standard.site-with-my-hugo-blog/</guid>
      <description>&lt;p&gt;If you are part of indieweb, you probably noticed people talking about &lt;a href=&#34;https://standard.site/&#34;&gt;standard.site&lt;/a&gt;. It&amp;rsquo;s a recent addition to &lt;a href=&#34;https://atproto.com/&#34;&gt;AT Protocol&lt;/a&gt; to publish long form content. You might think of it as &lt;a href=&#34;https://indieweb.org/POSSE&#34;&gt;POSSE&lt;/a&gt; on steroids.&lt;/p&gt;
&lt;p&gt;I spent hours today figuring out how to integrate my blog with standard.site. It was not as hard as I thought thanks to &lt;a href=&#34;https://dbushell.com/2026/06/05/are-you-standard-site/&#34;&gt;David Bushell&lt;/a&gt; and &lt;a href=&#34;https://wil.to/posts/standard-site/&#34;&gt;Mat Marquis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first thing you need to do is sign in and create a &lt;code&gt;site.standard.publication&lt;/code&gt; record on &lt;a href=&#34;https://pdsls.dev/&#34;&gt;Atmosphere Explorer&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
  &amp;#34;url&amp;#34;: &amp;#34;https://hypersubject.net&amp;#34;,
  &amp;#34;name&amp;#34;: &amp;#34;ege&amp;#39;s weblog&amp;#34;,
  &amp;#34;$type&amp;#34;: &amp;#34;site.standard.publication&amp;#34;,
  &amp;#34;description&amp;#34;: &amp;#34;We must reclaim the cyberspace.&amp;#34;,
  &amp;#34;preferences&amp;#34;: {
    &amp;#34;showInDiscover&amp;#34;: true
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Protip: Leave Collection and Record key empty when creating the record to use default values. Record keys are subject to &lt;a href=&#34;https://atproto.com/specs/tid&#34;&gt;strict validation rules&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then you need to create &lt;code&gt;.well-known/site.standard.publication&lt;/code&gt; at the root of your site.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cat static/.well-known/site.standard.publication at://did:plc:32534e3a5wza2m3omyuflhm3/site.standard.publication/3mnmnwcnftk2i
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;did:plc:32534e3a5wza2m3omyuflhm3&lt;/code&gt; is my account, &lt;code&gt;3mnmnwcnftk2i&lt;/code&gt; is the record key of the publication.&lt;/p&gt;
&lt;p&gt;I also put the following into &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;link 
  rel=&amp;#34;site.standard.publication&amp;#34;
  href=&amp;#34;at://did:plc:32534e3a5wza2m3omyuflhm3/site.standard.publication/3mnmnwcnftk2i&amp;#34; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is all I needed to do to register my blog on AT Proto. The rest is creating &lt;code&gt;site.standard.document&lt;/code&gt; for each blog post like this one:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
  &amp;#34;path&amp;#34;: &amp;#34;/entries/2026/01/we-must-reclaim-the-cyberspace&amp;#34;,
  &amp;#34;site&amp;#34;: &amp;#34;at://did:plc:32534e3a5wza2m3omyuflhm3/site.standard.publication/3mnmnwcnftk2i&amp;#34;,
  &amp;#34;$type&amp;#34;: &amp;#34;site.standard.document&amp;#34;,
  &amp;#34;title&amp;#34;: &amp;#34;we must reclaim the cyberspace&amp;#34;,
  &amp;#34;publishedAt&amp;#34;: &amp;#34;2026-01-01T09:33:17.000Z&amp;#34;,
  &amp;#34;textContent&amp;#34;: &amp;#34;The internet I grew up in no longer exists.\n\nThe internet, with its hyper-fast communication flows, was meant to enable the\nnew golden age for humanity. We were promised to have a global village where\ntribes transcend the limitations of geography. We could find our people\nwherever they were. Our ideas, our niche interests were supposed to connect us\nwith others in the vast network of nodes. If, only if, we can discover them.\n\nInstead, what we got is the commodification of communication. The connection\nthat was promised to us has been reformatted in terms of the market: \&amp;#34;How can a\npractice, experience, or feeling be monetized?\&amp;#34; Yes, discoverability is solved\nthanks to search engines and social media platforms. But now we connect, not to\neach other, but to the algorithm. We no longer contribute ideas to each other,\nbut to the circulation of the \&amp;#34;content\&amp;#34;.\n\nWe must reclaim the cyberspace.&amp;#34;,
  &amp;#34;canonicalUrl&amp;#34;: &amp;#34;https://hypersubject.net/entries/2026/01/we-must-reclaim-the-cyberspace&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I didn&amp;rsquo;t want to create records manually, so I started looking for solutions. To my surprise, I couldn&amp;rsquo;t find an SDK for AT Proto in go. But there&amp;rsquo;s &lt;a href=&#34;https://github.com/bluesky-social/goat&#34;&gt;goat&lt;/a&gt; (go at [protocol]). Unfortunately it didn&amp;rsquo;t allow me to create &lt;code&gt;site.standard.document&lt;/code&gt; records:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ goat record create doc.json 
error: API request failed (HTTP 400): InvalidRequest: Unknown lexicon type: site.standard.document
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Protip: Even though I couldn&amp;rsquo;t use &lt;code&gt;goat&lt;/code&gt; to create records, it can delete them. Since I figured out the integration through trial and error, it came in handy:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ goat record ls did:plc:32534e3a5wza2m3omyuflhm3 \
	| grep document \
	| awk &amp;#39;{print $2}&amp;#39; \
	| xargs -I{} goat record delete -c site.standard.document -r {}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then I found &lt;a href=&#34;https://sequoia.pub/&#34;&gt;Sequoia&lt;/a&gt;. It&amp;rsquo;s a &amp;ldquo;simple CLI for creating standard.site documents from your existing static blog.&amp;rdquo; It&amp;rsquo;s not that flexible (yet) but very simple to use.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sequoia auth # authenticate with an app password
$ sequoia init # configure publisher
$ sequoia publish # create site.standard.document records
$ sequoia inject # inject &amp;lt;link&amp;gt; elements to each blog post for validation
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It&amp;rsquo;s also able to post on Bluesky when you publish a new blog post. Very handy.&lt;/p&gt;
&lt;p&gt;Finally, I confirmed that everything works with &lt;a href=&#34;https://site-validator.fly.dev/&#34;&gt;Standard.site Validator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not sure if standard.site will turn out to be something important but today it feels like a good step forward for the indieweb. And since it&amp;rsquo;s not intrusive and easy to integrate, I encourage you to publish your content on AT Protocol.&lt;/p&gt;
</description>
      <category>indieweb</category>
      <category>atproto</category>
    </item>
  </channel>
</rss>
