Build and release SEO automation tools with proper sanitization and deployment tracking
This skill has safety concerns that you should review before use. Some patterns were detected that may pose a risk.Safety score: 60/100.
KillerSkills scans all public content for safety. Use caution before installing or executing flagged content.
Expert guidance for building, sanitizing, and releasing SEO automation tools from the search-solved-public-seo repository. Ensures proper handling of private code, client data, and deployment workflows.
Before starting any work:
- `/content-analysis/` - Entity extraction, content duplication
- `/ecommerce/` - Category suggestions, title optimization
- `/internal-linking/` - Anchor text, internal linking automation
- `/keyword-clustering/` - SERP clustering, semantic grouping
- `/keyword-research/` - Trends, difficulty analysis, keyword grouping
- `/link-building/` - Backlink analysis tools
- `/on-page/` - Striking distance, content blocks
- `/ppc/` - AdWords/PPC tools
- `/reporting/` - Core updates, share of voice
- `/search-console/` - GSC exports, folder analysis, chart visualization
- `/technical-seo/` - Template fingerprinting, breadcrumb extraction
- `/website-migration/` - URL mapping tools
**CRITICAL - NEVER release these directly:**
**When adapting private client tools for public release:**
1. **Remove all hardcoded paths**: Strip `/python_scripts/`, `C:\python_scripts\`, and any absolute file paths
2. **Remove all client identifiers**: Client names, domains, company references
3. **Remove all credentials**: API keys, passwords, tokens (they must be revoked if found)
4. **Add Streamlit UI**: Replace hardcoded inputs with file upload widgets and configuration forms
5. **Create requirements.txt**: List all dependencies with version pins
6. **Document the tool**: Update `STREAMLIT_APPS.md` with deployment info
7. **Register in website**: Add entry to `tools.ts` in the lee-single-page-site repo
**Never commit API keys**. If discovered, revoke them immediately.
For deployed Streamlit apps, use:
```python
import streamlit as st
api_key = st.secrets["api_key"]
```
For local development:
For user-facing tools:
```python
api_key = st.text_input("Enter your API key", type="password")
```
**Standard structure:**
```python
import streamlit as st
import pandas as pd
st.title("Tool Name")
st.markdown("Brief description of what this tool does")
uploaded_file = st.file_uploader("Upload CSV", type=['csv'])
if uploaded_file:
df = pd.read_csv(uploaded_file)
# Configuration inputs
threshold = st.slider("Threshold", 0.0, 1.0, 0.8)
# Process button
if st.button("Process"):
with st.spinner("Processing..."):
# Your logic here
result_df = process_data(df, threshold)
st.success("Complete!")
st.dataframe(result_df)
# Download button
csv = result_df.to_csv(index=False)
st.download_button("Download Results", csv, "results.csv")
```
**Common dependencies** (`requirements.txt`):
```
streamlit>=1.28.0
pandas>=2.0.0
polyfuzz>=0.4.0
sentence-transformers
```
After creating a new tool:
After adding a tool to `STREAMLIT_APPS.md`, update the website repo at `/Users/leefoot/Documents/GitHub/lee-single-page-site/src/data/tools.ts`:
```typescript
{
title: "Tool Name",
description: "Brief description",
category: "Internal Linking", // or other valid category
url: "https://toolname.streamlit.app",
github: "https://github.com/searchsolved/search-solved-public-seo/tree/main/category/tool-name"
}
```
**Valid categories**: `Internal Linking`, `Keyword Research`, `Content`, `Technical SEO`, `Reporting`, `E-commerce`, `Migration`, `Search Console`, `PPC`
**Example 1: Sanitizing a private keyword research tool**
Before (private):
```python
df = pd.read_csv("C:\\python_scripts\\acme-corp\\keywords.csv")
api_key = "sk-proj-abc123"
```
After (public):
```python
uploaded_file = st.file_uploader("Upload keywords CSV", type=['csv'])
df = pd.read_csv(uploaded_file)
api_key = st.text_input("Enter your API key", type="password")
```
**Example 2: Creating requirements.txt**
```
streamlit>=1.28.0
pandas>=2.0.0
sentence-transformers>=2.2.0
scikit-learn>=1.3.0
```
**Example 3: Registering in tools.ts**
```typescript
{
title: "Keyword Semantic Clusterer",
description: "Group keywords by semantic similarity using sentence transformers",
category: "Keyword Research",
url: "https://keyword-clusterer.streamlit.app",
github: "https://github.com/searchsolved/search-solved-public-seo/tree/main/keyword-clustering/semantic-clusterer"
}
```
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/seo-python-tool-development/raw