Transform your WordPress site into a conversational interface for users and AI agents using Microsoft's NLWeb Protocol.
- 🔌 NLWeb Protocol Implementation - Standards-compliant REST API endpoint
- 🎯 Frontend Search Shortcode - Natural language search for visitors
- 🤖 AI Agent Ready - Compatible with ChatGPT, Claude, and other AI systems
- 📋 Schema.org Compliant - Structured responses that AI agents understand
- ⚡ High Performance - <500ms response times with caching
- 🎨 Modern UI - Beautiful, responsive search interface
- 🔧 Developer Friendly - Extensive hooks, filters, and customization options
- 🛡️ Security First - Input sanitization, CORS headers, rate limiting
- 📱 Mobile Optimized - Works seamlessly on all devices
Settings and configuration panel
Natural language search interface
Schema.org compliant API responses
-
Install the Plugin
# From WordPress Admin (⚠️ PENDING PLUGIN REVIEW ⚠️) Plugins > Add New > Search "WPNLWeb" > Install > Activate # Or download from WordPress.org (⚠️ PENDING PLUGIN REVIEW ⚠️) wget https://downloads.wordpress.org/plugin/wpnlweb.zip # Download Plugin Zip File Until Approved by Wordpress https://github.com/gigabit-eth/wpnlweb/releases -
Add Search to Any Page
[wpnlweb placeholder="Ask anything about our site..." max_results="5"] -
Configure Settings
- Go to Settings > WPNLWeb in your WordPress admin
- Customize colors, themes, and behavior
- Test the API using the built-in interface
# Query your WordPress site via natural language
curl -X POST https://yoursite.com/wp-json/nlweb/v1/ask \
-H "Content-Type: application/json" \
-d '{"question": "What products do you sell?"}'
- PHP 7.4+
- WordPress 5.0+
- Composer (for development)
- Node.js 18+ (for frontend development)
# Clone the repository
git clone https://github.com/gigabit-eth/wpnlweb.git
cd wpnlweb
# Install PHP dependencies
composer install
# Set up development environment
composer run dev-setup
# Run code quality checks
composer run lint
# PHP Code Standards
composer run lint # Check code standards
composer run lint-fix # Auto-fix code standards
composer run check-syntax # Check PHP syntax
# WordPress Development
wp plugin activate wpnlweb # Activate plugin
wp plugin deactivate wpnlweb # Deactivate plugin
wp plugin uninstall wpnlweb # Uninstall plugin
Endpoint: POST /wp-json/nlweb/v1/ask
{
"question": "What is this website about?",
"context": {
"post_type": ["post", "page"],
"category": "tutorials",
"limit": 10,
"meta_query": {
"featured": "yes"
}
}
}
{
"@context": "https://schema.org",
"@type": "SearchResultsPage",
"query": "What is this website about?",
"totalResults": 3,
"processingTime": "0.245s",
"items": [
{
"@type": "Article",
"@id": "https://yoursite.com/about/",
"name": "About Us",
"description": "Learn about our company mission and values...",
"url": "https://yoursite.com/about/",
"datePublished": "2024-01-15T10:30:00Z",
"dateModified": "2024-01-20T14:15:00Z",
"author": {
"@type": "Person",
"name": "John Doe"
},
"keywords": ["about", "company", "mission"],
"relevanceScore": 0.95
}
]
}
[wpnlweb
placeholder="Custom placeholder text..."
button_text="Search Now"
max_results="10"
show_results="true"
class="my-custom-class"
theme="dark"
show_metadata="true"
]
:root {
--wpnlweb-primary-color: #3b82f6;
--wpnlweb-primary-hover: #2563eb;
--wpnlweb-bg-primary: #ffffff;
--wpnlweb-text-primary: #1f2937;
--wpnlweb-border-radius: 8px;
--wpnlweb-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
// Modify search results
add_filter('wpnlweb_search_results', function($results, $query) {
// Custom logic here
return $results;
}, 10, 2);
// Customize API response
add_filter('wpnlweb_api_response', function($response, $question) {
$response['custom_field'] = 'custom_value';
return $response;
}, 10, 2);
// Add custom post types to search
add_filter('wpnlweb_searchable_post_types', function($post_types) {
$post_types[] = 'product';
$post_types[] = 'event';
return $post_types;
});
// In your theme's functions.php
function custom_wpnlweb_styling() {
wp_add_inline_style('wpnlweb-public', '
.wpnlweb-search-container {
max-width: 800px;
margin: 2rem auto;
}
.wpnlweb-search-form {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 12px;
padding: 2rem;
}
');
}
add_action('wp_enqueue_scripts', 'custom_wpnlweb_styling');
# Run all tests
composer run test
# Run specific test suites
composer run test:unit
composer run test:integration
# Test API endpoints
php debug-api-test.php
- ✅ API Functionality: 100% (26/26 tests)
- ✅ WordPress.org Compliance: 96.8% (61/63 tests)
- ✅ Security: 100% (All vulnerabilities resolved)
- ✅ Performance: Optimized (<500ms response time)
- Input Sanitization: All user inputs sanitized using WordPress functions
- Output Escaping: All outputs properly escaped
- ABSPATH Protection: Direct file access prevention
- Nonce Verification: CSRF protection for admin forms
- Rate Limiting: API endpoint protection
- CORS Headers: Controlled cross-origin access
Please see SECURITY.md for our security policy and how to report vulnerabilities.
// Custom GPT Instructions
You can query WordPress sites with WPNLWeb by sending POST requests to:
https://SITE_URL/wp-json/nlweb/v1/ask
Send questions in this format:
{
"question": "What are your latest blog posts about AI?",
"context": {
"post_type": "post",
"limit": 5
}
}
import requests
def query_wordpress_site(site_url, question):
response = requests.post(
f"{site_url}/wp-json/nlweb/v1/ask",
json={"question": question},
headers={"Content-Type": "application/json"}
)
return response.json()
# Usage
results = query_wordpress_site(
"https://example.com",
"What services do you offer?"
)
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Clone your fork locally
- Create a feature branch: git checkout -b feature/amazing-feature
- Make your changes and add tests
- Run tests: composer run test
- Check code standards: composer run lint
- Commit your changes: git commit -m 'Add amazing feature'
- Push to your fork: git push origin feature/amazing-feature
- Submit a Pull Request
- Follow WordPress PHP Coding Standards
- Write comprehensive PHPDoc comments
- Include unit tests for new functionality
- Ensure all tests pass before submitting PR
- Installation Guide - Detailed installation instructions
- Testing Guide - Comprehensive testing procedures
- API Reference - Complete API documentation
- Hooks Reference - WordPress hooks and filters
- Customization Guide - Theme and styling options
- Advanced search filters and faceting
- Qdrant Vector Embeddings
- Real-time search suggestions
- Search analytics dashboard
- Multi-language support improvements
- Custom AI model integration
- LanceDB, Milvus integration
- Advanced caching mechanisms
- Elasticsearch integration
- GraphQL endpoint support
- Machine learning-powered relevance scoring
- Voice search capabilities
- Advanced AI agent tools
- Enterprise features
This project is licensed under the GPL v2 or later - see the LICENSE.txt file for details.
- Microsoft for the NLWeb Protocol specification
- WordPress Community for coding standards and best practices
- Schema.org for structured data standards
- Contributors who have helped improve this plugin
- Documentation: Official Docs
- WordPress.org: Plugin Support Forum
- GitHub Issues: Report Bugs
- Email: [email protected]