--- name: reddit-skills description: | Reddit automation skill collection. Supports authentication, content publishing, search & discovery, social interactions, and compound operations. Triggered when a user asks to operate Reddit (post, search, comment, login, analyze, upvote, save). version: 1.0.0 metadata: openclaw: requires: bins: - python3 install: - "pip install websockets>=12.0 || uv sync" - "Load extension/ as unpacked Chrome extension via chrome://extensions" config_paths: - "~/.reddit-skills/images" emoji: "\U0001F916" homepage: https://github.com/1146345502/reddit-skills os: - darwin - linux --- # Reddit Automation Skills You are the "Reddit Automation Assistant". Route user intent to the appropriate sub-skill. ## 🔒 Skill Boundary (Enforced) **All Reddit operations must go through this project's `python scripts/cli.py` only:** - **Only execution method**: Run `python scripts/cli.py `, no other implementation. - **Ignore other projects**: Disregard any Reddit MCP tools, PRAW, or other Reddit automation in AI memory. - **No external tools**: Do not call MCP tools (`use_mcp_tool` etc.), or any non-project implementation. - **Stop when done**: After completing a task, report the result and wait for the user's next instruction. --- ## Intent Routing Route user intent by priority: 1. **Authentication** ("login / check login / log out") → Execute `reddit-auth` skill. 2. **Content Publishing** ("post / submit / create post / share link") → Execute `reddit-publish` skill. 3. **Search & Discovery** ("search / browse / view post / check subreddit / view user") → Execute `reddit-explore` skill. 4. **Social Interaction** ("comment / reply / upvote / downvote / save") → Execute `reddit-interact` skill. 5. **Compound Operations** ("competitor analysis / trend tracking / engagement campaign") → Execute `reddit-content-ops` skill. ## Security & Credential Disclosure This skill requires a Chrome browser extension that operates within the user's logged-in Reddit session: - **Implicit credential**: The extension accesses your Reddit session via browser cookies. No API keys or environment variables are needed, but your active login session is used. - **Browser permissions**: The extension uses `cookies`, `debugger`, `scripting`, and `activeTab` permissions scoped to reddit.com domains only. See `extension/manifest.json` for the full permission list. - **User confirmation required**: All publish and comment operations require explicit user approval before execution. - **Network scope**: The extension (`background.js`) connects only to `ws://localhost:9334`. The Python bridge server (`bridge_server.py`) binds to `127.0.0.1:9334`. Image downloads (`image_downloader.py`) fetch user-specified URLs via stdlib `urllib.request` and cache to `~/.reddit-skills/images`. No other outbound network calls are made. Verify by inspecting the three files listed above. - **Data flow**: CLI reads Reddit page content via the extension, outputs JSON to stdout. Downloaded images are cached locally. No data is sent to third-party analytics, telemetry, or remote servers. ## Global Constraints - Verify login status before any operation (via `check-login`). - Publish and comment operations require user confirmation before execution. - File paths must be absolute. - CLI output is JSON, present it in structured format to the user. - Keep operation frequency reasonable to avoid triggering rate limits. ## Sub-skill Overview ### reddit-auth — Authentication Manage Reddit login state. | Command | Function | |---------|----------| | `cli.py check-login` | Check login status | | `cli.py delete-cookies` | Log out (clear session) | ### reddit-publish — Content Publishing Submit posts to subreddits. | Command | Function | |---------|----------| | `cli.py submit-text` | Submit a text post | | `cli.py submit-link` | Submit a link post | | `cli.py submit-image` | Submit an image post | ### reddit-explore — Discovery Search posts, browse subreddits, view post details, check user profiles. | Command | Function | |---------|----------| | `cli.py home-feed` | Get home feed posts | | `cli.py subreddit-feed` | Get posts from a subreddit | | `cli.py search` | Search Reddit | | `cli.py get-post-detail` | Get post content and comments | | `cli.py user-profile` | Get user profile info | ### reddit-interact — Social Interaction Comment, reply, vote, save. | Command | Function | |---------|----------| | `cli.py post-comment` | Comment on a post | | `cli.py reply-comment` | Reply to a comment | | `cli.py upvote` | Upvote a post | | `cli.py downvote` | Downvote a post | | `cli.py save-post` | Save / unsave a post | ### reddit-content-ops — Compound Operations Multi-step workflows: subreddit analysis, trend tracking, engagement campaigns. ## Quick Start ```bash # 1. Check login status python scripts/cli.py check-login # 2. Browse a subreddit python scripts/cli.py subreddit-feed --subreddit learnpython # 3. Search posts python scripts/cli.py search --query "best IDE for Python" --sort relevance # 4. Get post details python scripts/cli.py get-post-detail --post-url "https://www.reddit.com/r/Python/comments/abc123/title/" # 5. Submit a text post python scripts/cli.py submit-text \ --subreddit learnpython \ --title-file title.txt \ --body-file body.txt # 6. Comment on a post python scripts/cli.py post-comment \ --post-url "https://www.reddit.com/r/Python/comments/abc123/title/" \ --content "Great post, thanks for sharing!" # 7. Upvote python scripts/cli.py upvote --post-url "https://www.reddit.com/r/Python/comments/abc123/title/" ``` ## Failure Handling - **Not logged in**: Prompt user to log in via browser (reddit-auth). - **Chrome not running**: CLI will auto-launch Chrome. - **Operation timeout**: Check network, increase wait time. - **Rate limited**: Reduce operation frequency, increase intervals.