Over the last two months, I have been trying to make some improvements to the site to increase traffic to my personal site.
My first focus has been content. I wanted to address both content and quality. I had several draft posts sitting idle so I worked to get those published. The posts were in varying states, and some of them took more effort than others to get them into a state that I considered worthy of publication. I managed to get several posts out in January, and I have a good start on February. I want to keep up the momentum and develop a habit of posting on a regular cadence. I am not sure what that cadence is right now, but I am hoping that I can write at least two blog posts per month. I created an Upcoming Post plugin for Grav to make my draft posts more visible to myself and my readers. I just create a placeholder draft and set a target date, and now I have a constant reminder that I have content to grow.
As far as content quality goes, I have been making a very conscientious effort to deliver rich helpful content. I have been using some AI help for this. After I complete my initial draft, I feed the draft to a genAI tool to get feedback and recommendations. I usually get back a mix of 'great post' and recommendations on other areas to explore. I think this has been help in deliverying a more complete blog post. I also use AI to echowrite my blog posts with a consistent voice and style. I usually feed my draft blog post and my echowriting guides to a genAI tool, and I get back an updated blog post. I have a few style quirks that I think make my writing style. I will not go into those here, but you might be able to pick them up if you read enough of my content.
My next major focus has been SEO. I quickly learned that I can spend too much time crafting metatags for blog posts. I do not have that kind of time to spend on every post, but I do want to make sure that my content can be found by readers that are looking for it. I spent a small bit of time ensuring that every blog post have the common metatags. I am also using AI to generate some tags like keywords and description. I save the metatags in the frontmatter section in my page. I also made small changed to my theme template to make the description metatag more relevant. The original twig template looked for a summary, and if not found, it used the first 300 characters of the page content. This often resulted in inconsistent card sizes for each post. Here is the original and updated twig logic.
# Original twig template
{% if page.summary != page.content %}
{{ page.summary|raw }}
{% else %}
{{ page.content|raw }}
{% endif %}
# Updated twig template
{% if page.metadata.description.content %}
<p>{{ page.metadata.description.content|raw }}</p>
{% elseif page.summary != page.content %}
{{ page.summary|raw }}
{% else %}
{{ page.content|raw }}
{% endif %}
I have made a few other cosmetic changes to my theme. I have reduced the number of colors the them uses. I briefly experimented with using purple as the primary color, and after changing all of the HTML head tags to purple, I noticed that I still had a bunch of blue floating around. I had too many similar colors, and it was easier just to reduce the number of colors so that future color changes are easier. I also made a few other small cosmetic changes like making head tags use Bungee as the font for a bolder presence. I still need to figure out how to make it render correctly on Firefox or on a Mac with any browser, but it is not high on my priority list. I have made enough changes that I actually decided to fork the theme to avoid resets when the official version updates.
The artwork for the site has changed considerably since I first started blogging many many years ago. I have moved away from free no-attribution images. Most of the art is AI generated now. I have experimented with several different styles, but I keep coming back to the comic book style. The images are generally colorful, and they can be compressed quite a bit without impacting the visual quality. I do tag my images with a small logo watermark and some EXIF data. They get stamped with a pair of nanoservices that I created. The only exception to this is when I create a leader image that focuses on a third party logo. At some point, I do want to refresh the artwork for my older articles, but that is really low on my priority list.
You may have noticed that I keep saying AI tool instead of naming specific apps. That was intentional for this post. I am constantly bouncing between apps to see how they compare. Models are constantly being updated, and skills are being added. The entire AI landscape is in a constant state of flux. As capabilities develop, my rotation gets smaller. I generally bounce between Gemini, ChatGPT, and Copilot, and a few of the local LLM tools like Msty and LM Studio. I am also using extensions so that I can access them from other apps as well.
These updates are all part of a larger effort to find a sustainable rhythm for the site. While I am still dialing in the perfect cadence and polishing the rougher edges of my theme, the combination of AI-assisted workflows and these structural tweaks has finally given me a solid foundation to build on. There is still plenty of work left on my low-priority list, but for now, I am just focused on keeping the momentum going and seeing how these changes move the needle on traffic and quality.