Documentation Index
Fetch the complete documentation index at: https://docs.browserbase.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites: Node 18+, PNPM/NPM/Yarn, a Trigger.dev account, and a Browserbase API key.
1. Scaffold a fresh project
mkdir my-trigger-project && cd $_
npm init -y # or pnpm init / yarn init
Add required packages:
npm install @trigger.dev/sdk @trigger.dev/build puppeteer puppeteer-core
If you want TypeScript (recommended):
npm install -D typescript ts-node @types/node
npx tsc --init
2. Create trigger.config.ts
import { defineConfig } from "@trigger.dev/sdk";
import { puppeteer } from "@trigger.dev/build/extensions/puppeteer";
import { aptGet } from "@trigger.dev/build/extensions/core";
export default defineConfig({
project: "your_project_id", // grab from the Trigger dashboard
dirs: ["./src/trigger"],
build: {
extensions: [aptGet({ packages: ["mupdf-tools", "curl"] }), puppeteer()],
},
});
This installs MuPDF + Chrome in the build container so your tasks can run mutool and Puppeteer.
cp .env.example .env.local && $EDITOR .env.local
Fill in:
TRIGGER_SECRET_KEY=tr_dev_***
BROWSERBASE_API_KEY=bb_***
S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com
R2_ACCESS_KEY_ID=
R2_SECRET_ACCESS_KEY=
S3_BUCKET=my-bucket
4. Add your first task src/trigger/puppeteer-log-title.ts
src/trigger/puppeteer-log-title.ts
import { task } from "@trigger.dev/sdk";
import puppeteer from "puppeteer";
export const logTitle = task({
id: "browserbase-title",
run: async () => {
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://connect.browserbase.com?apiKey=${process.env.BROWSERBASE_API_KEY}`,
});
const page = await browser.newPage();
await page.goto("https://example.com");
const title = await page.title();
console.log({ title });
await browser.close();
},
});
You can export multiple tasks from this file or additional files in src/trigger/—Trigger.dev will pick them up automatically.
5. Run locally
Start the Trigger.dev CLI dev server, which watches your task files and connects to the Trigger.dev platform:
You should see the task register in the Trigger.dev dashboard. From there you can test-run the task directly.
6. Deploy
That’s it—your background browser automation now scales automatically in production.
Need something more advanced? Check out:
pdf-to-image.tsx – converts multi-page PDFs to PNG and uploads to Cloudflare R2.
summarize-hn.tsx – extracts Hacker News articles, feeds them to OpenAI, emails a summary.
Happy triggering!