AI-powered WordPress content management framework with precision editing
Project description
PraisonAIWP
AI-powered WordPress content management framework with precision editing capabilities.
Features
Core Features
- ๐ Simple CLI - Intuitive commands with helpful prompts
- โก Fast - Auto-parallel mode for bulk operations (10x faster)
- ๐ฏ Precise - Line-specific and occurrence-specific text replacements
- ๐ Safe - Auto-backup, preview mode, dry-run capabilities
- ๐ Multi-Server - Manage multiple WordPress installations
- ๐ Smart - Auto-detects file formats and optimal settings
New in v1.0.2 ๐
- ๐ SSH Config Support - Use
~/.ssh/confighost aliases for simplified connection management - ๐ง WP-CLI Auto-Installer - One-command WP-CLI installation with automatic OS detection (Ubuntu, Debian, CentOS, RHEL, Fedora, Alpine, macOS)
- ๐ WordPress Auto-Detection - Automatically find WordPress installations on your server with multiple search strategies
- โก UV Package Manager - 10-100x faster dependency management with modern tooling
- ๐ก๏ธ Enhanced Error Handling - Helpful error messages with installation instructions and troubleshooting
- ๐ Installation Verification - Automatic checks for WP-CLI and WordPress validity on startup
Installation
Using uv (Recommended - 10x faster!)
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install
git clone https://github.com/yourusername/praisonaiwp
cd praisonaiwp
uv sync
# Run commands
uv run praisonaiwp init
Using pip
pip install praisonaiwp
# Or install from source
git clone https://github.com/yourusername/praisonaiwp
cd praisonaiwp
pip install -e .
Quick Start
1. Initialize Configuration
praisonaiwp init
๐ก Pro Tips:
- Use SSH config alias (e.g.,
wp-prod) - connection details loaded automatically! - Press Enter for WordPress path - auto-detection will find it for you
- PHP binary is auto-detected, or specify for Plesk:
/opt/plesk/php/8.3/bin/php
๐ SSH Config Support:
PraisonAIWP automatically reads from ~/.ssh/config. If you have multiple hosts configured:
# ~/.ssh/config
Host wp-prod
HostName production.example.com
User prod_user
IdentityFile ~/.ssh/id_prod
Host wp-staging
HostName staging.example.com
User staging_user
IdentityFile ~/.ssh/id_staging
Host wp-dev
HostName localhost
User dev_user
Port 2222
IdentityFile ~/.ssh/id_dev
Just enter the host alias (e.g., wp-prod, wp-staging, or wp-dev) when prompted for hostname, and PraisonAIWP will automatically load all connection details from your SSH config!
Choosing Between Multiple Configs:
- Each host alias is independent
- Use
--serverflag to specify which server to use:praisonaiwp create "Post" --server production praisonaiwp create "Post" --server staging
- Configure multiple servers in
~/.praisonaiwp/config.yaml:servers: production: hostname: wp-prod # SSH config alias wp_path: /var/www/html staging: hostname: wp-staging # SSH config alias wp_path: /var/www/staging
This will prompt you for:
- Server hostname - Can be IP, hostname, or SSH config alias (e.g.,
wp-prod) - SSH username - Auto-loaded from SSH config if using alias
- SSH key path - Auto-loaded from SSH config if using alias
- WordPress path - Press Enter to auto-detect, or specify manually
- PHP binary - Auto-detected, or specify custom path
2. Auto-Install WP-CLI (Optional)
If WP-CLI is not installed on your server:
# Automatically detect OS and install WP-CLI
praisonaiwp install-wp-cli -y
# Install with dependencies (curl, php)
praisonaiwp install-wp-cli --install-deps -y
# Custom installation path
praisonaiwp install-wp-cli --install-path /usr/bin/wp
# For Plesk servers
praisonaiwp install-wp-cli --php-bin /opt/plesk/php/8.3/bin/php -y
Supported Operating Systems:
- โ Ubuntu (18.04, 20.04, 22.04, 24.04)
- โ Debian (9, 10, 11, 12)
- โ CentOS (7, 8, 9)
- โ RHEL (7, 8, 9)
- โ Fedora (35+)
- โ Alpine Linux
- โ macOS (with Homebrew)
What it does:
- Detects your server's operating system
- Downloads WP-CLI from official source
- Tests the download
- Makes it executable
- Installs to system path
- Verifies installation
- Updates your config automatically
3. Auto-Detect WordPress (Optional)
If you don't know your WordPress installation path:
# Find all WordPress installations
praisonaiwp find-wordpress
# Interactive selection from multiple installations
praisonaiwp find-wordpress --interactive
# Find and update config automatically
praisonaiwp find-wordpress --update-config
# Find on different server
praisonaiwp find-wordpress --server staging
Search Strategies:
- Searches for
wp-config.phpin common directories - Checks predefined paths (
/var/www/html,/var/www/vhosts/*/httpdocs, etc.) - Verifies each installation (wp-config, wp-content, wp-includes)
- Extracts WordPress version
- Interactive selection for multiple installations
Example Output:
โ Found 2 WordPress installation(s)
โโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ # โ Path โ Version โ Components โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 1 โ /var/www/html โ 6.4.2 โ config, content, includesโ
โ 2 โ /var/www/vhosts/example.com/httpdocsโ 6.3.1 โ config, content, includesโ
โโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโ
4. Create Posts
# Single post
praisonaiwp create "My Post Title" --content "Post content here"
# From file (auto-detects JSON/YAML/CSV)
praisonaiwp create posts.json
# Create 100 posts (automatically uses parallel mode!)
praisonaiwp create 100_posts.json
5. Update Posts
# Update all occurrences
praisonaiwp update 123 "old text" "new text"
# Update specific line only
praisonaiwp update 123 "old text" "new text" --line 10
# Update 2nd occurrence only
praisonaiwp update 123 "old text" "new text" --nth 2
# Preview changes first
praisonaiwp update 123 "old text" "new text" --preview
6. Find Text
# Find in specific post
praisonaiwp find "search text" 123
# Find across all posts
praisonaiwp find "search text"
# Find in pages
praisonaiwp find "search text" --type page
7. List Posts
# List all posts
praisonaiwp list
# List pages
praisonaiwp list --type page
# List drafts
praisonaiwp list --status draft
File Formats
JSON Format
[
{
"title": "Post Title",
"content": "<p>Post content</p>",
"status": "publish",
"type": "post"
}
]
YAML Format
- title: Post Title
content: <p>Post content</p>
status: publish
type: post
CSV Format
title,content,status,type
"Post Title","<p>Post content</p>",publish,post
Configuration
Configuration is stored in ~/.praisonaiwp/config.yaml:
version: "1.0"
default_server: default
servers:
default:
hostname: example.com
username: user
key_file: ~/.ssh/id_ed25519
port: 22
wp_path: /var/www/html
php_bin: /opt/plesk/php/8.3/bin/php
wp_cli: /usr/local/bin/wp
settings:
auto_backup: true
parallel_threshold: 10
parallel_workers: 10
ssh_timeout: 30
log_level: INFO
Advanced Usage
Line-Specific Replacement
When the same text appears multiple times but you only want to replace it at a specific line:
# Replace only at line 10
praisonaiwp update 123 "Welcome" "Peterborough Church" --line 10
Occurrence-Specific Replacement
Replace only the 1st, 2nd, or nth occurrence:
# Replace only the 2nd occurrence
praisonaiwp update 123 "Welcome" "Peterborough Church" --nth 2
Bulk Operations
Create 100 posts in ~8 seconds (vs 50+ seconds sequential):
# Automatically uses parallel mode for files with >10 posts
praisonaiwp create 100_posts.json
Architecture
See ARCHITECTURE.md for detailed technical documentation.
Development
# Clone repository
git clone https://github.com/yourusername/praisonaiwp
cd praisonaiwp
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=praisonaiwp
# Format code
black praisonaiwp/
# Lint
flake8 praisonaiwp/
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
Author
Praison
Links
- GitHub: https://github.com/yourusername/praisonaiwp
- Documentation: https://praisonaiwp.readthedocs.io
- PyPI: https://pypi.org/project/praisonaiwp
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file praisonaiwp-1.0.2.tar.gz.
File metadata
- Download URL: praisonaiwp-1.0.2.tar.gz
- Upload date:
- Size: 61.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56565e1ecd1b602d1da6eb6df69e9c3337a55ea65b7419f3beac1033dc846a2e
|
|
| MD5 |
3bd62b7bf1466cb51c6a1861ddb4a685
|
|
| BLAKE2b-256 |
99825ee536e2aa00aaf3fa6ac7127cf8a920caa3eb1122eb7516ebca7fef6b51
|
File details
Details for the file praisonaiwp-1.0.2-py3-none-any.whl.
File metadata
- Download URL: praisonaiwp-1.0.2-py3-none-any.whl
- Upload date:
- Size: 39.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
706d9d5326e3d2e903502e8d404dfad50d31f869f0565c3b704eeed697b3bab2
|
|
| MD5 |
b4c85e93c53b7472b08195e0097b21bf
|
|
| BLAKE2b-256 |
78bef49970232d3b69caeb3fad49e68ac82942b8a901da61d66e62ea006a0325
|