ClickGems: SEO improvements
To improve ClickGem SERP rankings we should look to:
- Improving the meta data to include more package specific details (not just the name)
- Add schema meta data
- Adding richer context to the HTML content
- Render package pages server-side
1. Improving meta data
Meta title
- Current:
ClickGems - Download analytics for {package name} - Suggested:
{package name} RubyGem analytics & download stats – ClickGems
Meta description
- Current:
Analytics for the gem {package name}, powered by ClickHouse - Suggested:
Analytics for the {package name} RubyGem, created by {author name}. View download trends, version stats, and release insights. Licensed under {license name}. Free RubyGems analytics powered by ClickHouse.
2. Schema markup
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "{package name}",
"author": "{author name}",
"license": "{license name}",
"description": "{package summary}",
"applicationCategory": "RubyGem",
"operatingSystem": "Cross-platform",
"url": "https://clickgems.clickhouse.com/dashboard/{package name}",
"downloadUrl": "https://rubygems.org/gems/{package name}"
}
</script>
3. Richer HTML content
Change titles from paragraphs to H1 and add context, for example:
- Current:
<p>{package name}</p> - Suggested:
<h1>{package name} RubyGem analytics</h1>
Make sub-headings H2s for clearer structure, for example:
- Current:
<p>Downloads over time</p> - Suggested:
<h2>{package name} RubyGem downloads over time</h2>
Also, while values are nicely visualised as graphs, we might want to include them as text for crawlability. We probably don't want a full list displayed since it can be lengthy, and we can't apply display: none since search engines will reject it. Instead wrapping it in an accordion keeps it accessible but hidden e.g:
<details>
<summary>Show historical download data</summary>
<ol>
<li>{download count} downloads for the {package name} RubyGem in the week beginning {date}</li>
<li>6,921 downloads for the aia RubyGem during the week beginning November 9, 2025</li>
...
</ol>
</details>
Adding some variation to the list template would also improve SEO by not looking "templated":
{package name}: {download count} downloads in the week of {date}
{package name}: {download count} downloads during the week of {date}
{package name} received {download count} downloads in the week of {date}
{download count} downloads for the {package name} RubyGem in the week starting {date}
{package name} RubyGem saw {download count} downloads during the week of {date}
The {package name} RubyGem received {download count} downloads in the week beginning {date}
4. Server-side rendering
Right now, when crawlers fetch the initial HTML, all they see in the body is 'Loading...' instead of the H1 title, package details, etc. This can cause problems for SEO so it's worth addressing.