######octothorp.es
View Options
Hide

Hashtags for the Open Internet

Octothorpes are hashtags and backlinks that can be used anywhere on the web, linking urls and resources across a network of domains.

How to Octothorpe

  1. Register with an Octothorpes Ring
  2. Create Hashtags on your site.
  3. Create Backlinks to other sites.

Why Tho

Octothorpes frees the fun and utility of hashtags from the confines of commercial platforms and individual domains.

Octothorpe servers expand on web rings and blog rolls, acting as feeds and search engines that small communities can easily own and manage.

Getting Started

Every Octothorpes Ring is a collection of verified domains, each opting in to being indexed and contributing it’s links to the overall network.

The first step is to add your domain to the Ring.

Register a Domain

In order to contribute to the Ring, domains need to be verified. You can register your domain on this Ring.

Registration allows Rings to manage spam and other unwanted content. Be sure to read a Rings terms before registering.

Verify a Domain

Note: Different Rings may have different rules for domain verification.

To verify a domain in this Ring, you will be provided with a unique code to add to your DNS records after registration. This lets us ensure that whoever requested registration is able to control their domain.

Domain Approval

Once your domain has been registered and you’ve taken steps to verify that you control the domain, your website will be approved.

You will receive an email if you provided an email address. Otherwise, check to see if your domain is present on the Rings list of sites.

Web of Trust

Any domain that is verified on an Octothorpes Ring can endorse another domain, automatically verifying the new domain.

To endorse another domain, add a <link> tag to a page on your website.

<link
  rel="octo:endorses"
  href="https://endorsed.example.com">

Tags

You can tag your pages with terms, which are collected on your Ring.

Indexing a Page

Pages are passively indexed by Octothorpe Rings. To index a page whenever someone visit it, add this link tag to the documents head.

<link 
  rel="preload" 
  as="fetch" 
  href="<ring>/?uri=<page>">

<ring>: The URL for an Octothorpes Ring.

<page>: The URL for the page being indexed.

A single page can request indexing from any number of Rings. Include one <link> tag for each Ring.

By default, a ring will not index a page more regularly than once every five (5) minutes.

Specifically, octothorpes are links between your page a Ring’s tag. Create them by adding a <link> tag to your pages <head>.

<link 
  rel="octo:octothorpes"
  href="architecture" >

rel=: Defines the link as an Octothorpe.

href=: References a Tag on an Octothorpes Ring.

This <link> will tag the page with the octothorpe #architecture.

Octothorpes Are Anchors

If you want a link to be an octothorpe in the content of your page rather than just metadata, you can use an <a> tag.

<a 
  rel="octo:octothorpes" 
  href="/architecture">
  Architecture
</a>

rel=: Defines the link as an Octothorpe.

href=: References a Tag on an Octothorpes Ring as well as a URL on your website.

This <a> will tag the page with the octothorpe #architecture.

Backlinks are links that go … back. Pages within a Ring can see which other pages linked to them.

Backlinks are anchors. If you want a link to be saved as a backlink can define the relationship on the <a> tag.

<a 
  rel="octo:octothorpes" 
  href="https://ideastore.dev/">
  The Idea Store
</a>

This will allow https://ideastore.dev/ to backlink to this page.

In order to be recorded in the Ring, a pages need to endorse backlinks. Any page can endorse backlinks from any origin by including a <link> tag in the the <head> of the page.

<link 
  rev="octo:octothorpes" 
  href="*">

Pages can limit the domains they endorse backlinks from:

<link 
  rev="octo:octothorpes" 
  href="https://originating-site.com">

That tells the Octothorpe server that you endorse links originating from the specified URL, and they’ll be registered as backlinks.

You can fetch a pages backlinks as a JSON object by GETing the following endpoint:

<ring>/~/<url>

Communities

There are several ways to interact with an Octothorpes Ring.

Report a URL

To report any part of an Octothorpes ring, submit a report of the offending URL at that rings report form. This will alert the Octothorpe Rings admin to take appproriate action.

Moderation

Any verified domain on an Octothorpes Ring can take action to moderate that ring. These actions include:

  1. Ban a Term
  2. Ban a Domain

To perform moderation, visit the report form, authenticate a URL, and submit your report.

Authenticate a URL

  1. On the report form, click Authenticate URL.
  2. Enter the URL and hit “Authenticate”.
  3. Copy the provided <link> tag to the <head> of that URL.

Submit an Authenticated Report

  1. Enter the URL of the Site or Term to take action against.
  2. Select the URL to authenticate the action with.
  3. Submit the report.

Any domain or term that has an authenticated report against it will be removed from the Octothorpe Ring.

RSS Feeds

You can follow an entire Ring, and receive every new tag event, by subscribing to the Rings feed:

<ring>/rss

You can follow specific tag individualy by subscribing to those tags feeds:

<ring>/~/<tag>/rss

ActivityPub & Mastodon

An Octothorpes Ring, or any Tag in a Ring, can be followed as an ActivityPub Agent.

The username for the entire Ring is:

@~@<ring>

The username for a specific tag is:

@<tag>@<ring>

REST API

You can fetch any Tag as a JSON object via a GET request against the tags URL:

curl -X GET   -H "Content-type: application/json"   -H "Accept: application/json"   "<ring>/~/<tag>"

GET https://octothorp.es/

Fetches information about the Ring.

Response:

{
  "instance": "https://octothorp.es/"
}

GET https://octothorp.es/domains

Fetches a list of verified domains that are part of the Ring.

Response:

{
  "domains": […]
}

GET https://octothorp.es/domains/<domain>

Fetches all pages, octothorpes, and backlinks associated with a domain.

Response:

{
  "uri": <domain>,
  "octothorpes": […]
}

GET https://octothorp.es/~

Fetches all the terms present on a Ring.

Response:

{
  "octothorpes": […]
}

GET https://octothorp.es/~/<term>

Fetches all the URLs that octothorpe a given Term.

Response:

{
  "uri":"https://octothorp.es/~/<term>",
  "octothorpedBy": […url]
}

GET https://octothorp.es/index?uri=<uri>

Submits a given uri for indexing on the Ring.

Response:

200

Hosting a Community

Anyone can host an Octothorpes Ring for their community. Use either the open source codebase directly, or reach out to nk@stucco.software to inquire about a managed instance.