Domain ranking experiment

I'll be experimenting for the immediate future with increasing the number of backlinks and general domain rating for this site. I don't know why I haven't thought about this before, but increasing the DR for my literal firstnamelastname.com domain seems like a great investment of time throughout the rest of my career.

I'll document progress below.

Date

DR

Backlinks

Jan 17 2025

33

120

Nov 21 2024

22

232

Nov 04 2024

14

215

Oct 06 2024

14

73

Sep 22 2024

9

53

Jan 17, 2025

Interesting - my DR has gone up a bit, but my backlinks almost dropped in half! I didn't publish much during December, so this was a dormant period. I did upgrade my site to Astro 5, so I guess that nothing dropping is a good sign too.

Nov 21, 2024

My DR has climbed a bit, while the backlinks haven't changed much. I'm starting to see some value in writing about Astro, particularly since it's been linked on the Astro site, which itself is a DR 84 site.

The backlinks from October/November still haven't materialized, so I think it might have been a waste of time. Even if it didn't bump my DR, I expected them to show up in my backlinks panel in ahrefs, but that's not the case.

Nov 4, 2024

It's been about a month since I last updated. My DR is stil at 14, but my backlinks have grown to 215.

The project I mentioned last month is still proceeding. I haven't seen any of the backlinks show up in ahrefs, so I'm not sure it's even been a success. If it does work, even slowly, it will be incredibly valuable. It would be a bunch of backlinks from very high domain rating (think 75+) direct to my site. Hoping it pays off!

Over the last month, I ported my site to Astro. I've been writing a ton, and a few of the posts have been getting a decent amount of traffic. Now that I have full control over the source of the site, I suspect that I'll be able to more rapidly increase these numbers.

One avenue I've identified that might be interesting is blogging about open-source projects, and trying to get them included on the documentation sites for these projects. I submitted a PR for an Astro-related blog post, but it didn't quite fit the bill. Whether it's Astro, Zustand, or some other project, I think this may be an interesting way to get some high-quality backlinks.

Oct 6, 2024

DR 14 (!), backlinks 73. My DR is up 5 points, and there's 20 new backlinks.

I'm still building backlinks. I recently found a list of great free backlink sites (think sites you know that have free signups, where linking to your site would be valuable). I now have my virtual assistants going through and creating accounts on all of these sites, linking back to this one. We'll see if that pays off.

One interesting backlink profile is from Bearblog itself - the platform that hosts this blog. When I write on a regular basis, backlinks show up from bearblog.dev, on their recent page. This changes so frequently (lots of people publish on a regular basis) that I think it may be slightly thrashing my baby backlinks profile with a high quality link, then taking it away.

Probably my best backlink from this period: my author bio on egghead.io. I went back and updated my account information on their author profile service, and the backlink points here instead of an URL I own, based on a previous Twitter username.

Sep 22, 2024

DR 9, backlinks 53. Starting point. There's a ton of backlinks from past domains I've had (including my old Twitter handle) that I'm going to try and get to point here. Nowhere to go but up!

CleanShot 2024-09-22 at 11

Indexing

Backlinks don't matter if your pages aren't indexed. When I checked Google Search Console, a lot of this site's content wasn't. Search Console gets there eventually, but you can notify Google directly with the Indexing API. Here's the core of how I did it in simpleindex, a Rails app that reads a sitemap and makes sure every page is indexed:

require 'google/apis/indexing_v3'

class IndexPageJob
  include Sidekiq::Job
  sidekiq_options concurrency: 1

  def perform(id)
    credentials = Google::Auth::ServiceAccountCredentials.make_creds(
      json_key_io: File.open(
        Rails.root.join("config/google-cloud.json")
      ),
      scope: "https://www.googleapis.com/auth/indexing"
    )

    page = Page.find(id)

    index = Google::Apis::IndexingV3::IndexingService.new
    index.authorization = credentials
    index.publish_url_notification(
      Google::Apis::IndexingV3::UrlNotification.new(
        type: "URL_UPDATED",
        url: page.url
      )
    )

    page.indexed = true
    page.last_scanned = DateTime.now
    page.save
  end
end

I later rebuilt it on Cloudflare Workflows as indexer. Then I learned Google is cracking down on tools that use the Indexing API this way, so I don't recommend either for production. It isn't worth the risk of your domain or URLs being penalized.

GitHub backlinks

Links from GitHub are nofollow, so they're weak backlinks, but they can still help. This GitHub Actions workflow turns this site's RSS feed into a README with a list of posts. See kristianfreeman/blog-posts for how it looks:

name: Update README with Blog Posts

on:
  schedule:
    # Run every hour
    - cron: '0 * * * *'
  workflow_dispatch:
  push:
    branches:
      - main
    paths:
      - '.github/workflows/*'  # Only run if workflow files change

jobs:
  update-readme:
    permissions:
      contents: write

    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Install required packages
      run: |
        sudo apt-get update
        sudo apt-get install -y curl libxml2-utils

    - name: Fetch RSS feed
      id: fetch_rss
      run: |
        # CHANGE THIS TO YOUR FEED URL
        RSS_URL="https://YOURWEBSITE/feed" 
        # This xpath definition may need to be changed to fit your feed structure
        curl -s "$RSS_URL" | xmllint --xpath '//item/title | //item/link' - | \
        awk 'NR % 2 == 1 { title=$0; gsub(/<[^>]+>/, "", title); } NR % 2 == 0 { gsub(/<[^>]+>/, "", $0); print "- [" title "](" $0 ")" }' > posts.md

    - name: Prepare Markdown content
      id: prepare_markdown
      run: |
        if [ -f posts.md ] && [ -s posts.md ]; then
          echo "# Latest Blog Posts" > new_content.md
          cat posts.md >> new_content.md
        else
          echo "# Latest Blog Posts" > new_content.md
          echo "No blog posts found." >> new_content.md
        fi

    - name: Update README.md
      run: |
        if [ -s new_content.md ]; then
          rm README.md
          mv new_content.md README.md
          rm posts.md
        fi

    - uses: stefanzweifel/git-auto-commit-action@v5
      with:
        commit_message: "Update README with latest blog posts"
        branch: main