aidevops 2.52.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/AGENTS.md +614 -0
- package/.agent/accounts.md +65 -0
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
- package/.agent/aidevops/api-integrations.md +335 -0
- package/.agent/aidevops/architecture.md +510 -0
- package/.agent/aidevops/configs.md +274 -0
- package/.agent/aidevops/docs.md +244 -0
- package/.agent/aidevops/extension.md +311 -0
- package/.agent/aidevops/mcp-integrations.md +340 -0
- package/.agent/aidevops/mcp-troubleshooting.md +162 -0
- package/.agent/aidevops/memory-patterns.md +172 -0
- package/.agent/aidevops/providers.md +217 -0
- package/.agent/aidevops/recommendations.md +321 -0
- package/.agent/aidevops/requirements.md +301 -0
- package/.agent/aidevops/resources.md +214 -0
- package/.agent/aidevops/security-requirements.md +174 -0
- package/.agent/aidevops/security.md +350 -0
- package/.agent/aidevops/service-links.md +400 -0
- package/.agent/aidevops/services.md +357 -0
- package/.agent/aidevops/setup.md +153 -0
- package/.agent/aidevops/troubleshooting.md +389 -0
- package/.agent/aidevops.md +124 -0
- package/.agent/build-plus.md +244 -0
- package/.agent/content/guidelines.md +109 -0
- package/.agent/content.md +87 -0
- package/.agent/health.md +59 -0
- package/.agent/legal.md +59 -0
- package/.agent/loop-state/full-loop.local.md +16 -0
- package/.agent/loop-state/ralph-loop.local.md +10 -0
- package/.agent/marketing.md +440 -0
- package/.agent/memory/README.md +260 -0
- package/.agent/onboarding.md +796 -0
- package/.agent/plan-plus.md +245 -0
- package/.agent/research.md +100 -0
- package/.agent/sales.md +333 -0
- package/.agent/scripts/101domains-helper.sh +701 -0
- package/.agent/scripts/add-missing-returns.sh +140 -0
- package/.agent/scripts/agent-browser-helper.sh +311 -0
- package/.agent/scripts/agno-setup.sh +712 -0
- package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
- package/.agent/scripts/aidevops-update-check.sh +71 -0
- package/.agent/scripts/ampcode-cli.sh +522 -0
- package/.agent/scripts/auto-version-bump.sh +156 -0
- package/.agent/scripts/autogen-helper.sh +512 -0
- package/.agent/scripts/beads-sync-helper.sh +596 -0
- package/.agent/scripts/closte-helper.sh +5 -0
- package/.agent/scripts/cloudron-helper.sh +321 -0
- package/.agent/scripts/codacy-cli-chunked.sh +581 -0
- package/.agent/scripts/codacy-cli.sh +442 -0
- package/.agent/scripts/code-audit-helper.sh +5 -0
- package/.agent/scripts/coderabbit-cli.sh +417 -0
- package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
- package/.agent/scripts/commands/code-simplifier.md +86 -0
- package/.agent/scripts/commands/full-loop.md +246 -0
- package/.agent/scripts/commands/postflight-loop.md +103 -0
- package/.agent/scripts/commands/recall.md +182 -0
- package/.agent/scripts/commands/remember.md +132 -0
- package/.agent/scripts/commands/save-todo.md +175 -0
- package/.agent/scripts/commands/session-review.md +154 -0
- package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
- package/.agent/scripts/context-builder-helper.sh +522 -0
- package/.agent/scripts/coolify-cli-helper.sh +674 -0
- package/.agent/scripts/coolify-helper.sh +380 -0
- package/.agent/scripts/crawl4ai-examples.sh +401 -0
- package/.agent/scripts/crawl4ai-helper.sh +1078 -0
- package/.agent/scripts/crewai-helper.sh +681 -0
- package/.agent/scripts/dev-browser-helper.sh +513 -0
- package/.agent/scripts/dns-helper.sh +396 -0
- package/.agent/scripts/domain-research-helper.sh +917 -0
- package/.agent/scripts/dspy-helper.sh +285 -0
- package/.agent/scripts/dspyground-helper.sh +291 -0
- package/.agent/scripts/eeat-score-helper.sh +1242 -0
- package/.agent/scripts/efficient-return-fix.sh +92 -0
- package/.agent/scripts/extract-opencode-prompts.sh +128 -0
- package/.agent/scripts/find-missing-returns.sh +113 -0
- package/.agent/scripts/fix-auth-headers.sh +104 -0
- package/.agent/scripts/fix-common-strings.sh +254 -0
- package/.agent/scripts/fix-content-type.sh +100 -0
- package/.agent/scripts/fix-error-messages.sh +130 -0
- package/.agent/scripts/fix-misplaced-returns.sh +74 -0
- package/.agent/scripts/fix-remaining-literals.sh +152 -0
- package/.agent/scripts/fix-return-statements.sh +41 -0
- package/.agent/scripts/fix-s131-default-cases.sh +249 -0
- package/.agent/scripts/fix-sc2155-simple.sh +102 -0
- package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
- package/.agent/scripts/fix-string-literals.sh +273 -0
- package/.agent/scripts/full-loop-helper.sh +773 -0
- package/.agent/scripts/generate-opencode-agents.sh +497 -0
- package/.agent/scripts/generate-opencode-commands.sh +1629 -0
- package/.agent/scripts/generate-skills.sh +366 -0
- package/.agent/scripts/git-platforms-helper.sh +640 -0
- package/.agent/scripts/gitea-cli-helper.sh +743 -0
- package/.agent/scripts/github-cli-helper.sh +702 -0
- package/.agent/scripts/gitlab-cli-helper.sh +682 -0
- package/.agent/scripts/gsc-add-user-helper.sh +325 -0
- package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
- package/.agent/scripts/hetzner-helper.sh +485 -0
- package/.agent/scripts/hostinger-helper.sh +229 -0
- package/.agent/scripts/keyword-research-helper.sh +1815 -0
- package/.agent/scripts/langflow-helper.sh +544 -0
- package/.agent/scripts/linkedin-automation.py +241 -0
- package/.agent/scripts/linter-manager.sh +599 -0
- package/.agent/scripts/linters-local.sh +434 -0
- package/.agent/scripts/list-keys-helper.sh +488 -0
- package/.agent/scripts/local-browser-automation.py +339 -0
- package/.agent/scripts/localhost-helper.sh +744 -0
- package/.agent/scripts/loop-common.sh +806 -0
- package/.agent/scripts/mainwp-helper.sh +728 -0
- package/.agent/scripts/markdown-formatter.sh +338 -0
- package/.agent/scripts/markdown-lint-fix.sh +311 -0
- package/.agent/scripts/mass-fix-returns.sh +58 -0
- package/.agent/scripts/mcp-diagnose.sh +167 -0
- package/.agent/scripts/mcp-inspector-helper.sh +449 -0
- package/.agent/scripts/memory-helper.sh +650 -0
- package/.agent/scripts/monitor-code-review.sh +255 -0
- package/.agent/scripts/onboarding-helper.sh +706 -0
- package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
- package/.agent/scripts/opencode-test-helper.sh +213 -0
- package/.agent/scripts/pagespeed-helper.sh +464 -0
- package/.agent/scripts/pandoc-helper.sh +362 -0
- package/.agent/scripts/postflight-check.sh +555 -0
- package/.agent/scripts/pre-commit-hook.sh +259 -0
- package/.agent/scripts/pre-edit-check.sh +169 -0
- package/.agent/scripts/qlty-cli.sh +356 -0
- package/.agent/scripts/quality-cli-manager.sh +525 -0
- package/.agent/scripts/quality-feedback-helper.sh +462 -0
- package/.agent/scripts/quality-fix.sh +263 -0
- package/.agent/scripts/quality-loop-helper.sh +1108 -0
- package/.agent/scripts/ralph-loop-helper.sh +836 -0
- package/.agent/scripts/ralph-upstream-check.sh +341 -0
- package/.agent/scripts/secretlint-helper.sh +847 -0
- package/.agent/scripts/servers-helper.sh +241 -0
- package/.agent/scripts/ses-helper.sh +619 -0
- package/.agent/scripts/session-review-helper.sh +404 -0
- package/.agent/scripts/setup-linters-wizard.sh +379 -0
- package/.agent/scripts/setup-local-api-keys.sh +330 -0
- package/.agent/scripts/setup-mcp-integrations.sh +472 -0
- package/.agent/scripts/shared-constants.sh +246 -0
- package/.agent/scripts/site-crawler-helper.sh +1487 -0
- package/.agent/scripts/snyk-helper.sh +940 -0
- package/.agent/scripts/sonarcloud-autofix.sh +193 -0
- package/.agent/scripts/sonarcloud-cli.sh +191 -0
- package/.agent/scripts/sonarscanner-cli.sh +455 -0
- package/.agent/scripts/spaceship-helper.sh +747 -0
- package/.agent/scripts/stagehand-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-setup.sh +441 -0
- package/.agent/scripts/stagehand-setup.sh +439 -0
- package/.agent/scripts/system-cleanup.sh +340 -0
- package/.agent/scripts/terminal-title-helper.sh +388 -0
- package/.agent/scripts/terminal-title-setup.sh +549 -0
- package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
- package/.agent/scripts/test-stagehand-integration.sh +309 -0
- package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
- package/.agent/scripts/todo-ready.sh +263 -0
- package/.agent/scripts/tool-version-check.sh +362 -0
- package/.agent/scripts/toon-helper.sh +469 -0
- package/.agent/scripts/twilio-helper.sh +917 -0
- package/.agent/scripts/updown-helper.sh +279 -0
- package/.agent/scripts/validate-mcp-integrations.sh +250 -0
- package/.agent/scripts/validate-version-consistency.sh +131 -0
- package/.agent/scripts/vaultwarden-helper.sh +597 -0
- package/.agent/scripts/vercel-cli-helper.sh +816 -0
- package/.agent/scripts/verify-mirrors.sh +169 -0
- package/.agent/scripts/version-manager.sh +831 -0
- package/.agent/scripts/webhosting-helper.sh +471 -0
- package/.agent/scripts/webhosting-verify.sh +238 -0
- package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
- package/.agent/scripts/worktree-helper.sh +595 -0
- package/.agent/scripts/worktree-sessions.sh +577 -0
- package/.agent/seo/dataforseo.md +215 -0
- package/.agent/seo/domain-research.md +532 -0
- package/.agent/seo/eeat-score.md +659 -0
- package/.agent/seo/google-search-console.md +366 -0
- package/.agent/seo/gsc-sitemaps.md +282 -0
- package/.agent/seo/keyword-research.md +521 -0
- package/.agent/seo/serper.md +278 -0
- package/.agent/seo/site-crawler.md +387 -0
- package/.agent/seo.md +236 -0
- package/.agent/services/accounting/quickfile.md +159 -0
- package/.agent/services/communications/telfon.md +470 -0
- package/.agent/services/communications/twilio.md +569 -0
- package/.agent/services/crm/fluentcrm.md +449 -0
- package/.agent/services/email/ses.md +399 -0
- package/.agent/services/hosting/101domains.md +378 -0
- package/.agent/services/hosting/closte.md +177 -0
- package/.agent/services/hosting/cloudflare.md +251 -0
- package/.agent/services/hosting/cloudron.md +478 -0
- package/.agent/services/hosting/dns-providers.md +335 -0
- package/.agent/services/hosting/domain-purchasing.md +344 -0
- package/.agent/services/hosting/hetzner.md +327 -0
- package/.agent/services/hosting/hostinger.md +287 -0
- package/.agent/services/hosting/localhost.md +419 -0
- package/.agent/services/hosting/spaceship.md +353 -0
- package/.agent/services/hosting/webhosting.md +330 -0
- package/.agent/social-media.md +69 -0
- package/.agent/templates/plans-template.md +114 -0
- package/.agent/templates/prd-template.md +129 -0
- package/.agent/templates/tasks-template.md +108 -0
- package/.agent/templates/todo-template.md +89 -0
- package/.agent/tools/ai-assistants/agno.md +471 -0
- package/.agent/tools/ai-assistants/capsolver.md +326 -0
- package/.agent/tools/ai-assistants/configuration.md +221 -0
- package/.agent/tools/ai-assistants/overview.md +209 -0
- package/.agent/tools/ai-assistants/status.md +171 -0
- package/.agent/tools/ai-assistants/windsurf.md +193 -0
- package/.agent/tools/ai-orchestration/autogen.md +406 -0
- package/.agent/tools/ai-orchestration/crewai.md +445 -0
- package/.agent/tools/ai-orchestration/langflow.md +405 -0
- package/.agent/tools/ai-orchestration/openprose.md +487 -0
- package/.agent/tools/ai-orchestration/overview.md +362 -0
- package/.agent/tools/ai-orchestration/packaging.md +647 -0
- package/.agent/tools/browser/agent-browser.md +464 -0
- package/.agent/tools/browser/browser-automation.md +400 -0
- package/.agent/tools/browser/chrome-devtools.md +282 -0
- package/.agent/tools/browser/crawl4ai-integration.md +422 -0
- package/.agent/tools/browser/crawl4ai-resources.md +277 -0
- package/.agent/tools/browser/crawl4ai-usage.md +416 -0
- package/.agent/tools/browser/crawl4ai.md +585 -0
- package/.agent/tools/browser/dev-browser.md +341 -0
- package/.agent/tools/browser/pagespeed.md +260 -0
- package/.agent/tools/browser/playwright.md +266 -0
- package/.agent/tools/browser/playwriter.md +310 -0
- package/.agent/tools/browser/stagehand-examples.md +456 -0
- package/.agent/tools/browser/stagehand-python.md +483 -0
- package/.agent/tools/browser/stagehand.md +421 -0
- package/.agent/tools/build-agent/agent-review.md +224 -0
- package/.agent/tools/build-agent/build-agent.md +784 -0
- package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
- package/.agent/tools/build-mcp/api-wrapper.md +445 -0
- package/.agent/tools/build-mcp/build-mcp.md +240 -0
- package/.agent/tools/build-mcp/deployment.md +401 -0
- package/.agent/tools/build-mcp/server-patterns.md +632 -0
- package/.agent/tools/build-mcp/transports.md +366 -0
- package/.agent/tools/code-review/auditing.md +383 -0
- package/.agent/tools/code-review/automation.md +219 -0
- package/.agent/tools/code-review/best-practices.md +203 -0
- package/.agent/tools/code-review/codacy.md +151 -0
- package/.agent/tools/code-review/code-simplifier.md +174 -0
- package/.agent/tools/code-review/code-standards.md +309 -0
- package/.agent/tools/code-review/coderabbit.md +101 -0
- package/.agent/tools/code-review/management.md +155 -0
- package/.agent/tools/code-review/qlty.md +248 -0
- package/.agent/tools/code-review/secretlint.md +565 -0
- package/.agent/tools/code-review/setup.md +250 -0
- package/.agent/tools/code-review/snyk.md +563 -0
- package/.agent/tools/code-review/tools.md +230 -0
- package/.agent/tools/content/summarize.md +353 -0
- package/.agent/tools/context/augment-context-engine.md +468 -0
- package/.agent/tools/context/context-builder-agent.md +76 -0
- package/.agent/tools/context/context-builder.md +375 -0
- package/.agent/tools/context/context7.md +371 -0
- package/.agent/tools/context/dspy.md +302 -0
- package/.agent/tools/context/dspyground.md +374 -0
- package/.agent/tools/context/llm-tldr.md +219 -0
- package/.agent/tools/context/osgrep.md +488 -0
- package/.agent/tools/context/prompt-optimization.md +338 -0
- package/.agent/tools/context/toon.md +292 -0
- package/.agent/tools/conversion/pandoc.md +304 -0
- package/.agent/tools/credentials/api-key-management.md +154 -0
- package/.agent/tools/credentials/api-key-setup.md +224 -0
- package/.agent/tools/credentials/environment-variables.md +180 -0
- package/.agent/tools/credentials/vaultwarden.md +382 -0
- package/.agent/tools/data-extraction/outscraper.md +974 -0
- package/.agent/tools/deployment/coolify-cli.md +388 -0
- package/.agent/tools/deployment/coolify-setup.md +353 -0
- package/.agent/tools/deployment/coolify.md +345 -0
- package/.agent/tools/deployment/vercel.md +390 -0
- package/.agent/tools/git/authentication.md +132 -0
- package/.agent/tools/git/gitea-cli.md +193 -0
- package/.agent/tools/git/github-actions.md +207 -0
- package/.agent/tools/git/github-cli.md +223 -0
- package/.agent/tools/git/gitlab-cli.md +190 -0
- package/.agent/tools/git/opencode-github-security.md +350 -0
- package/.agent/tools/git/opencode-github.md +328 -0
- package/.agent/tools/git/opencode-gitlab.md +252 -0
- package/.agent/tools/git/security.md +196 -0
- package/.agent/tools/git.md +207 -0
- package/.agent/tools/opencode/oh-my-opencode.md +375 -0
- package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
- package/.agent/tools/opencode/opencode.md +651 -0
- package/.agent/tools/social-media/bird.md +437 -0
- package/.agent/tools/task-management/beads.md +336 -0
- package/.agent/tools/terminal/terminal-title.md +251 -0
- package/.agent/tools/ui/shadcn.md +196 -0
- package/.agent/tools/ui/ui-skills.md +115 -0
- package/.agent/tools/wordpress/localwp.md +311 -0
- package/.agent/tools/wordpress/mainwp.md +391 -0
- package/.agent/tools/wordpress/scf.md +527 -0
- package/.agent/tools/wordpress/wp-admin.md +729 -0
- package/.agent/tools/wordpress/wp-dev.md +940 -0
- package/.agent/tools/wordpress/wp-preferred.md +398 -0
- package/.agent/tools/wordpress.md +95 -0
- package/.agent/workflows/branch/bugfix.md +63 -0
- package/.agent/workflows/branch/chore.md +95 -0
- package/.agent/workflows/branch/experiment.md +115 -0
- package/.agent/workflows/branch/feature.md +59 -0
- package/.agent/workflows/branch/hotfix.md +98 -0
- package/.agent/workflows/branch/refactor.md +92 -0
- package/.agent/workflows/branch/release.md +96 -0
- package/.agent/workflows/branch.md +347 -0
- package/.agent/workflows/bug-fixing.md +267 -0
- package/.agent/workflows/changelog.md +129 -0
- package/.agent/workflows/code-audit-remote.md +279 -0
- package/.agent/workflows/conversation-starter.md +69 -0
- package/.agent/workflows/error-feedback.md +578 -0
- package/.agent/workflows/feature-development.md +355 -0
- package/.agent/workflows/git-workflow.md +702 -0
- package/.agent/workflows/multi-repo-workspace.md +268 -0
- package/.agent/workflows/plans.md +709 -0
- package/.agent/workflows/postflight.md +604 -0
- package/.agent/workflows/pr.md +571 -0
- package/.agent/workflows/preflight.md +278 -0
- package/.agent/workflows/ralph-loop.md +773 -0
- package/.agent/workflows/release.md +498 -0
- package/.agent/workflows/session-manager.md +254 -0
- package/.agent/workflows/session-review.md +311 -0
- package/.agent/workflows/sql-migrations.md +631 -0
- package/.agent/workflows/version-bump.md +283 -0
- package/.agent/workflows/wiki-update.md +333 -0
- package/.agent/workflows/worktree.md +477 -0
- package/LICENSE +21 -0
- package/README.md +1446 -0
- package/VERSION +1 -0
- package/aidevops.sh +1746 -0
- package/bin/aidevops +21 -0
- package/package.json +75 -0
- package/scripts/npm-postinstall.js +60 -0
- package/setup.sh +2366 -0
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Stagehand MCP usage examples and patterns
|
|
3
|
+
mode: subagent
|
|
4
|
+
tools:
|
|
5
|
+
read: true
|
|
6
|
+
write: false
|
|
7
|
+
edit: false
|
|
8
|
+
bash: true
|
|
9
|
+
glob: true
|
|
10
|
+
grep: true
|
|
11
|
+
webfetch: true
|
|
12
|
+
task: true
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Stagehand MCP Usage Examples
|
|
16
|
+
|
|
17
|
+
<!-- AI-CONTEXT-START -->
|
|
18
|
+
|
|
19
|
+
## Quick Reference
|
|
20
|
+
|
|
21
|
+
- Stagehand examples for AI-powered browser automation (JavaScript)
|
|
22
|
+
- Core methods: `act()`, `extract()`, `observe()`, `agent.execute()`
|
|
23
|
+
- Data extraction: Use Zod schemas for structured output
|
|
24
|
+
- Agent mode: `stagehand.agent({ cua: true, model: "..." })`
|
|
25
|
+
- Example categories:
|
|
26
|
+
- E-commerce: Product search, price monitoring, comparison
|
|
27
|
+
- Data collection: News scraping, social media analytics
|
|
28
|
+
- Testing: User journey, accessibility, QA automation
|
|
29
|
+
- Autonomous agents: Job applications, research, reports
|
|
30
|
+
- Error handling: Use try/catch with `stagehand.close()` in finally
|
|
31
|
+
- Rate limiting: Add delays, respect robots.txt
|
|
32
|
+
- Integration: Works with Chrome DevTools, Playwright, Context7 MCPs
|
|
33
|
+
<!-- AI-CONTEXT-END -->
|
|
34
|
+
|
|
35
|
+
## AI-Powered Browser Automation
|
|
36
|
+
|
|
37
|
+
### **Basic Natural Language Automation**
|
|
38
|
+
|
|
39
|
+
```javascript
|
|
40
|
+
// Use Stagehand through MCP for natural language browser control
|
|
41
|
+
import { Stagehand } from "@browserbasehq/stagehand";
|
|
42
|
+
import { z } from "zod";
|
|
43
|
+
|
|
44
|
+
const stagehand = new Stagehand({
|
|
45
|
+
env: "LOCAL",
|
|
46
|
+
verbose: 1,
|
|
47
|
+
headless: false
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
await stagehand.init();
|
|
51
|
+
|
|
52
|
+
// Navigate and interact with natural language
|
|
53
|
+
await stagehand.page.goto("https://example.com");
|
|
54
|
+
await stagehand.act("click the 'Get Started' button");
|
|
55
|
+
await stagehand.act("fill in the email field with test@example.com");
|
|
56
|
+
await stagehand.act("submit the form");
|
|
57
|
+
|
|
58
|
+
await stagehand.close();
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### **Structured Data Extraction**
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
// Extract structured data from web pages
|
|
65
|
+
const productData = await stagehand.extract(
|
|
66
|
+
"extract all product information from this page",
|
|
67
|
+
z.object({
|
|
68
|
+
products: z.array(z.object({
|
|
69
|
+
name: z.string().describe("Product name"),
|
|
70
|
+
price: z.number().describe("Price in USD"),
|
|
71
|
+
rating: z.number().describe("Star rating out of 5"),
|
|
72
|
+
availability: z.string().describe("Stock status"),
|
|
73
|
+
description: z.string().describe("Product description")
|
|
74
|
+
}))
|
|
75
|
+
})
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
console.log("Extracted products:", productData.products);
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 🛒 **E-commerce Automation Examples**
|
|
82
|
+
|
|
83
|
+
### **Product Research Automation**
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
// Automated product comparison across multiple sites
|
|
87
|
+
async function compareProducts(productQuery, sites = ["amazon.com", "ebay.com"]) {
|
|
88
|
+
const results = [];
|
|
89
|
+
|
|
90
|
+
for (const site of sites) {
|
|
91
|
+
await stagehand.page.goto(`https://${site}`);
|
|
92
|
+
await stagehand.act(`search for "${productQuery}"`);
|
|
93
|
+
|
|
94
|
+
const products = await stagehand.extract(
|
|
95
|
+
"extract the first 5 products with prices and ratings",
|
|
96
|
+
z.array(z.object({
|
|
97
|
+
name: z.string(),
|
|
98
|
+
price: z.number(),
|
|
99
|
+
rating: z.number().optional(),
|
|
100
|
+
url: z.string().optional()
|
|
101
|
+
})).max(5)
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
results.push({ site, products });
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Usage
|
|
111
|
+
const comparison = await compareProducts("wireless headphones");
|
|
112
|
+
console.log("Product comparison:", comparison);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### **Price Monitoring**
|
|
116
|
+
|
|
117
|
+
```javascript
|
|
118
|
+
// Monitor product prices and get alerts
|
|
119
|
+
async function monitorPrice(productUrl, targetPrice) {
|
|
120
|
+
await stagehand.page.goto(productUrl);
|
|
121
|
+
|
|
122
|
+
const currentPrice = await stagehand.extract(
|
|
123
|
+
"extract the current product price",
|
|
124
|
+
z.object({
|
|
125
|
+
price: z.number().describe("Current price in USD"),
|
|
126
|
+
currency: z.string().describe("Currency symbol"),
|
|
127
|
+
availability: z.string().describe("Stock status")
|
|
128
|
+
})
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
if (currentPrice.price <= targetPrice) {
|
|
132
|
+
console.log(`🎉 Price alert! Product is now $${currentPrice.price} (target: $${targetPrice})`);
|
|
133
|
+
// Could integrate with notification systems here
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return currentPrice;
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 📊 **Data Collection & Research**
|
|
141
|
+
|
|
142
|
+
### **News Article Scraping**
|
|
143
|
+
|
|
144
|
+
```javascript
|
|
145
|
+
// Collect news articles with AI-powered extraction
|
|
146
|
+
async function scrapeNews(newsUrl, maxArticles = 10) {
|
|
147
|
+
await stagehand.page.goto(newsUrl);
|
|
148
|
+
|
|
149
|
+
// Handle cookie banners automatically
|
|
150
|
+
await stagehand.act("accept cookies if there's a banner");
|
|
151
|
+
|
|
152
|
+
const articles = await stagehand.extract(
|
|
153
|
+
`extract the first ${maxArticles} news articles`,
|
|
154
|
+
z.array(z.object({
|
|
155
|
+
headline: z.string().describe("Article headline"),
|
|
156
|
+
summary: z.string().describe("Article summary or excerpt"),
|
|
157
|
+
author: z.string().optional().describe("Article author"),
|
|
158
|
+
publishDate: z.string().optional().describe("Publication date"),
|
|
159
|
+
category: z.string().optional().describe("Article category"),
|
|
160
|
+
url: z.string().optional().describe("Article URL")
|
|
161
|
+
})).max(maxArticles)
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
return articles;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Usage
|
|
168
|
+
const news = await scrapeNews("https://news.ycombinator.com", 5);
|
|
169
|
+
console.log("Latest tech news:", news);
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### **Social Media Analytics**
|
|
173
|
+
|
|
174
|
+
```javascript
|
|
175
|
+
// Analyze social media engagement (ethical use only)
|
|
176
|
+
async function analyzeSocialMedia(platform, hashtag) {
|
|
177
|
+
await stagehand.page.goto(`https://${platform}.com`);
|
|
178
|
+
|
|
179
|
+
// Navigate to hashtag or search
|
|
180
|
+
await stagehand.act(`search for posts with hashtag ${hashtag}`);
|
|
181
|
+
|
|
182
|
+
const posts = await stagehand.extract(
|
|
183
|
+
"analyze the top posts for engagement metrics",
|
|
184
|
+
z.array(z.object({
|
|
185
|
+
content: z.string().describe("Post content preview"),
|
|
186
|
+
author: z.string().describe("Post author"),
|
|
187
|
+
engagement: z.object({
|
|
188
|
+
likes: z.number().describe("Number of likes"),
|
|
189
|
+
comments: z.number().describe("Number of comments"),
|
|
190
|
+
shares: z.number().describe("Number of shares")
|
|
191
|
+
}),
|
|
192
|
+
timestamp: z.string().describe("Post timestamp")
|
|
193
|
+
})).max(10)
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
return posts;
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## 🧪 **Testing & Quality Assurance**
|
|
201
|
+
|
|
202
|
+
### **Automated User Journey Testing**
|
|
203
|
+
|
|
204
|
+
```javascript
|
|
205
|
+
// Test complete user workflows
|
|
206
|
+
async function testUserJourney(baseUrl) {
|
|
207
|
+
const testResults = [];
|
|
208
|
+
|
|
209
|
+
try {
|
|
210
|
+
// Test registration flow
|
|
211
|
+
await stagehand.page.goto(`${baseUrl}/register`);
|
|
212
|
+
await stagehand.act("fill in the registration form with test data");
|
|
213
|
+
await stagehand.act("submit the registration form");
|
|
214
|
+
|
|
215
|
+
const registrationResult = await stagehand.observe("check if registration was successful");
|
|
216
|
+
testResults.push({ test: "registration", status: "passed", details: registrationResult });
|
|
217
|
+
|
|
218
|
+
// Test login flow
|
|
219
|
+
await stagehand.act("navigate to login page");
|
|
220
|
+
await stagehand.act("login with the test credentials");
|
|
221
|
+
|
|
222
|
+
const loginResult = await stagehand.observe("check if login was successful");
|
|
223
|
+
testResults.push({ test: "login", status: "passed", details: loginResult });
|
|
224
|
+
|
|
225
|
+
// Test main functionality
|
|
226
|
+
await stagehand.act("navigate to the main dashboard");
|
|
227
|
+
const dashboardElements = await stagehand.observe("find all interactive elements on the dashboard");
|
|
228
|
+
testResults.push({ test: "dashboard", status: "passed", elements: dashboardElements });
|
|
229
|
+
|
|
230
|
+
} catch (error) {
|
|
231
|
+
testResults.push({ test: "user_journey", status: "failed", error: error.message });
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return testResults;
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### **Accessibility Testing**
|
|
239
|
+
|
|
240
|
+
```javascript
|
|
241
|
+
// Test website accessibility with AI assistance
|
|
242
|
+
async function testAccessibility(url) {
|
|
243
|
+
await stagehand.page.goto(url);
|
|
244
|
+
|
|
245
|
+
const accessibilityIssues = await stagehand.extract(
|
|
246
|
+
"identify potential accessibility issues on this page",
|
|
247
|
+
z.object({
|
|
248
|
+
issues: z.array(z.object({
|
|
249
|
+
type: z.string().describe("Type of accessibility issue"),
|
|
250
|
+
element: z.string().describe("Affected element"),
|
|
251
|
+
severity: z.enum(["low", "medium", "high"]).describe("Issue severity"),
|
|
252
|
+
suggestion: z.string().describe("Suggested fix")
|
|
253
|
+
})),
|
|
254
|
+
score: z.number().describe("Overall accessibility score out of 100")
|
|
255
|
+
})
|
|
256
|
+
);
|
|
257
|
+
|
|
258
|
+
return accessibilityIssues;
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## 🤖 **Autonomous Agent Examples**
|
|
263
|
+
|
|
264
|
+
### **Job Application Agent**
|
|
265
|
+
|
|
266
|
+
```javascript
|
|
267
|
+
// Autonomous job application workflow
|
|
268
|
+
async function autoApplyJobs(jobSearchUrl, criteria) {
|
|
269
|
+
const agent = stagehand.agent({
|
|
270
|
+
cua: true, // Enable Computer Use Agent
|
|
271
|
+
model: "google/gemini-2.5-computer-use-preview-10-2025"
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
await stagehand.page.goto(jobSearchUrl);
|
|
275
|
+
|
|
276
|
+
// Let the agent handle the entire workflow
|
|
277
|
+
const result = await agent.execute(`
|
|
278
|
+
Search for ${criteria.jobTitle} jobs in ${criteria.location}.
|
|
279
|
+
Filter for ${criteria.experience} experience level.
|
|
280
|
+
Apply to the first 3 suitable positions that match:
|
|
281
|
+
- Salary range: ${criteria.salaryRange}
|
|
282
|
+
- Remote work: ${criteria.remote}
|
|
283
|
+
- Company size: ${criteria.companySize}
|
|
284
|
+
|
|
285
|
+
For each application:
|
|
286
|
+
1. Review the job description
|
|
287
|
+
2. Customize the cover letter
|
|
288
|
+
3. Submit the application
|
|
289
|
+
4. Save the job details for tracking
|
|
290
|
+
`);
|
|
291
|
+
|
|
292
|
+
return result;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// Usage
|
|
296
|
+
const jobCriteria = {
|
|
297
|
+
jobTitle: "Software Engineer",
|
|
298
|
+
location: "San Francisco",
|
|
299
|
+
experience: "mid-level",
|
|
300
|
+
salaryRange: "$120k-180k",
|
|
301
|
+
remote: "hybrid",
|
|
302
|
+
companySize: "startup"
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
const applicationResults = await autoApplyJobs("https://linkedin.com/jobs", jobCriteria);
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### **Research Agent**
|
|
309
|
+
|
|
310
|
+
```javascript
|
|
311
|
+
// Autonomous research and report generation
|
|
312
|
+
async function conductResearch(topic, sources) {
|
|
313
|
+
const agent = stagehand.agent({
|
|
314
|
+
cua: true,
|
|
315
|
+
model: "gpt-4o"
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
const research = await agent.execute(`
|
|
319
|
+
Research the topic: "${topic}"
|
|
320
|
+
|
|
321
|
+
Visit these sources: ${sources.join(", ")}
|
|
322
|
+
|
|
323
|
+
For each source:
|
|
324
|
+
1. Extract key information and statistics
|
|
325
|
+
2. Note the publication date and credibility
|
|
326
|
+
3. Identify supporting evidence and counterarguments
|
|
327
|
+
|
|
328
|
+
Compile a comprehensive research report with:
|
|
329
|
+
- Executive summary
|
|
330
|
+
- Key findings
|
|
331
|
+
- Supporting data
|
|
332
|
+
- Conclusions and recommendations
|
|
333
|
+
- Source citations
|
|
334
|
+
`);
|
|
335
|
+
|
|
336
|
+
return research;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// Usage
|
|
340
|
+
const researchTopic = "Impact of AI on Software Development";
|
|
341
|
+
const sources = [
|
|
342
|
+
"https://stackoverflow.blog",
|
|
343
|
+
"https://github.blog",
|
|
344
|
+
"https://research.google.com"
|
|
345
|
+
];
|
|
346
|
+
|
|
347
|
+
const report = await conductResearch(researchTopic, sources);
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## 🔧 **Integration with AI DevOps Framework**
|
|
351
|
+
|
|
352
|
+
### **Quality Assurance Integration**
|
|
353
|
+
|
|
354
|
+
```javascript
|
|
355
|
+
// Integrate with framework's quality tools
|
|
356
|
+
async function runQualityChecks(websiteUrl) {
|
|
357
|
+
// Use Stagehand for functional testing
|
|
358
|
+
const functionalTests = await testUserJourney(websiteUrl);
|
|
359
|
+
|
|
360
|
+
// Use PageSpeed MCP for performance
|
|
361
|
+
const performanceData = await stagehand.extract(
|
|
362
|
+
"analyze page performance metrics",
|
|
363
|
+
z.object({
|
|
364
|
+
loadTime: z.number(),
|
|
365
|
+
coreWebVitals: z.object({
|
|
366
|
+
lcp: z.number(),
|
|
367
|
+
fid: z.number(),
|
|
368
|
+
cls: z.number()
|
|
369
|
+
})
|
|
370
|
+
})
|
|
371
|
+
);
|
|
372
|
+
|
|
373
|
+
// Combine results
|
|
374
|
+
return {
|
|
375
|
+
functional: functionalTests,
|
|
376
|
+
performance: performanceData,
|
|
377
|
+
timestamp: new Date().toISOString()
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### **MCP Server Integration**
|
|
383
|
+
|
|
384
|
+
```javascript
|
|
385
|
+
// Use Stagehand with other MCP servers
|
|
386
|
+
async function comprehensiveAnalysis(url) {
|
|
387
|
+
// Stagehand for browser automation
|
|
388
|
+
await stagehand.page.goto(url);
|
|
389
|
+
const pageData = await stagehand.extract("extract all page content", z.any());
|
|
390
|
+
|
|
391
|
+
// Chrome DevTools MCP for performance
|
|
392
|
+
// Playwright MCP for cross-browser testing
|
|
393
|
+
// Context7 MCP for documentation lookup
|
|
394
|
+
|
|
395
|
+
return {
|
|
396
|
+
content: pageData,
|
|
397
|
+
url: url,
|
|
398
|
+
analysis: "comprehensive"
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
## 🎯 **Best Practices**
|
|
404
|
+
|
|
405
|
+
### **Error Handling**
|
|
406
|
+
|
|
407
|
+
```javascript
|
|
408
|
+
async function robustAutomation(url) {
|
|
409
|
+
try {
|
|
410
|
+
await stagehand.init();
|
|
411
|
+
await stagehand.page.goto(url);
|
|
412
|
+
|
|
413
|
+
// Use observe to check page state
|
|
414
|
+
const pageState = await stagehand.observe("check if page loaded successfully");
|
|
415
|
+
|
|
416
|
+
if (pageState.includes("error") || pageState.includes("404")) {
|
|
417
|
+
throw new Error("Page failed to load properly");
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// Continue with automation...
|
|
421
|
+
|
|
422
|
+
} catch (error) {
|
|
423
|
+
console.error("Automation failed:", error);
|
|
424
|
+
// Implement retry logic or fallback
|
|
425
|
+
|
|
426
|
+
} finally {
|
|
427
|
+
await stagehand.close();
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### **Rate Limiting & Ethics**
|
|
433
|
+
|
|
434
|
+
```javascript
|
|
435
|
+
// Implement ethical automation practices
|
|
436
|
+
async function ethicalAutomation(urls) {
|
|
437
|
+
for (const url of urls) {
|
|
438
|
+
// Respect robots.txt
|
|
439
|
+
const robotsAllowed = await checkRobotsTxt(url);
|
|
440
|
+
if (!robotsAllowed) {
|
|
441
|
+
console.log(`Skipping ${url} - robots.txt disallows`);
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// Add delays between requests
|
|
446
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
447
|
+
|
|
448
|
+
// Process URL...
|
|
449
|
+
await processUrl(url);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
**🎉 These examples demonstrate the power of combining Stagehand's AI-driven browser automation with the AI DevOps Framework's comprehensive tooling ecosystem!**
|