Python is a popular high-level programming language known for its readability and efficiency. In the realm of Search Engine Optimization (SEO), Python offers powerful tools for web scraping, data analysis, automation, and much more. In this article, we will look at a Python script for creating a graph to analyze relationships between keywords and URLs.

The Code

This Python script uses the Pandas, NetworkX, and Plotly libraries. Here is the code:

import pandas as pd
import networkx as nx
import plotly.graph_objects as go

# Load data from CSV or ODS file
filepath = "your_file_path"
data = pd.read_excel(filepath, usecols=['Keyword', 'Current URL'])

# Create an empty graph
graph = nx.Graph()

# Add nodes to the graph
graph.add_nodes_from(data['Current URL'])

# Add edges to the graph
edges = zip(data['Keyword'], data['Current URL'])

# Create the graph layout
positions = nx.spring_layout(graph)

# Get the degree of each node
node_degrees = dict(

# Normalize node sizes
min_size = min(node_degrees.values())
max_size = max(node_degrees.values())
fig = go.Figure()

for node in graph.nodes:
    x, y = positions[node]
    size = node_degrees[node]  # Unscaled size
    size_normalized = (size - min_size) / (max_size - min_size)  # Scale size in the range [0, 1]
    node_size = size_normalized * 20  # Adjust the size as you like
    fig.add_trace(go.Scatter(x=[x], y=[y], mode='markers', name=node, marker=dict(size=node_size), text=node, hoverinfo='text'))

for edge in graph.edges:
    x0, y0 = positions[edge[0]]
    x1, y1 = positions[edge[1]]
    fig.add_trace(go.Scatter(x=[x0, x1], y=[y0, y1], mode='lines', name='Connection', hoverinfo='none'))

fig.update_layout(title='Interactive Graph', showlegend=False, hovermode='closest')

Please replace your_file_path with the path to your own ODS or CSV file.

Installation and Execution

To successfully run this script, you need to install a few Python packages. The first, pandas, is a data manipulation library. The second, networkx, is used for creation, manipulation, and study of complex networks. The third package, plotly, is used for interactive graphing.

You can install these packages using pip, which is Python’s package manager. If you've Python installed, you likely have pip on your machine. In your terminal or command line, type the following commands:

pip install pandas
pip install networkx
pip install plotly

After installing these packages, you can run the script in your Python environment. Don't forget to replace the file path with your own CSV or ODS file.

Use Cases

This script's primary use is to analyze relationships between various keywords and URLs of a website. From an SEO perspective, understanding these connections is crucial. With this visual graph, you can identify which keywords are linked to which URLs. This could be particularly beneficial for content creation, targeting specific keywords, and improving the website's overall SEO.

The graph's nodes represent Keywords and URLs, with their size proportionate to their degree (number of connections). The lines between nodes represent connections based on the data from your input file.


In the field of SEO, Python can be a powerful ally. Whether you need to extract keywords, analyze sentiment, auto-complete suggestions, or visualize relationships between URLs and keywords, Python has all the tools needed. With a bit of coding knowledge, the world of SEO data analysis can well be at your fingertips.

We hope this guide has been helpful. If you have any questions or issues, don't hesitate to reach out.

Keywords: Python SEO, Python for SEO, Python code for SEO, Python SEO analysis, Python keyword extraction, text analysis with Python, sentiment analysis Python, Python autocomplete.

Internal Links:

Text Analysis with Python: Extracting Keywords and Sentiment Analysis

Python Code for SEO

Keyword Analysis and Web Content with Python

Python Code for SEO: Google Autocomplete Suggestions

Try My New Google SEO Extension 😉😎 ! I would be delighted to receive your feedback, comments, and suggestions. Please feel free to share your thoughts!

por Alexis Galán

SEO & Python...

Deja una respuesta