AI Newsletter Digest improvements: fixed QP soft line break decoding, URL extraction, and content cleaning

This commit is contained in:
Krilly
2026-03-04 13:29:22 +00:00
parent 29a98137a7
commit 57dd294675
13706 changed files with 2114953 additions and 237629 deletions

View File

@@ -0,0 +1,114 @@
#!/usr/bin/env python3
"""Example script for using Playwright MCP server with OpenClaw.
This script demonstrates how to programmatically interact with
the Playwright MCP server for browser automation.
"""
import subprocess
import json
import sys
def run_mcp_command(tool_name: str, params: dict) -> dict:
"""Run a single MCP tool command via playwright-mcp.
Note: In real usage with OpenClaw, the MCP server runs continuously
and tools are called via the MCP protocol. This script shows the
conceptual flow.
"""
# Build MCP request
request = {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": tool_name,
"arguments": params
},
"id": 1
}
# In real implementation, this would be sent to running MCP server
# For now, we just print what would happen
print(f"MCP Call: {tool_name}")
print(f"Params: {json.dumps(params, indent=2)}")
return {"status": "example", "tool": tool_name}
def example_navigate_and_click():
"""Example: Navigate to a page and click a button."""
print("=== Example: Navigate and Click ===\n")
# Step 1: Navigate
run_mcp_command("browser_navigate", {
"url": "https://example.com",
"waitUntil": "networkidle"
})
# Step 2: Click element
run_mcp_command("browser_click", {
"selector": "button#submit",
"timeout": 5000
})
# Step 3: Get text to verify
run_mcp_command("browser_get_text", {
"selector": ".result-message"
})
def example_fill_form():
"""Example: Fill and submit a form."""
print("\n=== Example: Fill Form ===\n")
steps = [
("browser_navigate", {"url": "https://example.com/login"}),
("browser_type", {"selector": "#username", "text": "myuser"}),
("browser_type", {"selector": "#password", "text": "mypass"}),
("browser_click", {"selector": "button[type=submit]"}),
]
for tool, params in steps:
run_mcp_command(tool, params)
def example_extract_data():
"""Example: Extract data using JavaScript."""
print("\n=== Example: Extract Data ===\n")
run_mcp_command("browser_navigate", {
"url": "https://example.com/products"
})
# Extract product data
run_mcp_command("browser_evaluate", {
"script": """
() => {
return Array.from(document.querySelectorAll('.product')).map(p => ({
name: p.querySelector('.name')?.textContent,
price: p.querySelector('.price')?.textContent
}));
}
"""
})
def main():
"""Run examples."""
print("Playwright MCP Usage Examples")
print("=" * 50)
print()
print("Note: These are conceptual examples showing MCP tool calls.")
print("In practice, OpenClaw manages the MCP server lifecycle.")
print()
example_navigate_and_click()
example_fill_form()
example_extract_data()
print("\n" + "=" * 50)
print("For actual usage, configure MCP server in OpenClaw config.")
if __name__ == "__main__":
main()