Skip to content

Negative SEO protection web app with automated, hierarchical and historical Google Search Console disavow generation and granular link-level control

License

Notifications You must be signed in to change notification settings

BansheeTech/Disavow-Generator

Repository files navigation

Disavow Generator

Negative SEO protection web app with automated, hierarchical and historical Google Search Console disavow generation and granular link-level control.

Disavow-Generator Logo

Python Flask Vue3 License Docker


Features

  • Automated Disavow Generation - Upload backlink exports and generate Google Search Console disavow files
  • Smart Categorization - Automatically categorizes entries as IPs, domains, or specific URLs
  • Historical Tracking - Tracks previously disavowed entries to highlight new threats
  • Whitelist Management - Maintain a whitelist of legitimate domains to exclude from disavow
  • New Entries Review - Review new domains/IPs before blocking with option to whitelist
  • Multi-format Support - Import from Excel (.xlsx, .xls), CSV, and TXT files
  • Production Ready - Multi-worker support with Hypercorn ASGI server
  • Docker Support - Easy deployment with Docker and docker-compose

Processing Whitelist Historic

Quick Start with Docker

# Clone the repository
git clone https://github.com/BansheeTech/Disavow-Generator.git

# Bring up the container
docker compose up -d

# Access
open http://localhost:44444

Default credentials: user / passwd

Change the default credentials immediately after first login via Settings.


Manual Installation

Requirements

  • Python 3.11+
  • pip

Setup

# Clone the repository
git clone https://github.com/BansheeTech/Disavow-Generator.git
cd Disavow-Generator

# Create virtual environment
python -m venv venv
source venv/bin/activate  # Linux/macOS
# venv\Scripts\activate   # Windows

# Install dependencies
pip install -r requirements.txt

# Run the application
python app.py

The app will start on http://localhost:44444


Configuration

Configuration is stored in conf/disavow.conf (auto-generated on first run):

[server]
port = 44444
mode = production
workers = 4
secret_key = <auto-generated>

[paths]
input_dir = __DISAVOW_DATA__/INGEST
output_dir = __DISAVOW_DATA__/OUTPUT
whitelist_file = __DISAVOW_DATA__/whitelist.txt

[auth]
username = user
password_hash = <bcrypt-hash>

Configuration Options

Option Description Default
port Server port 44444
mode production or development production
workers Number of worker processes 4

Usage

1. Upload Backlink Data

Upload backlink exports from tools like Ahrefs, SEMrush, Majestic, or any CSV/Excel file containing URLs.

2. Manage Whitelist

Add legitimate domains to the whitelist to prevent them from being included in the disavow file.

3. Generate Disavow File

Click "Generate Disavow File" to process all uploaded files. New domains/IPs will be highlighted for review.

4. Download & Upload to Google

Download the generated disavow file and upload it to Google Search Console Disavow Tool.


Docker Volumes

Volume Container Path Description
Config /app/conf Configuration file (disavow.conf)
Data /app/__DISAVOW_DATA__ Input files, output files, whitelist

Example docker-compose.yml:

services:
  disavow-generator:
    image: bansheetech/disavow-generator:latest
    container_name: disavow-generator
    restart: unless-stopped
    ports:
      - "44444:44444"
    volumes:
      - ./disavow_data:/app/__DISAVOW_DATA__
      - ./disavow_conf:/app/conf
    environment:
      - TZ=Europe/Madrid

API Endpoints

Method Endpoint Description
POST /api/upload Upload input file
POST /api/process Generate disavow file
GET /api/stats Get current statistics
GET /api/whitelist Get whitelist
POST /api/whitelist Update whitelist
GET /api/files List input files
GET /api/outputs List generated files
GET /api/download/<filename> Download disavow file

Tech Stack

  • Backend: Python 3.11, Flask 3.1, Hypercorn (ASGI)
  • Frontend: Vue.js 3, Tailwind CSS
  • Auth: Flask-Login, bcrypt
  • Data: pandas, openpyxl

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

See LICENSE.md for the full license text.


Author

Banshee - https://www.banshee.pro


Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

Negative SEO protection web app with automated, hierarchical and historical Google Search Console disavow generation and granular link-level control

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published