AI Newsletter Digest improvements: fixed QP soft line break decoding, URL extraction, and content cleaning
This commit is contained in:
252
skills/vibesurf/SKILL.md
Normal file
252
skills/vibesurf/SKILL.md
Normal file
@@ -0,0 +1,252 @@
|
||||
---
|
||||
name: vibesurf
|
||||
description: Use when user asks to browse websites, automate browser tasks, fill forms, extract webpage data, search web information, or interact with external apps. This is the main entry point that delegates to detailed reference guides.
|
||||
homepage: https://github.com/vibesurf-ai/VibeSurf
|
||||
metadata:
|
||||
moltbot:
|
||||
requires:
|
||||
env: ["VIBESURF_ENDPOINT"]
|
||||
primaryEnv: "VIBESURF_ENDPOINT"
|
||||
---
|
||||
|
||||
# VibeSurf - Browser Automation
|
||||
|
||||
Control real browsers through VibeSurf. This skill delegates to detailed reference guides.
|
||||
|
||||
> **🚨 VIBESURF STATUS**
|
||||
>
|
||||
> Check if VibeSurf is running:
|
||||
> ```bash
|
||||
> curl $VIBESURF_ENDPOINT/health
|
||||
> ```
|
||||
> - ✅ **HTTP 200** → Proceed with vibesurf skills
|
||||
> - ❌ **Connection refused** → Ask user to run `vibesurf` (NEVER run it yourself)
|
||||
>
|
||||
> Default endpoint: `http://127.0.0.1:9335`
|
||||
|
||||
## How to Call VibeSurf API
|
||||
|
||||
VibeSurf exposes three core HTTP endpoints:
|
||||
|
||||
### 1. List Available Actions
|
||||
```bash
|
||||
GET $VIBESURF_ENDPOINT/api/tool/search?keyword={optional_keyword}
|
||||
```
|
||||
Returns all available VibeSurf actions.
|
||||
|
||||
### 2. Get Action Parameters
|
||||
```bash
|
||||
GET $VIBESURF_ENDPOINT/api/tool/{action_name}/params
|
||||
```
|
||||
Returns JSON schema for the action's parameters.
|
||||
|
||||
### 3. Execute Action
|
||||
```bash
|
||||
POST $VIBESURF_ENDPOINT/api/tool/execute
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"action_name": "action_name_here",
|
||||
"parameters": {
|
||||
// action-specific parameters
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Workflow:**
|
||||
1. Search for action → Get action name
|
||||
2. Get params schema → See required/optional parameters
|
||||
3. Execute → Call with parameters
|
||||
|
||||
> **⚠️ Parameter Error Handling**
|
||||
>
|
||||
> **ALWAYS** call `GET /api/tool/{action_name}/params` before executing ANY action if you are unsure about parameters.
|
||||
|
||||
---
|
||||
|
||||
## Which Reference to Read
|
||||
|
||||
| Task Type | Read Reference | Action Name |
|
||||
|-----------|----------------|-------------|
|
||||
| AI web search | [references/search.md](references/search.md) | `skill_search` |
|
||||
| Fetch URL content as markdown | [references/fetch.md](references/fetch.md) | `skill_fetch` |
|
||||
| Extract lists/tables | [references/js_code.md](references/js_code.md) | `skill_code` |
|
||||
| Extract page content | [references/crawl.md](references/crawl.md) | `skill_crawl` |
|
||||
| Summarize page | [references/summary.md](references/summary.md) | `skill_summary` |
|
||||
| Stock/financial data | [references/finance.md](references/finance.md) | `skill_finance` |
|
||||
| Trending news | [references/trend.md](references/trend.md) | `skill_trend` |
|
||||
| Screenshot | [references/screenshot.md](references/screenshot.md) | `skill_screenshot` |
|
||||
| Precise browser control | [references/browser.md](references/browser.md) | `browser.*` actions |
|
||||
| Task-oriented automation (sub-agent) | [references/browser-use.md](references/browser-use.md) | `execute_browser_use_agent` |
|
||||
| Social Media Platform APIs | [references/website-api.md](references/website-api.md) | `call_website_api` |
|
||||
| Pre-built workflows | [references/workflows.md](references/workflows.md) | `execute_workflow` |
|
||||
| Gmail/GitHub/Slack | [references/integrations.md](references/integrations.md) | `execute_extra_tool` |
|
||||
| LLM profile settings | [references/config-llm.md](references/config-llm.md) | `/api/config/llm-profiles/*` |
|
||||
| MCP server config | [references/config-mcp.md](references/config-mcp.md) | `/api/config/mcp-profiles/*` |
|
||||
| VibeSurf key/workflows | [references/config-vibesurf.md](references/config-vibesurf.md) | `/api/vibesurf/*` |
|
||||
| Composio key/toolkits | [references/config-composio.md](references/config-composio.md) | `/api/composio/*` |
|
||||
| Schedule workflows | [references/config-schedule.md](references/config-schedule.md) | `/api/schedule/*` |
|
||||
|
||||
---
|
||||
|
||||
## Configuration References
|
||||
|
||||
| Config Task | Reference | When to Use |
|
||||
|-------------|-----------|-------------|
|
||||
| Add/switch LLM | [references/config-llm.md](references/config-llm.md) | Manage AI model profiles (OpenAI, Anthropic, etc.) |
|
||||
| Add MCP server | [references/config-mcp.md](references/config-mcp.md) | Configure MCP integrations for extended tools |
|
||||
| VibeSurf API key | [references/config-vibesurf.md](references/config-vibesurf.md) | Set up API key, import/export workflows |
|
||||
| Enable Gmail/GitHub/etc | [references/config-composio.md](references/config-composio.md) | Configure Composio toolkits and OAuth |
|
||||
| Schedule workflows | [references/config-schedule.md](references/config-schedule.md) | Set up cron-based workflow automation |
|
||||
|
||||
**Note:** After configuring Composio or MCP tools, use them through the [references/integrations.md](references/integrations.md) (see tool naming: `cpo.{toolkit}.{action}` or `mcp.{server}.{action}`).
|
||||
|
||||
---
|
||||
|
||||
## Decision Flow
|
||||
|
||||
```
|
||||
Browser/Web Task
|
||||
│
|
||||
├─ Need to search for information/bug/issue? → Read [references/search.md](references/search.md) [PREFERRED]
|
||||
│ Examples: "Search for solutions to [bug name]", "Find latest info about [topic]"
|
||||
│
|
||||
├─ Need to fetch URL content directly? → Read [references/fetch.md](references/fetch.md)
|
||||
│ Examples: "Fetch content from [URL]", "Get documentation at [URL]", "Read this webpage"
|
||||
│
|
||||
├─ Need to open website? → Read [references/browser.md](references/browser.md)
|
||||
│ Examples: "Open documentation site", "Go to [URL]", "Check this page"
|
||||
│
|
||||
├─ Need to extract data?
|
||||
│ ├─ Lists/tables/repeated items? → Read [references/js_code.md](references/js_code.md)
|
||||
│ └─ Main content? → Read [references/crawl.md](references/crawl.md)
|
||||
│
|
||||
├─ Need summary? → Read [references/summary.md](references/summary.md)
|
||||
│
|
||||
├─ Stock/finance data? → Read [references/finance.md](references/finance.md)
|
||||
│
|
||||
├─ Trending news? → Read [references/trend.md](references/trend.md)
|
||||
│
|
||||
├─ Screenshot? → Read [references/screenshot.md](references/screenshot.md)
|
||||
│
|
||||
├─ Need precise control or step-by-step operations? → Read [references/browser.md](references/browser.md)
|
||||
│ Examples: "Click the button", "Type in the field", "Scroll down"
|
||||
│
|
||||
├─ Complex task-oriented automation? → Read [references/browser-use.md](references/browser-use.md)
|
||||
│ Examples: "Fill out this form", "Extract data from multiple pages"
|
||||
│
|
||||
├─ Platform API (XiaoHongShu/Youtube/etc)? → Read [references/website-api.md](references/website-api.md)
|
||||
│
|
||||
├─ External app (Gmail/Google Calendar/GitHub)? → Read [references/integrations.md](references/integrations.md)
|
||||
│
|
||||
├─ Pre-built workflow? → Read [references/workflows.md](references/workflows.md)
|
||||
│
|
||||
└─ Need to configure LLM/MCP/VibeSurf/Composio/Schedule? → Read config-* references
|
||||
- LLM profiles → [references/config-llm.md](references/config-llm.md)
|
||||
- MCP servers → [references/config-mcp.md](references/config-mcp.md)
|
||||
- VibeSurf key/workflows → [references/config-vibesurf.md](references/config-vibesurf.md)
|
||||
- Composio key/toolkits → [references/config-composio.md](references/config-composio.md)
|
||||
- Schedule workflows → [references/config-schedule.md](references/config-schedule.md)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Goal | Read Reference | Action |
|
||||
|------|----------------|--------|
|
||||
| Search web | [references/search.md](references/search.md) | `skill_search` |
|
||||
| Fetch URL content | [references/fetch.md](references/fetch.md) | `skill_fetch` |
|
||||
| Extract prices/products | [references/js_code.md](references/js_code.md) | `skill_code` |
|
||||
| Get main content | [references/crawl.md](references/crawl.md) | `skill_crawl` |
|
||||
| Summarize page | [references/summary.md](references/summary.md) | `skill_summary` |
|
||||
| Stock data | [references/finance.md](references/finance.md) | `skill_finance` |
|
||||
| Hot topics | [references/trend.md](references/trend.md) | `skill_trend` |
|
||||
| Take screenshot | [references/screenshot.md](references/screenshot.md) | `skill_screenshot` |
|
||||
| Click/navigate/type | [references/browser.md](references/browser.md) | `browser.click`, `browser.navigate`, etc. |
|
||||
| Task-oriented automation | [references/browser-use.md](references/browser-use.md) | `execute_browser_use_agent` |
|
||||
| Social Media Platform APIs | [references/website-api.md](references/website-api.md) | `call_website_api` |
|
||||
| Send email | [references/integrations.md](references/integrations.md) | `execute_extra_tool` |
|
||||
| Run workflow | [references/workflows.md](references/workflows.md) | `execute_workflow` |
|
||||
| Configure LLM profiles | [references/config-llm.md](references/config-llm.md) | `/api/config/llm-profiles/*` |
|
||||
| Configure MCP servers | [references/config-mcp.md](references/config-mcp.md) | `/api/config/mcp-profiles/*` |
|
||||
| Configure VibeSurf key | [references/config-vibesurf.md](references/config-vibesurf.md) | `/api/vibesurf/verify-key` |
|
||||
| Enable Composio toolkits | [references/config-composio.md](references/config-composio.md) | `/api/composio/toolkits` |
|
||||
| Schedule workflows | [references/config-schedule.md](references/config-schedule.md) | `/api/schedule/*` |
|
||||
|
||||
---
|
||||
|
||||
## Common Patterns
|
||||
|
||||
| Request | Read Reference | Action |
|
||||
|---------|----------------|--------|
|
||||
| "Search for X" | [references/search.md](references/search.md) | `skill_search` |
|
||||
| "Fetch content from [URL]" | [references/fetch.md](references/fetch.md) | `skill_fetch` |
|
||||
| "Extract all prices" | [references/js_code.md](references/js_code.md) | `skill_code` |
|
||||
| "Summarize this page" | [references/summary.md](references/summary.md) | `skill_summary` |
|
||||
| "Stock info for AAPL" | [references/finance.md](references/finance.md) | `skill_finance` |
|
||||
| "What's trending" | [references/trend.md](references/trend.md) | `skill_trend` |
|
||||
| "Take a screenshot" | [references/screenshot.md](references/screenshot.md) | `skill_screenshot` |
|
||||
| "Navigate and click" | [references/browser.md](references/browser.md) | `browser.navigate`, `browser.click` |
|
||||
| "Fill out this form" | [references/browser-use.md](references/browser-use.md) or [references/browser.md](references/browser.md) | `execute_browser_use_agent` or manual `browser` |
|
||||
| "Get XiaoHongShu posts" | [references/website-api.md](references/website-api.md) | `call_website_api` |
|
||||
| "Send Gmail" | [references/integrations.md](references/integrations.md) | `execute_extra_tool` |
|
||||
| "Run video download" | [references/workflows.md](references/workflows.md) | `execute_workflow` |
|
||||
| "Configure LLM" | [references/config-llm.md](references/config-llm.md) | `/api/config/llm-profiles` |
|
||||
| "Add MCP server" | [references/config-mcp.md](references/config-mcp.md) | `/api/config/mcp-profiles` |
|
||||
| "Set VibeSurf API key" | [references/config-vibesurf.md](references/config-vibesurf.md) | `/api/vibesurf/verify-key` |
|
||||
| "Enable Gmail/GitHub" | [references/config-composio.md](references/config-composio.md) | `/api/composio/toolkits` |
|
||||
| "Schedule workflow" | [references/config-schedule.md](references/config-schedule.md) | `/api/schedule/*` |
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error | Solution |
|
||||
|-------|----------|
|
||||
| VibeSurf not running | **Check status:** `curl $VIBESURF_ENDPOINT/health`<br>**If not running**: Inform user to run `vibesurf`<br>**NEVER** run the command yourself |
|
||||
| Don't know which reference | Read decision tables above |
|
||||
| Action not found | Call `GET /api/tool/search` to list all actions |
|
||||
| Wrong parameters | Call `GET /api/tool/{action_name}/params` to see schema |
|
||||
| browser-use fails or gets stuck | Fallback to [references/browser.md](references/browser.md): use `get_browser_state` → `browser.{action}` → repeat loop |
|
||||
| LLM/Crawl/Summary errors | **Cause**: No LLM profile configured<br>**Solution**: Read [references/config-llm.md](references/config-llm.md) to add an LLM profile first |
|
||||
| Integration tools empty/not found | **Cause**: Composio/MCP not configured<br>**Solution**: Read [references/config-composio.md](references/config-composio.md) or [references/config-mcp.md](references/config-mcp.md) to enable toolkits first |
|
||||
|
||||
---
|
||||
|
||||
## Getting Browser State
|
||||
|
||||
> **🔍 Check Current Browser State**
|
||||
>
|
||||
> **When user asks about current page content or browser status** (e.g., "What's on the current page?", "What tabs are open?", "What's the browser showing?"), read [references/browser.md](references/browser.md) and use the `get_browser_state` action.
|
||||
>
|
||||
> This is essential when you don't have context about what the user is currently viewing in their browser.
|
||||
|
||||
---
|
||||
|
||||
## browser vs browser-use
|
||||
|
||||
**Both can accomplish the same browser tasks - they're complementary:**
|
||||
|
||||
| Approach | Best For | How It Works |
|
||||
|----------|----------|--------------|
|
||||
| **browser-use** ([references/browser-use.md](references/browser-use.md)) | Complex, long tasks | Task-oriented sub-agent: describe goal + desired output, agent figures out steps |
|
||||
| **browser** ([references/browser.md](references/browser.md)) | Precise control | Step-by-step manual control: explicit actions with full visibility |
|
||||
| **Hybrid** | Best reliability | Try browser-use first, fallback to browser if it fails |
|
||||
|
||||
**Fallback pattern when browser-use fails:**
|
||||
```
|
||||
browser-use fails or gets stuck
|
||||
→ Read references/browser.md
|
||||
→ get_browser_state (inspect page)
|
||||
→ browser.{action} (perform action)
|
||||
→ get_browser_state (verify & plan next)
|
||||
→ repeat until complete
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Resources
|
||||
|
||||
- **GitHub**: https://github.com/vibesurf-ai/VibeSurf
|
||||
- **Reference Docs**: See `references/` folder for detailed guides
|
||||
6
skills/vibesurf/_meta.json
Normal file
6
skills/vibesurf/_meta.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"ownerId": "kn78t5ce0s1shbrf74gcn9xwtn80rw90",
|
||||
"slug": "vibesurf",
|
||||
"version": "0.1.0",
|
||||
"publishedAt": 1770560835300
|
||||
}
|
||||
107
skills/vibesurf/references/browser-use.md
Normal file
107
skills/vibesurf/references/browser-use.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
name: browser-use
|
||||
description: Use when task requires multiple steps, unknown UI, form filling, or parallel automation across multiple tabs. This launches autonomous AI agents that figure out the steps themselves.
|
||||
---
|
||||
|
||||
# Browser-Use Agent - Autonomous Automation
|
||||
|
||||
## Overview
|
||||
|
||||
Launch AI sub-agents that complete multi-step browser tasks autonomously. **Most powerful VibeSurf capability.**
|
||||
|
||||
## When to Use
|
||||
|
||||
**browser-use is a high-level, task-oriented sub-agent approach:**
|
||||
- Complex tasks where you describe the **goal** and desired **output**, let the agent figure out the steps
|
||||
- Long workflows that would require many manual browser operations
|
||||
- Unknown or dynamic UI that needs autonomous exploration
|
||||
- Parallel automation across multiple tabs
|
||||
|
||||
**Note:** browser-use and `browser` skill are complementary, not mutually exclusive. Both can accomplish the same tasks - browser-use is higher-level automation, while `browser` gives you precise control.
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `execute_browser_use_agent` | Execute browser-use agent tasks. Specify tab_id to work on specific tab. Each tab_id must be unique during parallel execution. |
|
||||
|
||||
## How It Works
|
||||
|
||||
Describe the **goal**, agent figures out the **steps**:
|
||||
- Navigate to URLs
|
||||
- Find and interact with elements
|
||||
- Fill forms
|
||||
- Extract data
|
||||
- Return structured results
|
||||
|
||||
## Task-Oriented Thinking
|
||||
|
||||
**Good task descriptions:**
|
||||
- ✅ "Fill out the registration form with these details"
|
||||
- ✅ "Search for Python tutorials and summarize top 3"
|
||||
- ✅ "Go to login page, authenticate, then check dashboard"
|
||||
|
||||
**Bad task descriptions:**
|
||||
- ❌ "Click button" (too vague, use `browser`)
|
||||
- ❌ "Extract prices" (use `js_code` instead)
|
||||
- ❌ "Step 1: navigate, Step 2: click..." (let agent figure it out)
|
||||
|
||||
## Working with Existing Tabs
|
||||
|
||||
> **🎯 Important: tab_id Selection**
|
||||
>
|
||||
> **When user refers to their already-opened pages** (e.g., "the current page", "from my open tabs", "the second tab"):
|
||||
>
|
||||
> 1. **FIRST** call `get_browser_state` to get all open tabs and their IDs
|
||||
> 2. **THEN** use the correct `tab_id` from the response
|
||||
> 3. **NEVER** use `tab_id: null` or omit it - that creates a NEW tab
|
||||
>
|
||||
> **Key distinction:**
|
||||
> - `tab_id: "existing_id"` → Work on user's existing tab
|
||||
> - `tab_id: null` or omitted → Create a brand new tab
|
||||
|
||||
## Parallel Execution
|
||||
|
||||
Provide multiple tasks to run agents in parallel. Each task needs a unique `tab_id` for parallel execution.
|
||||
|
||||
## Best Practices
|
||||
|
||||
| Practice | Why |
|
||||
|----------|-----|
|
||||
| Describe goal, not steps | Agent figures out navigation |
|
||||
| Use parallel for independent tasks | Much faster |
|
||||
| One task per agent | Clear responsibilities |
|
||||
| Unique tab_id per task | Required for parallel execution |
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
| Mistake | Fix |
|
||||
|---------|-----|
|
||||
| Over-specifying steps | Describe goal, let agent figure it out |
|
||||
| Using for single click | Use `browser` instead |
|
||||
| Using for simple extraction | Use `js_code` or `crawl` instead |
|
||||
| Duplicate tab_id in parallel | Each agent needs unique tab_id |
|
||||
|
||||
## Fallback Strategy
|
||||
|
||||
> **🔄 When browser-use Fails or Needs Manual Control**
|
||||
>
|
||||
> If `execute_browser_use_agent` fails, gets stuck, or you need more precise control:
|
||||
>
|
||||
> **Seamlessly fallback to manual `browser` operations:**
|
||||
> 1. `get_browser_state` - Inspect current page state and available elements
|
||||
> 2. `browser.{action}` - Perform specific action (click, input, navigate, etc.)
|
||||
> 3. `get_browser_state` - Verify result and determine next action
|
||||
> 4. Repeat this cycle until task completes
|
||||
>
|
||||
> **This is the recommended recovery pattern** - browser-use and browser are complementary tools.
|
||||
|
||||
## Choosing the Right Approach
|
||||
|
||||
| Approach | Best For | Characteristics |
|
||||
|----------|----------|-----------------|
|
||||
| **browser-use** | Complex, long tasks | Task-oriented, autonomous, describe goal + output |
|
||||
| **browser** | Precise control needed | Step-by-step, explicit actions, full control |
|
||||
| **Hybrid** | Best of both | Start with browser-use, fallback to browser if needed |
|
||||
|
||||
**Principle:** Choose based on task complexity and control needs, not step count. Both can handle multi-step workflows and form filling.
|
||||
130
skills/vibesurf/references/browser.md
Normal file
130
skills/vibesurf/references/browser.md
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
name: browser
|
||||
description: Use when user needs direct browser control like navigating to URLs, clicking elements, typing text, scrolling, switching tabs, taking screenshots, or inspecting page state.
|
||||
---
|
||||
|
||||
# Browser - Direct Browser Control
|
||||
|
||||
## Overview
|
||||
|
||||
Direct control of browser interactions. Use for simple, single actions.
|
||||
|
||||
## When to Use
|
||||
|
||||
**browser provides low-level, precise control over browser operations:**
|
||||
- When you need explicit control over each action
|
||||
- When you want to verify results at each step
|
||||
- As a fallback when `browser-use` agent fails or gets stuck
|
||||
- Any browser automation task (navigation, clicking, form filling, etc.)
|
||||
|
||||
**Note:** browser and `browser-use` are complementary. Both can accomplish the same tasks - browser gives precise step-by-step control, while browser-use provides high-level task automation.
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `get_browser_state` | Get current browser state including tabs, DOM content, and highlighted screenshot |
|
||||
| `browser.get_element_info` | Get element details by index (xpath, position, attributes, visibility) |
|
||||
| `browser.search` | Google search |
|
||||
| `browser.navigate` | Navigate to URL |
|
||||
| `browser.go_back` | Go back |
|
||||
| `browser.wait` | Wait for condition |
|
||||
| `browser.click` | Click element |
|
||||
| `browser.input` | Input text into field |
|
||||
| `browser.switch` | Switch to another tab by tab_id |
|
||||
| `browser.close` | Close a tab by tab_id |
|
||||
| `browser.extract` | LLM extracts structured data from page markdown |
|
||||
| `browser.scroll` | Scroll page |
|
||||
| `browser.send_keys` | Send keyboard keys |
|
||||
| `browser.find_text` | Scroll to and find text |
|
||||
| `browser.dropdown_options` | Get dropdown options |
|
||||
| `browser.select_dropdown` | Select dropdown option |
|
||||
| `browser.evaluate` | Execute JavaScript in browser |
|
||||
| `browser.hover` | Hover on element |
|
||||
| `browser.download_media` | Download media from URL |
|
||||
| `browser.get_html_content` | Get HTML content and save to file |
|
||||
| `browser.reload_page` | Refresh current page |
|
||||
| `browser.start_console_logging` | Start monitoring console logs (console.log/warn/error) |
|
||||
| `browser.stop_console_logging` | Stop console logging and retrieve all logs |
|
||||
| `browser.start_network_logging` | Start monitoring network traffic (requests/responses) |
|
||||
| `browser.stop_network_logging` | Stop network logging and get HAR file |
|
||||
|
||||
## Key Actions
|
||||
|
||||
### Getting Started
|
||||
- `get_browser_state` - Always call first to see current state
|
||||
|
||||
### Navigation
|
||||
- `browser.navigate` - Go to URL
|
||||
- `browser.go_back` - Go back
|
||||
- `browser.reload_page` - Refresh page
|
||||
|
||||
### Interaction
|
||||
- `browser.click` - Click element
|
||||
- `browser.input` - Type text
|
||||
- `browser.send_keys` - Send keyboard keys
|
||||
- `browser.hover` - Hover on element
|
||||
|
||||
### Data & Info
|
||||
- `browser.get_element_info` - Inspect element details (xpath, position, attributes)
|
||||
- `browser.extract` - LLM extracts structured data from page
|
||||
- `browser.get_html_content` - Get full HTML
|
||||
- `browser.find_text` - Find and scroll to text
|
||||
|
||||
### Tabs
|
||||
- `browser.switch` - Switch to tab by tab_id (last 4 chars of target_id)
|
||||
- `browser.close` - Close tab by tab_id
|
||||
|
||||
### Advanced
|
||||
- `browser.evaluate` - Execute custom JavaScript
|
||||
|
||||
### Debugging & Testing
|
||||
- `browser.start_console_logging` - Start monitoring console logs
|
||||
- `browser.stop_console_logging` - Stop and retrieve console logs (saved to file)
|
||||
- `browser.start_network_logging` - Start monitoring network traffic
|
||||
- `browser.stop_network_logging` - Stop and retrieve network logs as HAR file
|
||||
|
||||
**Use case**: Website testing, local frontend/backend debugging, reverse engineering
|
||||
**Workflow**: Call `start_*` first, perform actions, then call `stop_*` to get logs
|
||||
|
||||
## Relationship with browser-use
|
||||
|
||||
**browser and browser-use are complementary, not exclusive:**
|
||||
- **browser-use**: High-level, task-oriented sub-agent (describe goal, agent figures out steps)
|
||||
- **browser**: Low-level, precise control (explicit step-by-step operations)
|
||||
|
||||
**When to prefer browser-use:**
|
||||
- Complex tasks with long workflows
|
||||
- When describing the goal is easier than specifying steps
|
||||
|
||||
**When to prefer browser:**
|
||||
- Need precise control over each action
|
||||
- Want to verify intermediate results
|
||||
- browser-use failed or got stuck (use as fallback)
|
||||
|
||||
**Best practice:** Try browser-use for complex tasks first, fallback to browser for manual control if needed.
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. Call `get_browser_state` first to see available elements
|
||||
2. Use `browser.get_element_info` to inspect element details (xpath, attributes, etc.)
|
||||
3. Use element indices/IDs from browser state
|
||||
4. Tab IDs are last 4 characters of target_id
|
||||
5. Use `browser.extract` for LLM-based extraction from page markdown
|
||||
6. Use `browser.evaluate` for custom JavaScript operations
|
||||
|
||||
## Manual Control Pattern (Fallback from browser-use)
|
||||
|
||||
> **🎯 Iterative Control Loop**
|
||||
>
|
||||
> Use this pattern when browser-use fails or you need precise control:
|
||||
>
|
||||
> ```
|
||||
> 1. get_browser_state → See page state, available elements
|
||||
> 2. browser.{action} → Perform action (click, input, navigate...)
|
||||
> 3. get_browser_state → Verify result, plan next step
|
||||
> 4. Repeat until complete
|
||||
> ```
|
||||
>
|
||||
> **This pattern works for any task** - form filling, navigation, data extraction, etc.
|
||||
> It's the manual alternative to browser-use's autonomous approach.
|
||||
135
skills/vibesurf/references/config-composio.md
Normal file
135
skills/vibesurf/references/config-composio.md
Normal file
@@ -0,0 +1,135 @@
|
||||
---
|
||||
name: config-composio
|
||||
description: Use when user asks to configure Composio API key, enable or disable Composio toolkits (Gmail, GitHub, Slack, etc.), manage app integrations, or authenticate with external services.
|
||||
---
|
||||
|
||||
# Config Composio - Composio Integration Management
|
||||
|
||||
## Overview
|
||||
|
||||
Manage Composio API key and toolkit configurations. Enable/disable app integrations like Gmail, GitHub, Slack, and more.
|
||||
|
||||
## When to Use
|
||||
|
||||
- User needs to set up Composio API key
|
||||
- User wants to enable a toolkit (Gmail, GitHub, Slack, etc.)
|
||||
- User needs to disable a toolkit
|
||||
- User wants to check which toolkits are available
|
||||
- User needs to manage toolkit authentication (OAuth)
|
||||
- User wants to configure toolkit tools selection
|
||||
|
||||
## API Endpoints
|
||||
|
||||
Base path: `$VIBESURF_ENDPOINT/api/composio`
|
||||
|
||||
### API Key Management
|
||||
|
||||
| Action | Method | Endpoint | Description |
|
||||
|--------|--------|----------|-------------|
|
||||
| Check Status | GET | `/api/composio/status` | Get Composio connection status |
|
||||
| Verify Key | POST | `/api/composio/verify-key` | Verify and store API key |
|
||||
|
||||
### Toolkit Management
|
||||
|
||||
| Action | Method | Endpoint | Description |
|
||||
|--------|--------|----------|-------------|
|
||||
| List Toolkits | GET | `/api/composio/toolkits` | Get all available toolkits |
|
||||
| Toggle Toolkit | POST | `/api/composio/toolkit/{slug}/toggle` | Enable/disable toolkit |
|
||||
| Get Tools | GET | `/api/composio/toolkit/{slug}/tools` | Get tools for a toolkit |
|
||||
| Update Tools | POST | `/api/composio/toolkit/{slug}/tools` | Update selected tools |
|
||||
| Connection Status | GET | `/api/composio/toolkit/{slug}/connection-status` | Check OAuth connection |
|
||||
|
||||
## Request Examples
|
||||
|
||||
### Verify API Key
|
||||
```json
|
||||
POST /api/composio/verify-key
|
||||
{
|
||||
"api_key": "your-composio-api-key"
|
||||
}
|
||||
```
|
||||
|
||||
### Enable Toolkit
|
||||
```json
|
||||
POST /api/composio/toolkit/gmail/toggle
|
||||
{
|
||||
"enabled": true,
|
||||
"force_reauth": false
|
||||
}
|
||||
```
|
||||
|
||||
### Disable Toolkit
|
||||
```json
|
||||
POST /api/composio/toolkit/gmail/toggle
|
||||
{
|
||||
"enabled": false
|
||||
}
|
||||
```
|
||||
|
||||
### Update Tool Selection
|
||||
```json
|
||||
POST /api/composio/toolkit/gmail/tools
|
||||
{
|
||||
"selected_tools": {
|
||||
"GMAIL_SEND_EMAIL": true,
|
||||
"GMAIL_FETCH_EMAILS": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Common Toolkits
|
||||
|
||||
| Toolkit | Description |
|
||||
|---------|-------------|
|
||||
| `gmail` | Send and receive emails |
|
||||
| `github` | Repository management, PRs, issues |
|
||||
| `slack` | Send messages, manage channels |
|
||||
| `google_calendar` | Event management |
|
||||
| `google_sheets` | Spreadsheet operations |
|
||||
| `notion` | Page and database management |
|
||||
| `trello` | Card and board management |
|
||||
| `asana` | Task management |
|
||||
| `jira` | Issue tracking |
|
||||
|
||||
## OAuth Flow
|
||||
|
||||
When enabling a toolkit that requires OAuth:
|
||||
|
||||
1. **Enable toolkit** → `POST /api/composio/toolkit/{slug}/toggle` with `enabled: true`
|
||||
2. **Check response** → If `requires_oauth: true`, an `oauth_url` is provided
|
||||
3. **User authenticates** → Open `oauth_url` in browser to complete OAuth
|
||||
4. **Verify connection** → `GET /api/composio/toolkit/{slug}/connection-status`
|
||||
|
||||
## Using Composio Tools
|
||||
|
||||
Once toolkits are enabled, their tools become available through the `integrations` skill:
|
||||
|
||||
```
|
||||
1. List available tools → GET /api/tool/search?keyword=composio
|
||||
2. Execute tool → POST /api/tool/execute
|
||||
{
|
||||
"action_name": "execute_extra_tool",
|
||||
"parameters": {
|
||||
"tool_name": "cpo.{toolkit}.{action}",
|
||||
"tool_arguments": {...}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Tool Naming Convention
|
||||
|
||||
Composio tools follow the pattern: `cpo.{toolkit_slug}.{action_name}`
|
||||
|
||||
Examples:
|
||||
- `cpo.gmail.GMAIL_SEND_EMAIL`
|
||||
- `cpo.github.GITHUB_CREATE_PULL_REQUEST`
|
||||
- `cpo.slack.SLACK_SEND_MESSAGE`
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Check API key status** → `GET /api/composio/status`
|
||||
2. **Set up API key** (if needed) → `POST /api/composio/verify-key`
|
||||
3. **List available toolkits** → `GET /api/composio/toolkits`
|
||||
4. **Enable desired toolkit** → `POST /api/composio/toolkit/{slug}/toggle`
|
||||
5. **Complete OAuth** (if required) → Use provided `oauth_url`
|
||||
6. **Use tools** → Execute via `integrations` skill
|
||||
95
skills/vibesurf/references/config-llm.md
Normal file
95
skills/vibesurf/references/config-llm.md
Normal file
@@ -0,0 +1,95 @@
|
||||
---
|
||||
name: config-llm
|
||||
description: Use when user asks to configure LLM profiles, manage AI model settings, add/update/remove LLM configurations, or switch between different LLM providers like OpenAI, Anthropic, Google, etc.
|
||||
---
|
||||
|
||||
# Config LLM - LLM Profile Management
|
||||
|
||||
## Overview
|
||||
|
||||
Manage LLM (Large Language Model) profiles for VibeSurf. Configure different AI providers, models, and their parameters.
|
||||
|
||||
## When to Use
|
||||
|
||||
- User wants to add a new LLM profile
|
||||
- User needs to switch default LLM
|
||||
- User wants to update LLM settings (temperature, max_tokens, etc.)
|
||||
- User needs to see available LLM providers and models
|
||||
- User wants to list or manage existing LLM profiles
|
||||
|
||||
## API Endpoints
|
||||
|
||||
Base path: `$VIBESURF_ENDPOINT/api/config`
|
||||
|
||||
### Profile Management
|
||||
|
||||
| Action | Method | Endpoint | Description |
|
||||
|--------|--------|----------|-------------|
|
||||
| List Profiles | GET | `/api/config/llm-profiles?active_only=true` | List all LLM profiles |
|
||||
| Get Profile | GET | `/api/config/llm-profiles/{profile_name}` | Get specific profile details |
|
||||
| Create Profile | POST | `/api/config/llm-profiles` | Create new LLM profile |
|
||||
| Update Profile | PUT | `/api/config/llm-profiles/{profile_name}` | Update existing profile |
|
||||
| Set Default | POST | `/api/config/llm-profiles/{profile_name}/set-default` | Set profile as default |
|
||||
| Get Default | GET | `/api/config/llm-profiles/default/current` | Get current default profile |
|
||||
|
||||
### Provider Management
|
||||
|
||||
| Action | Method | Endpoint | Description |
|
||||
|--------|--------|----------|-------------|
|
||||
| List Providers | GET | `/api/config/llm/providers` | Get available LLM providers |
|
||||
| Get Models | GET | `/api/config/llm/providers/{provider_name}/models` | Get models for a provider |
|
||||
|
||||
## Provider Notes
|
||||
|
||||
> **Tip:** Use `GET /api/config/llm/providers` to see all available providers and their supported models.
|
||||
>
|
||||
> **For OpenAI-compatible APIs:** If using a third-party provider that offers OpenAI-compatible endpoints (like local models, DeepSeek, or other proxies), use the `openai_compatible` provider and set the custom `base_url`.
|
||||
|
||||
## Request Examples
|
||||
|
||||
### Create Profile
|
||||
```json
|
||||
POST /api/config/llm-profiles
|
||||
{
|
||||
"profile_name": "my-openai",
|
||||
"provider": "openai",
|
||||
"model": "gpt-4",
|
||||
"api_key": "sk-...",
|
||||
"temperature": 0.7,
|
||||
"max_tokens": 4096,
|
||||
"is_default": false
|
||||
}
|
||||
```
|
||||
|
||||
### Update Profile
|
||||
```json
|
||||
PUT /api/config/llm-profiles/my-openai
|
||||
{
|
||||
"temperature": 0.5,
|
||||
"max_tokens": 2048
|
||||
}
|
||||
```
|
||||
|
||||
## Profile Fields
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| profile_name | string | Yes | Unique profile identifier |
|
||||
| provider | string | Yes | Provider name |
|
||||
| model | string | Yes | Model name |
|
||||
| api_key | string | Yes | API key for the provider |
|
||||
| base_url | string | No | Custom base URL |
|
||||
| temperature | float | No | Sampling temperature (0-2) |
|
||||
| max_tokens | int | No | Maximum tokens to generate |
|
||||
| top_p | float | No | Nucleus sampling |
|
||||
| frequency_penalty | float | No | Frequency penalty (-2 to 2) |
|
||||
| seed | int | No | Random seed |
|
||||
| description | string | No | Profile description |
|
||||
| is_default | bool | No | Set as default profile |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Get available providers** → `GET /api/config/llm/providers`
|
||||
2. **Choose provider and model** → `GET /api/config/llm/providers/{provider}/models`
|
||||
3. **Create profile** → `POST /api/config/llm-profiles`
|
||||
4. **Set as default** (optional) → `POST /api/config/llm-profiles/{name}/set-default`
|
||||
112
skills/vibesurf/references/config-mcp.md
Normal file
112
skills/vibesurf/references/config-mcp.md
Normal file
@@ -0,0 +1,112 @@
|
||||
---
|
||||
name: config-mcp
|
||||
description: Use when user asks to configure MCP (Model Context Protocol) profiles, add MCP servers, manage MCP integrations, or enable/disable MCP tools for extended functionality.
|
||||
---
|
||||
|
||||
# Config MCP - MCP Profile Management
|
||||
|
||||
## Overview
|
||||
|
||||
Manage MCP (Model Context Protocol) profiles for VibeSurf. MCP allows integrating external tools and data sources with the AI.
|
||||
|
||||
## When to Use
|
||||
|
||||
- User wants to add a new MCP server
|
||||
- User needs to configure MCP integrations
|
||||
- User wants to update MCP server parameters
|
||||
- User needs to list or manage existing MCP profiles
|
||||
- User wants to enable/disable MCP tools
|
||||
|
||||
## API Endpoints
|
||||
|
||||
Base path: `$VIBESURF_ENDPOINT/api/config`
|
||||
|
||||
### MCP Profile Management
|
||||
|
||||
| Action | Method | Endpoint | Description |
|
||||
|--------|--------|----------|-------------|
|
||||
| List Profiles | GET | `/api/config/mcp-profiles?active_only=true` | List all MCP profiles |
|
||||
| Get Profile | GET | `/api/config/mcp-profiles/{mcp_id}` | Get specific profile details |
|
||||
| Create Profile | POST | `/api/config/mcp-profiles` | Create new MCP profile |
|
||||
| Update Profile | PUT | `/api/config/mcp-profiles/{mcp_id}` | Update existing profile |
|
||||
|
||||
## Request Examples
|
||||
|
||||
### Create MCP Profile
|
||||
```json
|
||||
POST /api/config/mcp-profiles
|
||||
{
|
||||
"display_name": "My MCP Server",
|
||||
"mcp_server_name": "server-name",
|
||||
"mcp_server_params": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-name"],
|
||||
"env": {
|
||||
"API_KEY": "..."
|
||||
}
|
||||
},
|
||||
"description": "Description of what this MCP server does"
|
||||
}
|
||||
```
|
||||
|
||||
### Update MCP Profile
|
||||
```json
|
||||
PUT /api/config/mcp-profiles/{mcp_id}
|
||||
{
|
||||
"display_name": "Updated Name",
|
||||
"mcp_server_params": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-name"],
|
||||
"env": {
|
||||
"API_KEY": "new-key"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Profile Fields
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| display_name | string | Yes | Human-readable name |
|
||||
| mcp_server_name | string | Yes | MCP server identifier |
|
||||
| mcp_server_params | object | Yes | Server configuration |
|
||||
| description | string | No | Profile description |
|
||||
| is_active | bool | No | Enable/disable profile |
|
||||
|
||||
## MCP Server Params
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| command | string | Command to run (e.g., npx, uvx, docker) |
|
||||
| args | array | Arguments for the command |
|
||||
| env | object | Environment variables |
|
||||
|
||||
## Using MCP Tools
|
||||
|
||||
Once MCP profiles are configured, their tools become available through the `integrations` skill:
|
||||
|
||||
```
|
||||
1. List available tools → GET /api/tool/search?keyword=mcp
|
||||
2. Execute MCP tool → POST /api/tool/execute
|
||||
{
|
||||
"action_name": "execute_extra_tool",
|
||||
"parameters": {
|
||||
"tool_name": "mcp.{server_name}.{tool_name}",
|
||||
"tool_arguments": {...}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Common MCP Servers
|
||||
|
||||
- `@modelcontextprotocol/server-filesystem` - File system access
|
||||
- `@modelcontextprotocol/server-github` - GitHub integration
|
||||
- `@modelcontextprotocol/server-postgres` - PostgreSQL access
|
||||
- `@modelcontextprotocol/server-puppeteer` - Browser automation
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Identify MCP server** → Choose from available MCP servers
|
||||
2. **Create profile** → `POST /api/config/mcp-profiles` with server params
|
||||
3. **Verify tools** → Use `integrations` skill to list and use MCP tools
|
||||
97
skills/vibesurf/references/config-schedule.md
Normal file
97
skills/vibesurf/references/config-schedule.md
Normal file
@@ -0,0 +1,97 @@
|
||||
---
|
||||
name: config-schedule
|
||||
description: Use when user asks to schedule workflows, manage cron jobs for automated workflow execution, enable/disable schedule triggers, or view workflow execution schedules.
|
||||
---
|
||||
|
||||
# Config Schedule - Workflow Schedule Management
|
||||
|
||||
## Overview
|
||||
|
||||
Manage scheduled workflow executions using cron expressions. Schedule workflows to run automatically at specified times.
|
||||
|
||||
## When to Use
|
||||
|
||||
- User wants to schedule a workflow to run automatically
|
||||
- User needs to set up cron-based workflow triggers
|
||||
- User wants to enable/disable existing schedules
|
||||
- User needs to view or update workflow schedules
|
||||
- User wants to see which workflows have schedules configured
|
||||
|
||||
## API Endpoints
|
||||
|
||||
Base path: `$VIBESURF_ENDPOINT/api/schedule`
|
||||
|
||||
### Schedule Management
|
||||
|
||||
| Action | Method | Endpoint | Description |
|
||||
|--------|--------|----------|-------------|
|
||||
| List Schedules | GET | `/api/schedule` | Get all workflow schedules |
|
||||
| Get Schedule | GET | `/api/schedule/{flow_id}` | Get schedule for specific workflow |
|
||||
| Create Schedule | POST | `/api/schedule` | Create new schedule for a workflow |
|
||||
| Update Schedule | PUT | `/api/schedule/{flow_id}` | Update existing schedule |
|
||||
|
||||
## Request Examples
|
||||
|
||||
### Create Schedule
|
||||
```json
|
||||
POST /api/schedule
|
||||
{
|
||||
"flow_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
|
||||
"cron_expression": "0 9 * * 1-5",
|
||||
"is_enabled": true,
|
||||
"description": "Run every weekday at 9 AM"
|
||||
}
|
||||
```
|
||||
|
||||
### Update Schedule
|
||||
```json
|
||||
PUT /api/schedule/{flow_id}
|
||||
{
|
||||
"cron_expression": "0 12 * * *",
|
||||
"is_enabled": true,
|
||||
"description": "Run daily at noon"
|
||||
}
|
||||
```
|
||||
|
||||
### Enable/Disable Schedule
|
||||
```json
|
||||
PUT /api/schedule/{flow_id}
|
||||
{
|
||||
"is_enabled": false
|
||||
}
|
||||
```
|
||||
|
||||
## Schedule Fields
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| flow_id | string | Yes | Workflow/Flow ID to schedule |
|
||||
| cron_expression | string | No | Cron expression (e.g., '0 9 * * 1-5') |
|
||||
| is_enabled | bool | No | Whether the schedule is active |
|
||||
| description | string | No | Description of the schedule |
|
||||
|
||||
## Cron Expression Format
|
||||
|
||||
Standard cron format: `minute hour day_of_month month day_of_week`
|
||||
|
||||
| Expression | Description |
|
||||
|------------|-------------|
|
||||
| `0 9 * * 1-5` | Every weekday at 9:00 AM |
|
||||
| `0 12 * * *` | Every day at 12:00 PM |
|
||||
| `0 */6 * * *` | Every 6 hours |
|
||||
| `0 0 * * 0` | Every Sunday at midnight |
|
||||
| `0 8,20 * * *` | At 8:00 AM and 8:00 PM daily |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Get workflow ID** → From existing workflows or import
|
||||
2. **Create schedule** → `POST /api/schedule` with cron expression
|
||||
3. **Verify schedule** → `GET /api/schedule/{flow_id}` to confirm
|
||||
4. **Update as needed** → `PUT /api/schedule/{flow_id}` to modify
|
||||
|
||||
## Notes
|
||||
|
||||
- Each workflow can only have one schedule
|
||||
- Schedules are automatically reloaded after creation/update
|
||||
- The schedule manager must be running for schedules to execute
|
||||
- `next_execution_at` is automatically calculated from the cron expression
|
||||
79
skills/vibesurf/references/config-vibesurf.md
Normal file
79
skills/vibesurf/references/config-vibesurf.md
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
name: config-vibesurf
|
||||
description: Use when user asks to configure VibeSurf API key, import or export workflows, manage workflow skills, or execute custom workflows.
|
||||
---
|
||||
|
||||
# Config VibeSurf - VibeSurf Configuration
|
||||
|
||||
## Overview
|
||||
|
||||
Manage VibeSurf API key and workflow configurations. Import, export, and execute custom workflows.
|
||||
|
||||
## When to Use
|
||||
|
||||
- User needs to set up VibeSurf API key
|
||||
- User wants to import a workflow from JSON
|
||||
- User needs to export a workflow to JSON
|
||||
|
||||
## API Endpoints
|
||||
|
||||
Base path: `$VIBESURF_ENDPOINT/api/vibesurf`
|
||||
|
||||
### API Key Management
|
||||
|
||||
| Action | Method | Endpoint | Description |
|
||||
|--------|--------|----------|-------------|
|
||||
| Check Status | GET | `/api/vibesurf/status` | Get VibeSurf connection status |
|
||||
| Verify Key | POST | `/api/vibesurf/verify-key` | Verify and store API key |
|
||||
|
||||
### Workflow Management
|
||||
|
||||
| Action | Method | Endpoint | Description |
|
||||
|--------|--------|----------|-------------|
|
||||
| Import Workflow | POST | `/api/vibesurf/import-workflow` | Import workflow from JSON |
|
||||
| Export Workflow | GET | `/api/vibesurf/export-workflow/{flow_id}` | Export workflow to JSON file |
|
||||
|
||||
## Request Examples
|
||||
|
||||
### Verify API Key
|
||||
```json
|
||||
POST /api/vibesurf/verify-key
|
||||
{
|
||||
"api_key": "vs-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
}
|
||||
```
|
||||
|
||||
### Import Workflow
|
||||
```json
|
||||
POST /api/vibesurf/import-workflow
|
||||
{
|
||||
"workflow_json": "{\"name\": \"My Workflow\", \"description\": \"...\", \"data\": {...}}"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## API Key Format
|
||||
|
||||
VibeSurf API keys must:
|
||||
- Start with `vs-`
|
||||
- Be 51 characters total length
|
||||
- Example: `vs-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
|
||||
|
||||
## Workflow Import/Export
|
||||
|
||||
### Import
|
||||
- Accepts Langflow-compatible JSON format
|
||||
- Requires valid VibeSurf API key
|
||||
- Returns `workflow_id` and `edit_url`
|
||||
|
||||
### Export
|
||||
- Exports workflow to JSON file
|
||||
- Removes sensitive data (API keys) automatically
|
||||
- Returns file path to exported JSON
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Check API key status** → `GET /api/vibesurf/status`
|
||||
2. **Set up API key** (if needed) → `POST /api/vibesurf/verify-key`
|
||||
3. **Import workflows** → `POST /api/vibesurf/import-workflow`
|
||||
4. **Export workflows** → `GET /api/vibesurf/export-workflow/{flow_id}`
|
||||
27
skills/vibesurf/references/crawl.md
Normal file
27
skills/vibesurf/references/crawl.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: crawl
|
||||
description: Use when user asks to extract main content, structured data, or specific information from a webpage using LLM-powered crawling.
|
||||
---
|
||||
|
||||
# Crawl - LLM-Powered Page Extraction
|
||||
|
||||
## Overview
|
||||
|
||||
Crawl or scrape a webpage with LLM analysis.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Extract main article content
|
||||
- Get specific information from a page
|
||||
- Parse structured data
|
||||
- Analyze page content
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `skill_crawl` | Crawl or scrape a web page with tab_id |
|
||||
|
||||
## How It Works
|
||||
|
||||
Call VibeSurf API with `skill_crawl` and prompt describing what to extract. Returns LLM-parsed structured data.
|
||||
31
skills/vibesurf/references/fetch.md
Normal file
31
skills/vibesurf/references/fetch.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
name: fetch
|
||||
description: Use when user asks to fetch URL content, read documentation from a URL, get webpage content as markdown, or extract structured content from any web page URL.
|
||||
---
|
||||
|
||||
# Fetch - Get Structured Content from URLs
|
||||
|
||||
## Overview
|
||||
|
||||
Fetch and extract structured markdown content from any URL without opening a browser.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Fetch documentation from a URL
|
||||
- Read webpage content as markdown
|
||||
- Get structured content from any web page
|
||||
- Extract article or blog post content
|
||||
- Parse HTML content into clean markdown format
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `skill_fetch` | Fetch URL and return structured markdown content |
|
||||
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
- For AI-powered web search → use `search` skill instead
|
||||
- For interactive browser control → use `browser` skill instead
|
||||
- For complex data extraction → use `crawl` or `js_code` skill instead
|
||||
32
skills/vibesurf/references/finance.md
Normal file
32
skills/vibesurf/references/finance.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
name: finance
|
||||
description: Use when user asks for stock data, financial information, company details, historical prices, earnings, dividends, or analyst recommendations from Yahoo Finance.
|
||||
---
|
||||
|
||||
# Finance - Stock Data & Financial Information
|
||||
|
||||
## Overview
|
||||
|
||||
Get comprehensive financial data for stocks from Yahoo Finance.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Get stock information
|
||||
- Historical prices
|
||||
- News and earnings
|
||||
- Dividends and analyst recommendations
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `skill_finance` | Retrieve company info, historical prices, news, earnings, dividends, analyst recommendations |
|
||||
|
||||
## Data Available
|
||||
|
||||
- Company information
|
||||
- Historical prices
|
||||
- News
|
||||
- Earnings
|
||||
- Dividends
|
||||
- Analyst recommendations
|
||||
105
skills/vibesurf/references/integrations.md
Normal file
105
skills/vibesurf/references/integrations.md
Normal file
@@ -0,0 +1,105 @@
|
||||
---
|
||||
name: integrations
|
||||
description: Use when user asks to interact with external apps like Gmail, GitHub, Slack, Google Calendar, Notion via Composio or MCP integrations. Direct API is faster than browser automation.
|
||||
---
|
||||
|
||||
# Integrations - External App Automation
|
||||
|
||||
## Overview
|
||||
|
||||
Direct API access to 100+ external apps via Composio and MCP integrations.
|
||||
|
||||
## When to Use
|
||||
|
||||
- User needs Gmail, GitHub, Slack, etc.
|
||||
- Service has Composio/MCP support
|
||||
- Want faster, more reliable than browser automation
|
||||
|
||||
**Why use over browser?**
|
||||
- Direct API = 10-100x faster
|
||||
- More reliable (no UI changes)
|
||||
- Better for bulk operations
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Purpose |
|
||||
|--------|---------|
|
||||
| `get_all_toolkit_types` | See all available apps |
|
||||
| `search_extra_tool` | Find specific app actions |
|
||||
| `get_extra_tool_info` | See action parameters |
|
||||
| `execute_extra_tool` | Run app action |
|
||||
|
||||
## The Pattern
|
||||
|
||||
1. **List** available apps
|
||||
2. **Search** for specific actions
|
||||
3. **Get** parameter schema
|
||||
4. **Execute** with parameters
|
||||
|
||||
## Tool Naming Convention
|
||||
|
||||
```
|
||||
cpo.{service}.{action} # Composio tools
|
||||
mcp.{server}.{action} # MCP tools
|
||||
```
|
||||
|
||||
## Configuration Required
|
||||
|
||||
Before using Composio or MCP tools, you must configure them first:
|
||||
|
||||
| Integration | Configuration Skill | What to Configure |
|
||||
|-------------|---------------------|-------------------|
|
||||
| Composio (Gmail, GitHub, etc.) | `config-composio` | API key + enable toolkits |
|
||||
| MCP servers | `config-mcp` | Add MCP server profiles |
|
||||
|
||||
**Workflow:**
|
||||
1. Configure using appropriate `config-*` skill
|
||||
2. Then use `integrations` skill to execute tools
|
||||
|
||||
For example:
|
||||
1. First: `config-composio` → verify API key + enable `gmail` toolkit
|
||||
2. Then: `integrations` → execute `cpo.gmail.GMAIL_SEND_EMAIL`
|
||||
|
||||
## Common Integrations
|
||||
|
||||
| Service | Common Actions |
|
||||
|---------|----------------|
|
||||
| Gmail | Send, read, organize emails |
|
||||
| GitHub | Create PRs, issues, releases |
|
||||
| Slack | Send messages, manage channels |
|
||||
| Google Calendar | Create events, manage scheduling |
|
||||
| Notion | Create pages, update databases |
|
||||
|
||||
## Best Practices
|
||||
|
||||
| Practice | Why |
|
||||
|----------|-----|
|
||||
| Search before execute | Find exact tool name and parameters |
|
||||
| Use search filters | Reduce noise in results |
|
||||
| Check authentication | Configure credentials in VibeSurf |
|
||||
| Prefer integrations for API tasks | Faster than browser automation |
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error | Solution |
|
||||
|-------|----------|
|
||||
| Tool not found | Use `search_extra_tool` to find correct name |
|
||||
| Auth failed | Configure credentials in VibeSurf |
|
||||
| Invalid params | Use `get_extra_tool_info` to see schema |
|
||||
|
||||
## Integration vs Browser Automation
|
||||
|
||||
| Task | Use Integration | Use Browser |
|
||||
|------|----------------|-------------|
|
||||
| Send Gmail | ✅ Direct API | ❌ Slow |
|
||||
| GitHub PR | ✅ Direct API | ❌ Overkill |
|
||||
| Custom form | ❌ Not supported | ✅ `browser-use` |
|
||||
|
||||
**Rule:** If Composio/MCP supports the app, use integration.
|
||||
|
||||
## Common Toolkit Types
|
||||
|
||||
- `gmail`, `github`, `slack`
|
||||
- `google_calendar`, `google_sheets`
|
||||
- `notion`, `trello`, `asana`, `jira`
|
||||
- Many more available via `get_all_toolkit_types`
|
||||
36
skills/vibesurf/references/js_code.md
Normal file
36
skills/vibesurf/references/js_code.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: js_code
|
||||
description: Use when user asks to extract structured data from a webpage like lists, tables, products, posts, or items with the same structure. This auto-generates JavaScript code and executes it to return parsed results.
|
||||
---
|
||||
|
||||
# JS Code - Structured Data Extraction
|
||||
|
||||
## Overview
|
||||
|
||||
Automatically generates and executes JavaScript to extract structured data from webpages. **Best for extracting multiple items with the same structure.**
|
||||
|
||||
## When to Use
|
||||
|
||||
- Extract all products/prices from a page
|
||||
- Get all posts/articles/listings
|
||||
- Pull table data
|
||||
- Extract repeated elements with same structure
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `skill_code` | Generate and execute JavaScript from functional requirements with iterative retry logic |
|
||||
|
||||
## How It Works
|
||||
|
||||
Call VibeSurf API with `skill_code` and a prompt describing what to extract. The system generates optimized JavaScript and returns parsed results.
|
||||
|
||||
## Best For
|
||||
|
||||
| Use Case | Why |
|
||||
|----------|-----|
|
||||
| All product prices | Repeated structure |
|
||||
| All article titles | List extraction |
|
||||
| Table data | Structured parsing |
|
||||
| All links of a type | Pattern matching |
|
||||
23
skills/vibesurf/references/screenshot.md
Normal file
23
skills/vibesurf/references/screenshot.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
name: screenshot
|
||||
description: Use when user asks to take a screenshot of a webpage or capture visual state of the browser.
|
||||
---
|
||||
|
||||
# Screenshot - Page Capture
|
||||
|
||||
## Overview
|
||||
|
||||
Take screenshots of webpages.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Need visual inspection of page
|
||||
- Debugging UI issues
|
||||
- Verifying page state
|
||||
- Capturing layout
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `skill_screenshot` | Take screenshot on a web page with tab_id |
|
||||
27
skills/vibesurf/references/search.md
Normal file
27
skills/vibesurf/references/search.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: search
|
||||
description: Use when user asks to search the web for information, research a topic, find latest news, or get AI-powered search results with summaries.
|
||||
---
|
||||
|
||||
# Search - AI-Powered Web Search
|
||||
|
||||
## Overview
|
||||
|
||||
Advanced search using AI (Gemini) for intelligent results.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Search the web for information
|
||||
- Research a topic
|
||||
- Find latest news/information
|
||||
- Get AI-curated search results
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `skill_search` | Advanced search by using Gemini AI search |
|
||||
|
||||
## How It Works
|
||||
|
||||
Call VibeSurf API with `skill_search` and search query. Returns AI-generated summary with sources.
|
||||
27
skills/vibesurf/references/summary.md
Normal file
27
skills/vibesurf/references/summary.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: summary
|
||||
description: Use when user asks to summarize a webpage's content, get the main points, or understand what a page is about.
|
||||
---
|
||||
|
||||
# Summary - Webpage Summarization
|
||||
|
||||
## Overview
|
||||
|
||||
AI-powered summarization of webpage content.
|
||||
|
||||
## When to Use
|
||||
|
||||
- User asks what a page is about
|
||||
- Need a quick summary of content
|
||||
- Get main points from an article
|
||||
- Understand page purpose
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `skill_summary` | Summarize a web page with tab_id |
|
||||
|
||||
## How It Works
|
||||
|
||||
Call VibeSurf API with `skill_summary` on the current tab. Returns AI-generated summary of the page content.
|
||||
27
skills/vibesurf/references/trend.md
Normal file
27
skills/vibesurf/references/trend.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: trend
|
||||
description: Use when user asks for trending news, real-time news, or hot topics from NewsNow.
|
||||
---
|
||||
|
||||
# Trend - Trending News
|
||||
|
||||
## Overview
|
||||
|
||||
Get trending and real-time news via NewsNow.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Need trending/hot topics
|
||||
- Real-time news updates
|
||||
- Current events
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `skill_trend` | Get trending/real-time news via NewsNow. Leave keywords EMPTY for general hot searches. Only set keywords for specific topics. |
|
||||
|
||||
## Usage Notes
|
||||
|
||||
- Leave keywords EMPTY for general hot searches (avoids over-filtering)
|
||||
- Only set keywords when searching for specific topics
|
||||
36
skills/vibesurf/references/website-api.md
Normal file
36
skills/vibesurf/references/website-api.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: website-api
|
||||
description: Use when user asks to interact with Social media platforms like Xiaohongshu, Weibo, Zhihu, Douyin, or YouTube via their unified APIs.
|
||||
---
|
||||
|
||||
# Website API - Platform APIs
|
||||
|
||||
## Overview
|
||||
|
||||
Unified API handling for specific website platforms.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Interact with Chinese social platforms
|
||||
- Need platform-specific API access
|
||||
- Xiaohongshu, Weibo, Zhihu, Douyin, YouTube
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `get_website_api_params` | Get API parameters and available methods for platforms: "xiaohongshu", "weibo", "zhihu", "douyin", "youtube" |
|
||||
| `call_website_api` | Call website platform API with unified handling |
|
||||
|
||||
## Supported Platforms
|
||||
|
||||
- xiaohongshu (小红书)
|
||||
- weibo (微博)
|
||||
- zhihu (知乎)
|
||||
- douyin (抖音)
|
||||
- youtube
|
||||
|
||||
## Usage Pattern
|
||||
|
||||
1. Get API params for platform
|
||||
2. Call API with parameters
|
||||
83
skills/vibesurf/references/workflows.md
Normal file
83
skills/vibesurf/references/workflows.md
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
name: workflows
|
||||
description: Use when user asks to execute, find, or run pre-built VibeSurf automation workflows like video downloads, auto-login, or data collection templates.
|
||||
---
|
||||
|
||||
# Workflows - Pre-Built Automations
|
||||
|
||||
## Overview
|
||||
|
||||
Execute pre-configured VibeSurf workflows for common automation tasks.
|
||||
|
||||
## When to Use
|
||||
|
||||
- You know a workflow exists for your task
|
||||
- You want reusable automation sequences
|
||||
- Task has a known pattern (video download, auto-login, etc.)
|
||||
|
||||
**Examples:**
|
||||
- Video download workflows
|
||||
- Auto-login sequences
|
||||
- Data collection templates
|
||||
- Social media posting
|
||||
|
||||
## Available Actions
|
||||
|
||||
| Action | Purpose |
|
||||
|--------|---------|
|
||||
| `search_workflows` | Find workflows by keyword |
|
||||
| `get_workflow_params` | See required parameters |
|
||||
| `execute_workflow` | Run with custom values |
|
||||
|
||||
## The Pattern
|
||||
|
||||
1. **Search** for workflow with keyword
|
||||
2. **Check** parameters required
|
||||
3. **Execute** with tweak parameters (custom values)
|
||||
|
||||
## Tweak Parameters
|
||||
|
||||
Workflows have adjustable components called "tweaks". Provide custom values to customize workflow behavior without modifying the workflow itself.
|
||||
|
||||
## Best Practices
|
||||
|
||||
| Practice | Why |
|
||||
|----------|-----|
|
||||
| Search before executing | Confirm workflow exists and see parameters |
|
||||
| Use tweaks for customization | Don't modify workflow directly |
|
||||
| Check results | Returns file paths and detailed output |
|
||||
|
||||
## Common Workflow Types
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| Video Download | Download from YouTube, etc. |
|
||||
| Auto-Login | Authenticate to sites |
|
||||
| Data Collection | Scrape structured data |
|
||||
| Social Post | Post to platforms |
|
||||
|
||||
## Workflow vs Browser-Use
|
||||
|
||||
| Factor | Workflows | Browser-Use |
|
||||
|--------|-----------|-------------|
|
||||
| Reusability | Pre-built, reusable | Custom, one-off |
|
||||
| Setup | None (already exists) | Describe task each time |
|
||||
| Use when | Known pattern exists | Custom automation needed |
|
||||
|
||||
**Decision:** Known pattern → workflows. Unique task → browser-use.
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error | Solution |
|
||||
|-------|----------|
|
||||
| Workflow not found | Use `search_workflows` to find correct ID |
|
||||
| Invalid tweak params | Check `get_workflow_params` for correct IDs |
|
||||
| Execution failed | Verify all required params provided |
|
||||
|
||||
## Finding Workflows
|
||||
|
||||
Common search keywords:
|
||||
- `video download`, `youtube`
|
||||
- `auto login`
|
||||
- `data collection`, `scrape`
|
||||
- `social media`
|
||||
Reference in New Issue
Block a user