Skip to content
Django Check SEO will check the SEO aspects of your site for you, and will provide advice in case of problems.
Python CSS HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE
django_check_seo
.bumpversion.cfg
.flake8
.gitignore
.pre-commit-config.yaml
LICENSE
MANIFEST.in
README.md
setup.cfg
setup.py

README.md

Django Check SEO

Replacing some features of Yoast or SEMrush for django CMS users.

In other words, django-check-seo will tell you if you have problems concerning a broad range of SEO aspects of your pages.


Installation

The following instructions are for an installation on a djangocms-based website using python >= 3 & django >= 2, or for a djangocms-based website using python >= 2.7 & django >= 1.8.15.

  1. Install module using pipenv:
pipenv install django-check-seo
  • Or pip:
pip install django-check-seo
  1. Add it to your installed apps:
    "django_check_seo",
  1. Add it to your urls.py (before url(r'^', include('cms.urls')), or it will not work):
    url(r"^django-check-seo/", include("django_check_seo.urls")),
  • Or add this if you're using path:
    path("django-check-seo/", include("django_check_seo.urls")),
  1. Update your site parameters with correct url (example for dev environment)

  2. (optional) Configure the settings, and/or force http instead of https, and/or add authentification (see config).

  3. that's all folks!


Prerequisites

This application need beautifulsoup4, requests, djangocms & djangocms_page_meta.


Config

Basic settings

Basic config (used by default) is in django-check-seo/conf/settings.py:

SEO_SETTINGS = {
    "content_words_number": [300, 600],
    "internal_links": 1,
    "external_links": 1,
    "meta_title_length": [30, 60],
    "meta_description_length": [50, 160],
    "keywords_in_first_words": 50,
    "max_link_depth": 3,
    "max_url_length": 70,
}

If you need to change something, just define it in your mywebsite/settings.py file in a dict named DJANGO_CHECK_SEO_SETTINGS.

Example:

If you put this in your settings.py file:

DJANGO_CHECK_SEO_SETTINGS = {
    "internal_links": 25,
    "meta_title_length": [15,30],
}

Then this will be the settings used by the application:

SEO_SETTINGS = {
    "content_words_number": [300, 600],
    "internal_links": 25,
    "external_links": 1,
    "meta_title_length": [15,30],
    "meta_description_length": [50, 160],
    "keywords_in_first_words": 50,
    "max_link_depth": 3,
    "max_url_length": 70,
}

Use http instead of https

By default, the application will attempt to make requests in https.

To enable plain http queries, you can add a variable named DJANGO_CHECK_SEO_FORCE_HTTP set to True in your settings.py.

Example:

# Force HTTP
DJANGO_CHECK_SEO_FORCE_HTTP = True

# Force HTTPS (default case, same as not defining the variable)
DJANGO_CHECK_SEO_FORCE_HTTP = False

Authentication

The website you want to test may require a prior connection due to a .htaccess file (or may use wsgi-basic-auth), which prevents django-check-seo from accessing its html code.

To prevent this, you can specify the login informations (username/password) in the DJANGO_CHECK_SEO_AUTH dictionnary (in your website settings).

This dictionary must contain two keys named user and pass.

Example:

  • In mywebsite/settings.py:
DJANGO_CHECK_SEO_AUTH = {
    "user": os.getenv("HTACCESS_USER"),
    "pass": os.getenv("HTACCESS_PASS"),
}
  • In .env file:
export HTACCESS_USER=myusername
export HTACCESS_PASS=mypassword

WSGI_AUTH_CREDENTIALS=$HTACCESS_USER:$HTACCESS_PASS

Want a screenshot?

screenshot

Other screenshots and videos are available on the wiki.


Interested in finding out more?

Take a look at the wiki:

You can’t perform that action at this time.