This project has been archived by its maintainers, and is no longer receiving any updates.
SEOtools 🛠️
A set of utilities for SEOs and web developers with which to complete common tasks.
With SEOtools, you can:
- Programatically add links to related posts in content.
- Calculate PageRank on internal links from your sitemap.
- Identify broken links on a web page.
- Recommend a post to use as canonical for a given keyword.
- Find the distance of pages from your home page.
And more!
Installation 💻
You can install SEOtools using pip:
pip install seotools
Quickstart 🚀
Create a link graph
from seotools.app import Analyzer
# load from disk will load the link graph from disk if it has already been created
# otherwise, a new link graph will be created
analyzer = Analyzer("https://jamesg.blog/sitemap.xml", load_from_disk=True)
Get pagerank of a URL
print(analyzer.pagerank["https://jamesg.blog"])
Add relevant internal links to a web page
import markdown
article = markdown.markdown(BeautifulSoup(article.text, "html.parser").get_text())
keyword_replace_count = 0
for keyword, url in keyword_map.items():
if keyword_replace_count >= MAX_KEYWORD_REPLACE:
break
article = article.replace(keyword, f"<a href='{url}'>{keyword}</a>", 1)
keyword_replace_count += 1
print(article)
Recommend related content for a "See Also" section
article = requests.get("https://jamesg.blog/...")
article = markdown.markdown(BeautifulSoup(article.text, "html.parser").get_text())
urls = analyzer.recommend_related_content(article.text)
Check if a page contains a particular JSON-LD object
from seotools import page_contains_jsonld
import requests
content = requests.get("https://jamesg.blog")
print(page_contains_jsonld(content, "FAQPage"))
Get subfolders in a sitemap
analyzer.get_subpaths()
Get distance of URL from home page
analyzer.get_distance_from_home_page("https://jamesg.blog/2023/01/01/")
Retrieve keywords that appear more than N times on a web page
from seotools import get_keywords
import requests
from bs4 import BeautifulSoup
article = requests.get("https://jamesg.blog/...").text
parsed_article = BeautifulSoup(article, "html.parser").get_text()
# get keywords that appear more than 10 times
keywords = get_keywords(parsed_article, 10)
See Also 📚
- getsitemap: Retrieve URLs in a sitemap. (Web interface)
License 📝
This project is licensed under an MIT license.
Metadata
Release files for seotools 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| seotools-0.1.2.tar.gz | 16.3 kB | Without provenance | Details for seotools-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| seotools-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for seotools-0.1.2-py3-none-any.whl |
Total release size: 29.1 kB
Release files / seotools-0.1.2.tar.gz
| Download URL | seotools-0.1.2.tar.gz |
|---|---|
| Size | 16.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
82d9f99fa0129105f5077e22d246fa78fd4882df2380b388be3e2eb471b5b908
|
|
BLAKE2b-256 checksum How to use checksums |
4e847243c962a2be4f8f64860b2a3125366be8823a714aedb8b0579f829ce645
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.12
|
Release files / seotools-0.1.2-py3-none-any.whl
| Download URL | seotools-0.1.2-py3-none-any.whl |
|---|---|
| Size | 12.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ce76040452631ef12656db6b25b50733dfb95657b534c59ee5c3945ee7d067c2
|
|
BLAKE2b-256 checksum How to use checksums |
59bc7bd118e5f1835e2cbc9fbec91a1ad19a7d510d6018bba00d50fc99ca899d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.12
|
Security for seotools 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.