DEV Community

Cover image for I Built Novash — An Open-Source SEO Checker You Can Run From Your Terminal
Sanskar Garg
Sanskar Garg

Posted on

I Built Novash — An Open-Source SEO Checker You Can Run From Your Terminal

When I started working on websites and web projects, I noticed something pretty simple.

A website can look completely fine in the browser and still have a lot of small SEO problems.

Maybe the page doesn't have a proper title. Maybe the meta description is missing. Some images don't have alt text. There are broken links. The H1 isn't meaningful. Social metadata or other technical SEO elements might be missing.

None of these problems are particularly difficult to fix, but checking them manually becomes annoying, especially when you're working on multiple pages.

That's what made me build Novash.

First, What Actually Matters for SEO?

Before talking about the tool, it's worth understanding what we're actually trying to check.

SEO isn't just about adding a few keywords to a webpage and hoping Google ranks it.

There are several things that contribute to a technically healthy page.

What to Check Why It Matters
Page title Helps search engines and users understand what the page is about
Meta description Can influence how the page is presented in search results
H1 heading Gives the page a clear primary heading
Image alt text Helps describe images and improves accessibility
Internal links Helps users and crawlers navigate the website
Broken links Can create a poor user experience
Canonical URL Helps indicate the preferred version of a page
Robots.txt Controls crawler access to parts of a site
Sitemap Helps search engines discover URLs
Structured data Can provide additional information about a page
Social metadata Controls how pages appear when shared

These checks don't guarantee that a page will rank highly.

Search rankings also depend on things like content quality, search intent, competition, backlinks, website performance, and many other factors.

But fixing technical problems is a good starting point.

So I Built Novash

Novash is an open-source command-line SEO checker written in Python.

Instead of opening a website and manually checking all these things, you can run a command in your terminal and get an SEO report.

You can install it directly from PyPI:

pip install novash
Enter fullscreen mode Exit fullscreen mode

Then scan a website:

novash scan https://example.com
Enter fullscreen mode Exit fullscreen mode

That's basically the idea.

Give Novash a URL, let it inspect the page, and it reports the problems it finds.

What Does Novash Check?

The project started with basic on-page SEO checks and has gradually grown into a larger collection of checks.

Some of the things it can look at include:

  • Page title
  • Meta description
  • H1 headings
  • Image alt text
  • Links
  • Broken links
  • Canonical information
  • Open Graph metadata
  • Twitter metadata
  • Robots.txt
  • Sitemap
  • Favicon
  • Structured data
  • SEO score
  • Suggestions for fixing problems

I also wanted the output to be useful rather than just dumping a huge amount of HTML information into the terminal.

For example, instead of simply saying that an image doesn't have an alt attribute, the tool can turn that into an actionable suggestion.

SEO Score: 79/100

Suggestions

Add alt text to 17 images.
Fix 4 broken links.
Consider adding structured data.
Enter fullscreen mode Exit fullscreen mode

So the goal isn't just to find problems.

It's to make the problems easier to understand and fix.

The Scoring System

Novash also calculates an SEO score out of 100.

The score starts at 100 and deductions are made when important SEO elements are missing or problematic.

For example:

Problem Example Impact
Missing title -15
Missing meta description -15
No meaningful H1 -15
Images missing alt text Up to -20

The score is meant to be a quick way of seeing the technical state of a page, rather than pretending that a single number represents the actual Google ranking potential of a website.

A website scoring 100 doesn't automatically mean it will rank above another website scoring 70.

It's simply an easier way to identify technical issues.

Why Make It a CLI?

There are already plenty of websites where you can enter a URL and get an SEO report.

I wanted Novash to be a little different.

As a developer, I'm already spending a lot of time in the terminal, so having something like this as a CLI felt natural.

For example:

novash scan https://example.com
Enter fullscreen mode Exit fullscreen mode

It can also fit into development workflows more easily than having to open a website every time.

Eventually, I'd like to make it useful in things like CI/CD pipelines as well.

Imagine pushing a website and automatically checking it for certain SEO issues before deployment.

That's one of the directions I'm interested in taking the project.

JSON Export

Another thing I wanted was the ability to use the results somewhere else.

Novash supports exporting scan results as JSON.

For example:

novash scan https://example.com --export report.json
Enter fullscreen mode Exit fullscreen mode

This makes it possible to take the results and process them with another script, application, or automation workflow.

It also gives the project room to eventually support other types of reporting.

What I Used to Build It

Novash is built with Python and a few libraries that make building a CLI like this much easier.

The main technologies include:

Technology Used For
Python Main programming language
Requests Fetching web pages
BeautifulSoup Parsing HTML
Typer Building the CLI
Rich Terminal output and formatting

I also separated different checks into different modules instead of putting everything into one large file.

That made it easier to add new checks without making the entire project harder to maintain.

Releasing It on PyPI

One of the interesting parts of this project wasn't just writing the code.

I also had to figure out how to package and publish a Python project properly.

That meant working with:

pyproject.toml
Enter fullscreen mode Exit fullscreen mode

building distributions, checking them with Twine, and eventually publishing the package to PyPI.

The package is now publicly available as:

pip install novash
Enter fullscreen mode Exit fullscreen mode

The current release is 0.1.0.

You can find it here:

Novash on PyPI

What's Next?

There are still quite a few things I want to improve.

Some ideas I have for future versions are:

  • Better full-site crawling
  • More technical SEO checks
  • More structured-data validation
  • HTML reports
  • PDF reports
  • Batch URL scanning
  • More configurable scoring
  • CI/CD integration
  • More accessibility-related checks
  • Better handling of large websites

I also want to keep the project relatively simple to use.

I'd rather have a command that gives useful information quickly than turn it into a giant tool with hundreds of confusing options.

Why I Built It

Novash started as a project for me to learn more about SEO, web crawling, and Python tooling.

But it also became a good exercise in something I think is important when learning programming:

actually shipping something.

It's one thing to write a Python script that works on your computer.

It's another thing to turn it into a package, create a CLI, build it, test it, publish it, and let other people install it.

That's probably been one of the most useful parts of building Novash for me.

There are still plenty of things I want to improve, but version 0.1.0 is out there now.

If you want to try it:

pip install novash
Enter fullscreen mode Exit fullscreen mode

Then:

novash scan https://example.com
Enter fullscreen mode Exit fullscreen mode

You can find the package on PyPI.

GitHub: Novash

I'd be interested to hear what checks you think an SEO CLI like this should have.


Top comments (0)