reddit-skills
by 1146345502
README.md
# reddit-skills
Reddit automation Skills — directly uses your logged-in browser and real account, operating Reddit as an ordinary user.
Supports OpenClaw and all AI Agent platforms compatible with the `SKILL.md` format (e.g. Claude Code).
> **⚠️ Usage advice**: Although this project uses your real browser and account, you should still **control operation frequency** and avoid mass actions in a short time. Aggressive automation may trigger Reddit's rate limits or account restrictions.
## Features
| Skill | Description | Core Capabilities |
|-------|-------------|-------------------|
| **reddit-auth** | Authentication | Login check, session management |
| **reddit-publish** | Content Publishing | Text / link / image post submission |
| **reddit-explore** | Discovery | Search, subreddit browsing, post details, user profiles |
| **reddit-interact** | Social Interaction | Comment, reply, upvote, downvote, save |
| **reddit-content-ops** | Compound Ops | Subreddit analysis, trend tracking, engagement campaigns |
Supports **chained operations** — you can give compound natural-language instructions and the Agent will automatically chain multiple skills. For example:
> "Search r/Python for the most upvoted posts about FastAPI this week, save the top one, and tell me what it's about"
The Agent will execute: search → filter by top/week → save → get detail → summarize.
## Installation
### Prerequisites
* Python >= 3.11
* [uv](https://docs.astral.sh/uv/) package manager
* Google Chrome browser
### Step 1: Install the project
**Option A: Download ZIP (recommended)**
Download from GitHub and extract to your Agent skills directory:
```
# OpenClaw
<openclaw-project>/skills/reddit-skills/
# Claude Code
<your-project>/.claude/skills/reddit-skills/
```
**Option B: Git Clone**
```bash
cd <your-agent-project>/skills/
git clone https://github.com/1146345502/reddit-skills.git
```
Then install Python dependencies:
```bash
cd reddit-skills
uv sync
```
### Step 2: Install the browser extension
The extension lets the AI operate Reddit in your browser using your real login session.
1. Open Chrome, navigate to `chrome://extensions/`
2. Enable **Developer mode** (top right)
3. Click **Load unpacked**, select this project's `extension/` directory
4. Confirm the **Reddit Bridge** extension is enabled
Once installed, you're ready to go — all actions happen in your own browser, using your real account.
## Usage
### As an AI Agent skill (recommended)
After installing to a skills directory, just talk to the Agent in natural language. It will route your intent to the right skill automatically.
**Authentication:**
> "Check if I'm logged in to Reddit" / "Log out of Reddit"
**Search & Browse:**
> "Search Reddit for posts about machine learning" / "Show me the top posts on r/Python"
**Submit content:**
> "Submit a text post to r/learnpython with this title and body..."
**Interact:**
> "Upvote this post" / "Comment on this post: Great write-up!" / "Save this post"
**Compound operations:**
> "Analyze the top posts in r/startups this month and summarize the common themes"
### As an MCP server
reddit-skills includes a built-in [Model Context Protocol](https://modelcontextprotocol.io) server, making it compatible with any MCP client (Claude Desktop, Cursor, etc.).
**Start the server (stdio):**
```bash
cd reddit-skills
python scripts/mcp_server.py
```
**Configure in your MCP client** (e.g. Claude Desktop `claude_desktop_config.json`):
```json
{
"mcpServers": {
"reddit-skills": {
"command": "python",
"args": ["scripts/mcp_server.py"],
"cwd": "/path/to/reddit-skills"
}
}
}
```
The server exposes 16 tools: `check_login`, `logout`, `home_feed`, `subreddit_feed`, `search`, `get_post_detail`, `user_profile`, `subreddit_rules`, `post_comment`, `reply_comment`, `upvote`, `downvote`, `save_post`, `submit_text_post`, `submit_link_post`, `submit_image_post`.
**Environment variables:**
| Variable | Default | Description |
|----------|---------|-------------|
| `REDDIT_BRIDGE_URL` | `ws://localhost:9334` | WebSocket URL for the bridge server |
### As a CLI tool
All features can be called directly from the command line, with JSON output for scripting.
```bash
# Check login status
python scripts/cli.py check-login
# Browse a subreddit
python scripts/cli.py subreddit-feed --subreddit python --sort hot
# Search posts
python scripts/cli.py search --query "FastAPI tutorial" --sort top --time month
# Get post details and comments
python scripts/cli.py get-post-detail \
--post-url "https://www.reddit.com/r/Python/comments/abc123/title/"
# Submit a text post
python scripts/cli.py submit-text \
--subreddit learnpython \
--title-file title.txt \
--body-file body.txt
# Submit a link post
python scripts/cli.py submit-link \
--subreddit programming \
--title-file title.txt \
--url "https://example.com/article"
# Submit an image post
python scripts/cli.py submit-image \
--subreddit pics \
--title-file title.txt \
--images "/abs/path/image.jpg"
# Comment on a post
python scripts/cli.py post-comment \
--post-url "https://www.reddit.com/r/Python/comments/abc123/title/" \
--content "Thanks for sharing!"
# Upvote / Downvote / Save
python scripts/cli.py upvote --post-url "https://www.reddit.com/r/..."
python scripts/cli.py downvote --post-url "https://www.reddit.com/r/..."
python scripts/cli.py save-post --post-url "https://www.reddit.com/r/..."
# View user profile
python scripts/cli.py user-profile --username spez
```
> On first run, if Chrome is not open, the CLI will auto-launch it.
## CLI Command Reference
| Subcommand | Description |
|------------|-------------|
| `check-login` | Check login status, return username if logged in |
| `delete-cookies` | Log out (UI-based logout) |
| `home-feed` | Get home feed posts |
| `subreddit-feed` | Get posts from a subreddit (supports sort: hot/new/top/rising) |
| `search` | Search posts (supports sort and time filters) |
| `get-post-detail` | Get full post content and comments |
| `user-profile` | Get user profile and recent posts |
| `post-comment` | Comment on a post |
| `reply-comment` | Reply to a specific comment |
| `upvote` | Upvote a post |
| `downvote` | Downvote a post |
| `save-post` | Save / unsave a post |
| `submit-text` | Submit a text (self) post |
| `submit-link` | Submit a link post |
| `submit-image` | Submit an image post |
Exit codes: `0` success · `1` not logged in · `2` error
## Project Structure
```
reddit-skills/
├── extension/ # Chrome Extension (MV3)
│ ├── manifest.json
│ └── background.js
├── scripts/ # Python automation engine
│ ├── reddit/ # Core automation library
│ │ ├── bridge.py # Extension bridge client
│ │ ├── selectors.py # CSS selectors (centralized)
│ │ ├── login.py # Login check + logout
│ │ ├── feeds.py # Home feed + subreddit feed
│ │ ├── search.py # Search + filters
│ │ ├── post_detail.py # Post detail + comment loading
│ │ ├── user_profile.py # User profile
│ │ ├── comment.py # Comment, reply
│ │ ├── vote.py # Upvote, downvote, save
│ │ ├── publish.py # Post submission
│ │ ├── types.py # Data types
│ │ ├── errors.py # Exception hierarchy
│ │ ├── urls.py # URL constants
│ │ └── human.py # Behavior simulation
│ ├── cli.py # Unified CLI entry point
│ ├── mcp_server.py # MCP server wrapper (stdio/HTTP)
│ ├── bridge_server.py # Local WebSocket bridge
│ └── image_downloader.py # Image download with local cache
├── skills/ # AI Agent skill definitions
│ ├── reddit-auth/SKILL.md
│ ├── reddit-publish/SKILL.md
│ ├── reddit-explore/SKILL.md
│ ├── reddit-interact/SKILL.md
│ └── reddit-content-ops/SKILL.md
├── SKILL.md # Skill router (routes to sub-skills)
├── CONTRIBUTING.md # Contributor guide
├── Dockerfile # Container build for MCP deployment
├── pyproject.toml
└── README.md
```
## Development
```bash
uv sync # Install dependencies
uv run ruff check . # Lint
uv run ruff format . # Format
uv run pytest # Run tests
```
## License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessUnresponsive