Install
openclaw skills install pain-to-pip-packageComplete pipeline: Reddit pain scan → cluster → build pip-installable CLI tool → push to GitHub. 5 tools shipped using this pattern. Proven with 343 pain sig...
openclaw skills install pain-to-pip-packageEnd-to-end workflow for turning Reddit complaints into standalone pip-installable CLI tools.
python3 scripts/daily-pipeline run
Uses Reddit's public .json API (no auth needed for reading). Key lessons:
reddit.com/r/{sub}/hot.json directlyKeywords-based clustering into 8 categories:
Existing tools are matched via keyword map to avoid duplicates.
Every tool follows this structure:
tool-name/
pyproject.toml # setuptools.build_meta, entry point
README.md # install + usage + pain source quote
tool_package/
__init__.py # from .cli import main; __version__
cli.py # all logic, main() at bottom
pyproject.toml template:
[build-system]
requires = ["setuptools>=64", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "tool-name"
version = "0.1.0"
description = "..."
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.8"
keywords = ["relevant", "search", "terms"]
urls = { repository = "https://github.com/OWNER/REPO" }
[project.scripts]
tool-command = "tool_package.cli:main"
[tool.setuptools.packages.find]
include = ["tool_package*"]
CRITICAL: build-backend must be "setuptools.build_meta" NOT "setuptools.backends._legacy:_Backend". The latter causes BackendUnavailable on pip install.
pip install --break-system-packages ./tool-name
tool-command # verify entry point works
git add tool-name/
git commit -m "feat: tool-name — description"
git push
gh release create vX.Y.Z --title "vX.Y.Z — N Tools" --notes "..."
Never use execute_code to read+write files in the same script — read_file returns line-numbered content like 1|content. If you pass that to write_file, the file gets literal 1| prefixes, breaking TOML parsers.
Reddit browser access blocked — Cloud browsers get "blocked by network security" on Reddit. Only API access works. Posting requires user credentials (praw or OAuth).
pip in newer macOS — Use --break-system-packages flag or create venvs.
GitHub topic limit — 20 topics max. Remove generic ones (tools, productivity) to make room for search-specific ones.
GitHub search indexes: repo name, description, topics, README content (lower weight).
Description formula: "AI CLI tools: [keyword1] & [keyword2], [keyword3] & [keyword4], [keyword5] for [providers]. [unique hook]."
Example: "AI CLI tools: prompt censorship checker & bypass, model quality watchdog & degradation monitor, API cost comparison for OpenAI Claude DeepSeek Gemini. Built from real Reddit user complaints."
Topics: Prioritize search-intent keywords over generic ones. Every topic is a search facet.
Validation: After updating, search GitHub for the exact phrases users would type. Verify the repo appears in top 3.
Two cron jobs drive continuous improvement: