ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: "Ad-Use (Ad Generator)"
|
||||
description: "Generate Instagram image ads and TikTok video ads from landing pages using browser agents, Google's Nano Banana 🍌, and Veo3."
|
||||
icon: "image"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
<Note>
|
||||
This demo requires browser-use v0.7.6+.
|
||||
</Note>
|
||||
|
||||
<video
|
||||
controls
|
||||
className="w-full aspect-video rounded-xl"
|
||||
src="https://github.com/user-attachments/assets/7fab54a9-b36b-4fba-ab98-a438f2b86b7e">
|
||||
</video>
|
||||
|
||||
## Features
|
||||
|
||||
1. Agent visits your target website
|
||||
2. Captures brand name, tagline, and key selling points
|
||||
3. Takes a clean screenshot for design reference
|
||||
4. Creates scroll-stopping Instagram image ads with 🍌
|
||||
5. Generates viral TikTok video ads with Veo3
|
||||
6. Supports parallel generation of multiple ads
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure the newest version of browser-use is installed (with screenshot functionality):
|
||||
```bash
|
||||
pip install -U browser-use
|
||||
```
|
||||
|
||||
Export your Gemini API key, get it from: [Google AI Studio](https://makersuite.google.com/app/apikey)
|
||||
```
|
||||
export GOOGLE_API_KEY='your-google-api-key-here'
|
||||
```
|
||||
|
||||
Clone the repo and cd into the app folder
|
||||
```bash
|
||||
git clone https://github.com/browser-use/browser-use.git
|
||||
cd browser-use/examples/apps/ad-use
|
||||
```
|
||||
|
||||
## Normal Usage
|
||||
|
||||
```bash
|
||||
# Basic - Generate Instagram image ad (default)
|
||||
python ad_generator.py --url https://www.apple.com/iphone-16-pro/
|
||||
|
||||
# Generate TikTok video ad with Veo3
|
||||
python ad_generator.py --tiktok --url https://www.apple.com/iphone-16-pro/
|
||||
|
||||
# Generate multiple ads in parallel
|
||||
python ad_generator.py --instagram --count 3 --url https://www.apple.com/iphone-16-pro/
|
||||
python ad_generator.py --tiktok --count 2 --url https://www.apple.com/iphone-16-pro/
|
||||
|
||||
# Debug Mode - See the browser in action
|
||||
python ad_generator.py --url https://www.apple.com/iphone-16-pro/ --debug
|
||||
```
|
||||
|
||||
## Command Line Options
|
||||
|
||||
- `--url`: Landing page URL to analyze
|
||||
- `--instagram`: Generate Instagram image ad (default if no flag specified)
|
||||
- `--tiktok`: Generate TikTok video ad using Veo3
|
||||
- `--count N`: Generate N ads in parallel (default: 1)
|
||||
- `--debug`: Show browser window and enable verbose logging
|
||||
|
||||
## Programmatic Usage
|
||||
```python
|
||||
import asyncio
|
||||
from ad_generator import create_ad_from_landing_page
|
||||
|
||||
async def main():
|
||||
results = await create_ad_from_landing_page(
|
||||
url="https://your-landing-page.com",
|
||||
debug=False
|
||||
)
|
||||
print(f"Generated ads: {results}")
|
||||
|
||||
asyncio.run(main())
|
||||
```
|
||||
|
||||
## Output
|
||||
|
||||
Generated ads are saved in the `output/` directory with:
|
||||
- **PNG image files** (ad_timestamp.png) - Instagram ads generated with Gemini 2.5 Flash Image
|
||||
- **MP4 video files** (ad_timestamp.mp4) - TikTok ads generated with Veo3
|
||||
- **Analysis files** (analysis_timestamp.txt) - Browser agent analysis and prompts used
|
||||
- **Landing page screenshots** (landing_page_timestamp.png) - Reference screenshots
|
||||
|
||||
## Source Code
|
||||
|
||||
Full implementation: [https://github.com/browser-use/browser-use/tree/main/examples/apps/ad-use](https://github.com/browser-use/browser-use/tree/main/examples/apps/ad-use)
|
||||
@@ -0,0 +1,124 @@
|
||||
---
|
||||
title: "Msg-Use (WhatsApp Sender)"
|
||||
description: "AI-powered WhatsApp message scheduler using browser agents and Gemini. Schedule personalized messages in natural language."
|
||||
icon: "message"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
<Note>
|
||||
This demo requires browser-use v0.7.7+.
|
||||
</Note>
|
||||
|
||||
<video
|
||||
controls
|
||||
className="w-full aspect-video rounded-xl"
|
||||
src="https://browser-use.github.io/media/demos/msg_use.mp4">
|
||||
</video>
|
||||
|
||||
## Features
|
||||
|
||||
1. Agent logs into WhatsApp Web automatically
|
||||
2. Parses natural language scheduling instructions
|
||||
3. Composes personalized messages using AI
|
||||
4. Schedules messages for future delivery or sends immediately
|
||||
5. Persistent session (no repeated QR scanning)
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure the newest version of browser-use is installed:
|
||||
```bash
|
||||
pip install -U browser-use
|
||||
```
|
||||
|
||||
Export your Gemini API key, get it from: [Google AI Studio](https://makersuite.google.com/app/apikey)
|
||||
```bash
|
||||
export GOOGLE_API_KEY='your-gemini-api-key-here'
|
||||
```
|
||||
|
||||
Clone the repo and cd into the app folder
|
||||
```bash
|
||||
git clone https://github.com/browser-use/browser-use.git
|
||||
cd browser-use/examples/apps/msg-use
|
||||
```
|
||||
|
||||
## Initial Login
|
||||
|
||||
First-time setup requires QR code scanning:
|
||||
```bash
|
||||
python login.py
|
||||
```
|
||||
- Scan QR code when browser opens
|
||||
- Session will be saved for future use
|
||||
|
||||
## Normal Usage
|
||||
|
||||
1. **Edit your schedule** in `messages.txt`:
|
||||
```
|
||||
- Send "Hi" to Magnus on the 13.06 at 18:15
|
||||
- Tell hinge date (Camila) at 20:00 that I miss her
|
||||
- Send happy birthday message to sister on the 15.06
|
||||
- Remind mom to pick up the car next tuesday
|
||||
```
|
||||
|
||||
2. **Test mode** - See what will be sent:
|
||||
```bash
|
||||
python scheduler.py --test
|
||||
```
|
||||
|
||||
3. **Run scheduler**:
|
||||
```bash
|
||||
python scheduler.py
|
||||
|
||||
# Debug Mode - See the browser in action
|
||||
python scheduler.py --debug
|
||||
|
||||
# Auto Mode - Respond to unread messages every ~30 minutes
|
||||
python scheduler.py --auto
|
||||
```
|
||||
|
||||
## Programmatic Usage
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
from scheduler import schedule_messages
|
||||
|
||||
async def main():
|
||||
messages = [
|
||||
"Send hello to John at 15:30",
|
||||
"Remind Sarah about meeting tomorrow at 9am"
|
||||
]
|
||||
await schedule_messages(messages, debug=False)
|
||||
|
||||
asyncio.run(main())
|
||||
```
|
||||
|
||||
## Example Output
|
||||
|
||||
The scheduler processes natural language and outputs structured results:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"contact": "Magnus",
|
||||
"original_message": "Hi",
|
||||
"composed_message": "Hi",
|
||||
"scheduled_time": "2025-06-13 18:15"
|
||||
},
|
||||
{
|
||||
"contact": "Camila",
|
||||
"original_message": "I miss her",
|
||||
"composed_message": "I miss you ❤️",
|
||||
"scheduled_time": "2025-06-14 20:00"
|
||||
},
|
||||
{
|
||||
"contact": "sister",
|
||||
"original_message": "happy birthday message",
|
||||
"composed_message": "Happy birthday! 🎉 Wishing you an amazing day, sis! Hope you have the best birthday ever! ❤️🎂🎈",
|
||||
"scheduled_time": "2025-06-15 09:00"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## Source Code
|
||||
|
||||
Full implementation: [https://github.com/browser-use/browser-use/tree/main/examples/apps/msg-use](https://github.com/browser-use/browser-use/tree/main/examples/apps/msg-use)
|
||||
@@ -0,0 +1,133 @@
|
||||
---
|
||||
title: "News-Use (News Monitor)"
|
||||
description: "Monitor news websites and extract articles with sentiment analysis using browser agents and Google Gemini."
|
||||
icon: "newspaper"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
<Note>
|
||||
This demo requires browser-use v0.7.7+.
|
||||
</Note>
|
||||
|
||||
<video
|
||||
controls
|
||||
className="w-full aspect-video rounded-xl"
|
||||
src="https://browser-use.github.io/media/demos/news_use.mp4">
|
||||
</video>
|
||||
|
||||
## Features
|
||||
|
||||
1. Agent visits any news website automatically
|
||||
2. Finds and clicks the most recent headline article
|
||||
3. Extracts title, URL, posting time, and full content
|
||||
4. Generates short/long summaries with sentiment analysis
|
||||
5. Persistent deduplication across monitoring sessions
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure the newest version of browser-use is installed:
|
||||
```bash
|
||||
pip install -U browser-use
|
||||
```
|
||||
|
||||
Export your Gemini API key, get it from: [Google AI Studio](https://makersuite.google.com/app/apikey)
|
||||
```bash
|
||||
export GOOGLE_API_KEY='your-google-api-key-here'
|
||||
```
|
||||
|
||||
Clone the repo, cd to the app
|
||||
```bash
|
||||
git clone https://github.com/browser-use/browser-use.git
|
||||
cd browser-use/examples/apps/news-use
|
||||
```
|
||||
|
||||
## Usage Examples
|
||||
|
||||
```bash
|
||||
# One-time extraction - Get the latest article and exit
|
||||
python news_monitor.py --once
|
||||
|
||||
# Monitor Bloomberg continuously (default)
|
||||
python news_monitor.py
|
||||
|
||||
# Monitor TechCrunch every 60 seconds
|
||||
python news_monitor.py --url https://techcrunch.com --interval 60
|
||||
|
||||
# Debug mode - See browser in action
|
||||
python news_monitor.py --once --debug
|
||||
```
|
||||
|
||||
## Output Format
|
||||
|
||||
Articles are displayed with timestamp, sentiment emoji, and summary:
|
||||
|
||||
```
|
||||
[2025-09-11 02:49:21] - 🟢 - Klarna's IPO raises $1.4B, benefiting existing investors
|
||||
[2025-09-11 02:54:15] - 🔴 - Tech layoffs continue as major firms cut workforce
|
||||
[2025-09-11 02:59:33] - 🟡 - Federal Reserve maintains interest rates unchanged
|
||||
```
|
||||
|
||||
**Sentiment Indicators:**
|
||||
- 🟢 **Positive** - Good news, growth, success stories
|
||||
- 🟡 **Neutral** - Factual reporting, announcements, updates
|
||||
- 🔴 **Negative** - Challenges, losses, negative events
|
||||
|
||||
## Data Persistence
|
||||
|
||||
All extracted articles are saved to `news_data.json` with complete metadata:
|
||||
|
||||
```json
|
||||
{
|
||||
"hash": "a1b2c3d4...",
|
||||
"pulled_at": "2025-09-11T02:49:21Z",
|
||||
"data": {
|
||||
"title": "Klarna's IPO pops, raising $1.4B",
|
||||
"url": "https://techcrunch.com/2025/09/11/klarna-ipo/",
|
||||
"posting_time": "12:11 PM PDT · September 10, 2025",
|
||||
"short_summary": "Klarna's IPO raises $1.4B, benefiting existing investors like Sequoia.",
|
||||
"long_summary": "Fintech Klarna successfully IPO'd on the NYSE...",
|
||||
"sentiment": "positive"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Programmatic Usage
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
from news_monitor import extract_latest_article
|
||||
|
||||
async def main():
|
||||
# Extract latest article from any news site
|
||||
result = await extract_latest_article(
|
||||
site_url="https://techcrunch.com",
|
||||
debug=False
|
||||
)
|
||||
|
||||
if result["status"] == "success":
|
||||
article = result["data"]
|
||||
print(f"📰 {article['title']}")
|
||||
print(f"😊 Sentiment: {article['sentiment']}")
|
||||
print(f"📝 Summary: {article['short_summary']}")
|
||||
|
||||
asyncio.run(main())
|
||||
```
|
||||
|
||||
## Advanced Configuration
|
||||
|
||||
```python
|
||||
# Custom monitoring with filters
|
||||
async def monitor_with_filters():
|
||||
while True:
|
||||
result = await extract_latest_article("https://bloomberg.com")
|
||||
if result["status"] == "success":
|
||||
article = result["data"]
|
||||
# Only alert on negative market news
|
||||
if article["sentiment"] == "negative" and "market" in article["title"].lower():
|
||||
send_alert(article)
|
||||
await asyncio.sleep(300) # Check every 5 minutes
|
||||
```
|
||||
|
||||
## Source Code
|
||||
|
||||
Full implementation: [https://github.com/browser-use/browser-use/tree/main/examples/apps/news-use](https://github.com/browser-use/browser-use/tree/main/examples/apps/news-use)
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: "Vibetest-Use (Automated QA)"
|
||||
description: "Run multi-agent Browser-Use tests to catch UI bugs, broken links, and accessibility issues before they ship."
|
||||
icon: "bug"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
<Note>
|
||||
Requires **browser-use < v0.5.0** and Playwright Chromium. Currently getting an update to v0.7.6+.
|
||||
</Note>
|
||||
|
||||
<video
|
||||
controls
|
||||
className="w-full aspect-video rounded-xl"
|
||||
src="https://github.com/user-attachments/assets/6450b5b7-10e5-4019-82a4-6d726dbfbe1f">
|
||||
</video>
|
||||
|
||||
## Features
|
||||
|
||||
1. Launches multiple headless (or visible) Browser-Use agents in parallel
|
||||
2. Crawls your site and records screenshots, broken links & a11y issues
|
||||
3. Works on production URLs *and* `localhost` dev servers
|
||||
4. Simple natural-language prompts via MCP in Cursor / Claude Code
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
|
||||
# 1. Clone repo
|
||||
git clone https://github.com/browser-use/vibetest-use.git
|
||||
cd vibetest-use
|
||||
|
||||
# 2. Create & activate env
|
||||
uv venv --python 3.11
|
||||
source .venv/bin/activate
|
||||
|
||||
# 3. Install project
|
||||
uv pip install -e .
|
||||
|
||||
# 4. Install browser runtime once
|
||||
playwright install chromium --with-deps --no-shell
|
||||
```
|
||||
|
||||
### 1) Claude Code
|
||||
|
||||
```bash
|
||||
# Register the MCP server
|
||||
claude mcp add vibetest /full/path/to/vibetest-use/.venv/bin/vibetest-mcp \
|
||||
-e GOOGLE_API_KEY="your_api_key"
|
||||
|
||||
# Inside a Claude chat
|
||||
> /mcp
|
||||
# ⎿ MCP Server Status
|
||||
# • vibetest: connected
|
||||
```
|
||||
|
||||
### 2) Cursor (manual MCP entry)
|
||||
|
||||
1. Open **Settings → MCP**
|
||||
2. Click **Add Server** and paste:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"vibetest": {
|
||||
"command": "/full/path/to/vibetest-use/.venv/bin/vibetest-mcp",
|
||||
"env": {
|
||||
"GOOGLE_API_KEY": "your_api_key"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Basic Prompts
|
||||
```
|
||||
> Vibetest my website with 5 agents: browser-use.com
|
||||
> Run vibetest on localhost:3000
|
||||
> Run a headless vibetest on localhost:4242 with 10 agents
|
||||
```
|
||||
|
||||
### Parameters
|
||||
* **URL** – any `https` or `http` host or `localhost:port`
|
||||
* **Agents** – `3` by default; more agents = deeper coverage
|
||||
* **Headless** – say *headless* to hide the browser, omit to watch it live
|
||||
|
||||
## Requirements
|
||||
|
||||
* Python 3.11+
|
||||
* Google API key (Gemini flash used for analysis)
|
||||
* Cursor / Claude with MCP support
|
||||
|
||||
## Source Code
|
||||
|
||||
Full implementation: [https://github.com/browser-use/vibetest-use](https://github.com/browser-use/vibetest-use)
|
||||
Reference in New Issue
Block a user