Skip to main content

🛡️ reddacted

AI-Powered Reddit Privacy Suite

Privacy Shield AI Analysis GitHub License GitHub commit activity PyPI - Version PyPI Downloads

Local LLM powered, highly performant privacy analysis leveraging AI, sentiment analysis & PII detection
to provide insights into your true privacy with bulk remediation

For aging engineers who want to protect their future political careers 🏛️

reddacted demo
reddacted results

✨ Key Features

🛡️

PII Detection
Analyze the content of comments to identify anything that might reveal PII that you may not want correlated with your anonymous username

🤫

Sentiment Analysis
Understand the emotional tone of your Reddit history, combined with upvote/downvote counts & privacy risks to choose which posts to reddact

🔒

Zero-Trust Architecture
Client-side execution only, no data leaves your machine unless you choose to use a hosted API. Fully compatible with all OpenAI compatible endpoints

Self-Host Ready
Use any model via Ollama, llama.cpp, vLLM or other platform capable of exposing an OpenAI-compatible endpoint. LiteLLM works just dandy.

📊

Smart Cleanup
Preserve valuable contributions while removing risky content - clean up your online footprint without blowing away everything

🔐 Can I trust this with my data?

You don't have to - read the code for yourself, only reddit is called

reddacted user yourusername --local-llm "http://localhost:11434"
  • ✅ Client-side execution only, no tracking or external calls
  • ✅ Session-based authentication if you choose - it is optional unless you want to delete
  • ✅ Keep your nonsense comments with lots of upvotes and good vibes without unintentionally doxing yourself
reddacted user taylorwilsdon --limit 3

📋 Table of Contents

📥 Installation

# Install from brew (recommended)
brew install taylorwilsdon/tap/reddacted

# Install from PyPI (recommended)
pip install reddacted

# Or install from source
git clone https://github.com/taylorwilsdon/reddacted.git
cd reddacted
pip install -e ".[dev]"  # Installs with development dependencies

🚀 Usage

# Most basic possible quick start - this will walk you through selecting your LLM in the command line
reddacted user spez

# Analyze a user's recent comments with local LLM specified
reddacted user spez \
  --limit 5 \
  --local-llm "http://localhost:11434" \
  --model "qwen2.5:3b" \
  --sort new

# Analyze controversial comments with OpenAI
export OPENAI_API_KEY="your-api-key"
reddacted user spez \
  --sort controversial \
  --time month \
  --model "gpt-4" \
  --limit 10 \
  --pii-only

# Analyze a specific subreddit post with PII filter disabled
reddacted listing r/privacy abc123 \
  --local-llm "http://localhost:11434" \
  --model "qwen2.5:3b" \
  --disable-pii \
  --sort new

# Search for specific content (requires auth)
reddacted user spez \
  --enable-auth \
  --text-match "python" \
  --skip-text "deleted" \
  --sort top \
  --time all

# Bulk comment management
reddacted delete abc123,def456 --batch-size 5  # Delete comments
reddacted update abc123,def456                 # Replace with standard redaction message
reddacted update abc123,def456 --use-random-string  # Replace with random UUID

Available Commands

Command Description
user Analyze a user's comment history
listing Analyze a specific post and its comments
delete Delete comments by their IDs
update Replace comment content with r/reddacted

Common Arguments

Argument Description
--limit N Maximum comments to analyze (default: 100, 0 for unlimited)
--sort Sort method: hot, new, controversial, top (default: new)
--time Time filter: all, day, hour, month, week, year (default: all)
--output-file Save detailed analysis to a file
--enable-auth Enable Reddit API authentication
--disable-pii Skip PII detection
--pii-only Show only comments containing PII
--text-match Search for comments containing specific text
--skip-text Skip comments containing specific text pattern
--batch-size Comments per batch for delete/update (default: 10)
--use-random-string Use random UUID instead of standard message when updating comments

LLM Configuration

Argument Description
--local-llm URL Local LLM endpoint (OpenAI compatible)
--openai-key KEY OpenAI API key
--openai-base URL Custom OpenAI API base URL
--model NAME Model to use (default: gpt-4 for OpenAI)
Note: For cloud-based analysis using OpenAI, you can either use the --openai-key flag or set the environment variable:
export OPENAI_API_KEY="your-api-key"

❓ How accurate is the PII detection, really?

Surprisingly good. Good enough that I run it against my own stuff in delete mode. It's basically a defense-in-depth approach combining these methods:

📊 AI Detection

Doesn't need a crazy smart model, don't waste your money on r1 or o1.

  • Cheap & light models like gpt-4o-mini, gpt-3.5-turbo, qwen2.5:3b or 7b and Mistral are all plenty
  • Don't use something too dumb or it will be inconsistent, a 0.5b model will produce unreliable results
  • Works well with cheap models like qwen2.5:3b (potato can run this) and gpt-4o-mini (~15¢ per million tokens)

🔍 Pattern Matching

50+ regex rules for common PII formats does a first past sweep for the obvious stuff

🧠 Context Analysis

Are you coming off as a dick? Perhaps that factors into your decision to clean up. Who could say, mine are all smiley faces.

💡 FAQ

Q: How does the AI handle false positives?

Adjust confidence threshold (default 0.7) per risk tolerance. You're building a repo from source off some random dude's github - don't run this and just delete a bunch of stuff blindly, you're a smart person. Review your results, and if it is doing something crazy, please tell me.

Q: What LLMs are supported?

Local: any model via Ollama, vLLM or other platform capable of exposing an openai-compatible endpoint.
Cloud: OpenAI-compatible endpoints

Q: Is my data sent externally?

If you choose to use a hosted provider, yes - in cloud mode - local analysis stays fully private.

🔧 Troubleshooting

If you get "command not found" after installation:

  1. Check Python scripts directory is in your PATH:
# Typical Linux/Mac location
export PATH="$HOME/.local/bin:$PATH"

# Typical Windows location
set PATH=%APPDATA%\Python\Python311\Scripts;%PATH%
  1. Verify installation location:
pip show reddacted

🔑 Authentication

Before running any commands that require authentication, you'll need to set up your Reddit API credentials:

Step 1: Create a Reddit Account

If you don't have one, sign up at https://www.reddit.com/account/register/

Step 2: Create a Reddit App

  • Go to https://www.reddit.com/prefs/apps
  • Click "are you a developer? create an app..." at the bottom
  • Choose "script" as the application type
  • Set "reddacted" as both the name and description
  • Use "http://localhost:8080" as the redirect URI
  • Click "create app"

Step 3: Get Your Credentials

After creating the app, note down:

  • Client ID: The string under "personal use script"
  • Client Secret: The string labeled "secret"

Step 4: Set Environment Variables

export REDDIT_USERNAME=your-reddit-username
export REDDIT_PASSWORD=your-reddit-password
export REDDIT_CLIENT_ID=your-client-id
export REDDIT_CLIENT_SECRET=your-client-secret

These credentials are also automatically used if all environment variables are present, even without the --enable-auth flag.

🧙‍♂️ Advanced Usage

Text Filtering

You can filter comments using these arguments:

Argument Description
--text-match "search phrase" Only analyze comments containing specific text (requires authentication)
--skip-text "skip phrase" Skip comments containing specific text pattern

For example:

# Only analyze comments containing "python"
reddacted user spez --text-match "python"

# Skip comments containing "deleted"
reddacted user spez --skip-text "deleted"

# Combine both filters
reddacted user spez --text-match "python" --skip-text "deleted"

👨‍💻 Development

This project uses UV for building and publishing. Here's how to set up your development environment:

  1. Create and activate a virtual environment:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install UV:
pip install uv
  1. Install in development mode with test dependencies:
pip install -e ".[dev]"
  1. Build the package:
uv build --sdist --wheel
  1. Create a new release:
./release.sh

The release script will:

  • Build the package with UV
  • Create and push a git tag
  • Create a GitHub release
  • Update the Homebrew formula
  • Publish to PyPI (optional)

That's it! The package handles all other dependencies automatically, including NLTK data.

🧪 Testing

Run the test suite:

pytest tests

Want to contribute? Great! Feel free to:

  • Open an Issue
  • Submit a Pull Request

⚠️ Common Exceptions

too many requests

If you're unauthenticated, reddit has relatively low rate limits for it's API. Either authenticate against your account, or just wait a sec and try again.

the page you requested does not exist

Simply a 404, which means that the provided username does not point to a valid page.

Pro Tip: Always review changes before executing deletions!

🌐 Support & Community

Join our subreddit: r/reddacted

<style> .note { background-color: #f8f9fa; border-left: 4px solid #1976d2; padding: 15px; margin: 20px 0; border-radius: 4px; } .detection-methods, .auth-steps, .exceptions { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin: 20px 0; } .method, .step, .exception { background-color: #f8f9fa; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.05); } .method h3, .step h3, .exception h3 { margin-top: 0; border-bottom: 1px solid #e0e0e0; padding-bottom: 10px; } </style>

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reddacted-0.2.6.tar.gz (66.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reddacted-0.2.6-py3-none-any.whl (67.0 kB view details)

Uploaded Python 3

File details

Details for the file reddacted-0.2.6.tar.gz.

File metadata

  • Download URL: reddacted-0.2.6.tar.gz
  • Upload date:
  • Size: 66.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.9

File hashes

Hashes for reddacted-0.2.6.tar.gz
Algorithm Hash digest
SHA256 d5694b75fb5ebc3e068978600bf11ec336ff3ce91f0b4c25965710d68dd3fbff
MD5 850e0bea975a21e56dc66b83a260a66b
BLAKE2b-256 140f4ba9907050d130c6cbf4b72010cfd174bb8ecd364424f1ecb70f27311c3b

See more details on using hashes here.

File details

Details for the file reddacted-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: reddacted-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 67.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.9

File hashes

Hashes for reddacted-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d49594f040f12f2b3b99720a9b61bcd0a8647fa748ffa36d7ad1ef91eb8114c4
MD5 7c779085574d5eafc23c97e87c4db5bd
BLAKE2b-256 9f346e1b736be8282f6c399f0bb67cc3c5ff3e4f2d7d26ba70f764961d2525a3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.6 This release

2 files

0.2.5

2 files

0.2.4

2 files

0.2.1

2 files

0.2.0

2 files

0.1.7

2 files

0.1.2

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page