Automate AI chat workflows through browser automation
Project description
PlayPi
Automate AI chat workflows through browser automation.
PlayPi provides simple, high-level functions for automating browser-based AI chat workflows, starting with Google Gemini Deep Research.
Installation
pip install playpi
Or for development:
git clone https://github.com/twardoch/playpi
cd playpi
uv sync
Quick Start
Google Deep Research
import asyncio
from playpi import google_deep_research
async def main():
# Perform deep research on a topic
result = await google_deep_research(
"Analyze the impact of quantum computing on cryptography",
headless=True, # Run browser in background
timeout=600, # 10 minute timeout
verbose=True # Enable detailed logging
)
print(result) # Markdown-formatted research results
asyncio.run(main())
Command Line Interface
# Perform research and save to file
playpi google "What are the latest developments in renewable energy?" --output research.md
# Interactive mode (visible browser)
playpi google "Climate change mitigation strategies" --headless=false --verbose
# Test browser session
playpi test
Prerequisites
Authentication
Before using Google Deep Research, you need to:
- Install Playwright browsers:
playwright install chromium - Login to Google: Open https://gemini.google.com in your browser and sign in
- Browser profiles: PlayPi reuses browser sessions, so you only need to login once
System Requirements
- Python 3.11+
- Chromium browser (installed automatically)
- 2GB+ RAM for browser automation
- Internet connection
Features
- ✅ Google Gemini Deep Research - Automated research with source compilation
- ✅ Session Management - Persistent authentication across multiple queries
- ✅ Cross-Platform - Works on Windows, macOS, and Linux
- ✅ Concurrent Processing - Run up to 3 research tasks simultaneously
- ✅ Rich Output - Clean Markdown formatting with links and structure
- ✅ Error Handling - Graceful handling of timeouts and UI changes
API Reference
google_deep_research(prompt, **options)
Perform Google Gemini Deep Research on a given prompt.
Parameters:
prompt(str): Research query or questionheadless(bool): Run browser in headless mode (default: True)timeout(int): Maximum wait time in seconds (default: 600)verbose(bool): Enable detailed logging (default: False)profile(str): Browser profile name (reserved for future use)
Returns:
str: Research results formatted as Markdown
Raises:
AuthenticationError: Not logged in to Google/GeminiPlayPiTimeoutError: Research exceeded timeout limitProviderError: UI elements not found or changed
Development
Running Tests
# Run all tests
uv run pytest
# Run with coverage
uv run pytest --cov=src/playpi --cov-report=html
# Run specific test categories
uv run pytest tests/test_session.py -v
Code Quality
# Format code
uv run ruff format
# Lint code
uv run ruff check
# Type checking
uv run mypy src/playpi
License
MIT License. See LICENSE for details.
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 playpi-1.0.2.tar.gz.
File metadata
- Download URL: playpi-1.0.2.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebb866307828482e5d2617d4dc29d45e71c81325b296fb2956f6e2f77e863b92
|
|
| MD5 |
4cec0b7f8ec230f7b3b5369a329f00b3
|
|
| BLAKE2b-256 |
96726cf215d296b868b39218f6ad96f79149999e683c32c5560225dd5e75f4c4
|
File details
Details for the file playpi-1.0.2-py3-none-any.whl.
File metadata
- Download URL: playpi-1.0.2-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77d70b56cca0397fd77ede7cf708e6c20cae5270bc151a20cf8eecc4ae92680b
|
|
| MD5 |
4968ac7320ef0189ee8d209bf94c5ca8
|
|
| BLAKE2b-256 |
f5566bc6bf4a7e9dd1d559e260f54629c549809beece4b9fd4cf8f10be685676
|