rtrvr.ai
Browser ExtensionStart in Chrome, on the page you're on.CloudA thousand browsers, on your schedule.RoverThe AI customer engineer for your product.Data & EvalsExpert trajectories for AI labs.
ACCESSAPI + MCPCLI & SDKTemplatesIntegrationsWhatsApp
Use cases
Vibe ScrapingLead EnrichmentWeb MonitoringForm FillingJob ApplicationsSocial MediaAI Web ContextAgentic CheckoutAll use cases
Pricing
BlogLaunches, benchmarks, deep divesDocsExtension, Cloud, API, MCP, CLICase StudiesReal teams, real runsVideosNew runs every weekChangelogWhat just shippedNewslettersProduct releases and real runs
Docs
Log inBook DemoAdd to Chrome
Log in
Menu
Add to ChromeBook a demo
ProductsBrowser ExtensionCloudRoverData & EvalsExploreUse casesPricingResourcesDocs

Opening template…

rtrvr.ai

Make every site
work for you.

Launches first, roadmap early, and the occasional trick we only share by email.

Products

Browser ExtensionCloudRoverData & Evals

Use cases

Vibe ScrapingLead EnrichmentForm FillingWeb MonitoringSocial MediaJob ApplicationsData MigrationAI Web ContextAgentic Checkout

Resources

DocsBlogData for AI LabsCase StudiesVideosNewslettersChangelogPricingAppSumoDemoAffiliate

Company

TeamContactGCP PartnerWhat We BelieveSecurityPrivacyTerms

Developers

APIMCPCLI & SDKTemplatesIntegrationsWhatsApp

Compare

ApifyBardeenBrowserbaseBrowser UseClayClaudeCometFirecrawl
Products
Browser ExtensionCloudRoverData & Evals
Use cases
Vibe ScrapingLead EnrichmentForm FillingWeb MonitoringSocial MediaJob ApplicationsData MigrationAI Web ContextAgentic Checkout
Resources
DocsBlogData for AI LabsCase StudiesVideosNewslettersChangelogPricingAppSumoDemoAffiliate
Company
TeamContactGCP PartnerWhat We BelieveSecurityPrivacyTerms
Developers
APIMCPCLI & SDKTemplatesIntegrationsWhatsApp
Compare
ApifyBardeenBrowserbaseBrowser UseClayClaudeCometFirecrawl
BACKED BYNVIDIA InceptionGoogle Cloud for StartupsBright DataNEC XSalesforce LaunchpadElevenLabs GrantsGMI CloudComposioSmallest.ai Grants
DISCOVERYllms.txtllms-full.txtagents.mdDocumentation indexSitemapOpenAPIAI Catalog
© 2026 rtrvr.ai
DiscordYouTubeInstagramTikTokLinkedInXGitHub
support@rtrvr.ai
Back to templates

RUN FROM A SPREADSHEET TEMPLATE

Engage with profiles from a spreadsheet

Visit each profile in a Google Sheet and engage with its recent posts.

RUNS INYour signed-in browser
SETUPOne target or a Google Sheet
WHAT YOU GET03 PARTS
  1. 01Recent posts reviewed for each profile
  2. 02Relevant like or comment action
  3. 03Status for each Sheet row
EXAMPLE INPUTEngage with 100 prospect profiles

SET UP YOUR RUN

Add the details. Check the result. Run it.

No code needed.
01

Choose your starting list

Run once for one target, or repeat it for every row in a Google Sheet.

Google Sheet

Choose the Sheet with one target per row.

EXPECTED COLUMNSprofile_url, name (optional), context (optional)

No sheet selected. Choose one from Google Drive.

Sign in to choose a Sheet

Your run stays disabled until the Sheet is connected.

02

Tell rtrvr what to use

Required details are marked. The example text shows the expected format.

Describe the point or perspective each comment should use.

03

Choose where it runs

Cloud uses a fresh managed browser. The extension uses the sites you are already signed into.

Your browser is required. This template needs a site where you are signed in.

Choose a browser

Pick a browser where the rtrvr extension is online.

Get the extension
Finish setup in your browser
  1. Install the extension
  2. Sign in to rtrvr
  3. Come back and choose the browser
ONE MORE STEP

Add the required details to continue.

WHAT HAPPENS NEXT

From setup to finished result.

  1. 01

    rtrvr opens the right sites. It uses Cloud or the signed-in browser you chose.

  2. 02

    The browser does the job. You can follow the run and step in if a site asks for help.

  3. 03

    You get the result. The output above is the shape to expect.

ADVANCEDRequest JSONOptional

Exact request sent to the run panel.

REQUEST.JSON
{
  "source": "retrieve",
  "template": {
    "id": "bulk_profile_engager",
    "slug": "bulk-profile-engager",
    "name": "Bulk Profile Engager",
    "categoryId": "SOCIAL_SCALE"
  },
  "inputs": {
    "sheetUrl": "",
    "platform": "linkedin",
    "engagementType": "like_comment",
    "commentStyle": "thoughtful",
    "commentAngle": "",
    "postsPerProfile": 2,
    "__inputSource": "sheet"
  },
  "agentHint": "You are engaging with multiple profiles systematically. Adapt to the platform UI.\n\n**TASK CONFIGURATION:**\n- Sheet URL: \n- Platform: linkedin\n- Engagement Type: like_comment\n- Comment Style: thoughtful\n- Comment Angle: \n- Posts Per Profile: 2\n\n---\n\n## STEP 1: LOAD SHEET DATA\n\n1. Navigate to \n2. Read all rows\n3. **Expected columns:**\n   - profile_url (REQUIRED)\n   - name (optional - helps personalization)\n   - context (optional - extra info for comments)\n4. Count valid rows\n\n---\n\n## PLATFORM CHARACTER LIMITS FOR COMMENTS\n\n| Platform  | Comment Limit | Notes                   |\n|-----------|---------------|-------------------------|\n| LinkedIn  | ~1,250 chars  | Soft limit              |\n| X/Twitter | 280 chars     | **STRICT LIMIT**        |\n| Instagram | ~2,200 chars  | May vary                |\n\n---\n\n## STEP 2: PROCESS EACH PROFILE\n\nFor each profile_url:\n\n### A. NAVIGATE TO PROFILE\n1. Go to the linkedin profile URL\n2. Wait for profile to fully load\n3. **Check accessibility:**\n   - Profile exists? If not, log and continue\n   - Profile private/restricted? Log and continue\n   - Your own profile? Skip\n\n### B. GATHER PROFILE CONTEXT\n**Note for comment personalization:**\n- Display name\n- Role/bio info\n- Content niche or themes\n- Sheet context column (if provided)\n- Sheet name column (if provided)\n\n### C. FIND RECENT POSTS\n1. Locate their posts/activity section\n2. Identify 2 most recent posts\n3. For each post:\n   - Note the post topic/content\n   - Check if you've already engaged\n   - Verify comments are enabled\n\n### D. ENGAGE WITH EACH POST\n\n**For each of the 2 posts:**\n\n#### D1. READ THE POST THOROUGHLY\n- Full post content (expand if needed)\n- Media/attachments\n- Key points made\n- Existing comments (avoid repetition)\n\n#### D2. LIKE (if like_comment includes like)\n1. Find the like/reaction action\n2. Engage with it\n3. Verify it registered\n\n#### D3. COMMENT (if like_comment includes comment)\n\n**Generate comment:**\n- Style: thoughtful\n- Angle: \"\"\n- Profile context: [from sheet and profile analysis]\n- Post context: [from reading this specific post]\n\n**Comment MUST:**\n- Reference SPECIFIC content from THIS post\n- Add genuine value or ask real question\n- Use profile context naturally\n- Match platform tone\n\n**Comment MUST NOT:**\n- Be generic (\"Great post!\", \"Love this!\")\n- Be copy-paste across posts\n- Be overtly promotional\n- Exceed platform character limit\n\n**⚠️ VALIDATE COMMENT:**\n- Count characters\n- **If X/Twitter and > 280:** Log error, skip comment\n- Check against platform limit\n\n**Post the comment:**\n1. Find comment input\n2. Enter comment\n3. **Verify before submitting:**\n   - Character count OK?\n   - Content looks right?\n4. Submit\n5. Verify comment appears\n\n#### D4. LOG THIS POST ENGAGEMENT\n- Post URL\n- Post summary\n- Like status\n- Comment text (if any)\n- Comment character count\n- Success/failure\n\n### E. RATE LIMITING BETWEEN POSTS\n- Wait 15-30 seconds between engagements on same profile\n- Vary timing to appear natural\n\n### F. RATE LIMITING BETWEEN PROFILES\n- Wait 45-90 seconds between profiles\n- **If any warning appears:** STOP immediately\n\n---\n\n## STEP 3: GENERATE COMPLETION REPORT\n\n```json\n{\n  \"totalProfiles\": <number>,\n  \"profilesProcessed\": <number>,\n  \"totalLikes\": <number>,\n  \"totalComments\": <number>,\n  \"commentsSkippedOverLimit\": <number>,\n  \"failed\": <number>,\n  \"stoppedEarly\": false,\n  \"stopReason\": \"\",\n  \"results\": [\n    {\n      \"rowIndex\": <number>,\n      \"profileUrl\": \"\",\n      \"profileName\": \"\",\n      \"postsEngaged\": [\n        {\n          \"postUrl\": \"\",\n          \"postSummary\": \"\",\n          \"liked\": true|false,\n          \"commented\": true|false,\n          \"commentText\": \"\",\n          \"commentCharCount\": <number>,\n          \"withinLimit\": true|false,\n          \"status\": \"success|comment_over_limit|failed\"\n        }\n      ],\n      \"status\": \"success|partial|failed\",\n      \"error\": \"\"\n    }\n  ]\n}\n```\n\n---\n\n## COMMENT QUALITY STANDARDS\n\n**GOOD comment example:**\n\"Your point about [specific thing from post] resonates - we've seen similar patterns with [connection to commentAngle]. Curious how you're thinking about [thoughtful follow-up]?\"\n\n**BAD comment example:**\n\"Great insights! Thanks for sharing. 👏\"\n\nThe goal is genuine relationship building, not engagement farming.",
  "userInput": "You are engaging with multiple profiles systematically. Adapt to the platform UI.\n\n**TASK CONFIGURATION:**\n- Sheet URL: \n- Platform: linkedin\n- Engagement Type: like_comment\n- Comment Style: thoughtful\n- Comment Angle: \n- Posts Per Profile: 2\n\n---\n\n## STEP 1: LOAD SHEET DATA\n\n1. Navigate to \n2. Read all rows\n3. **Expected columns:**\n   - profile_url (REQUIRED)\n   - name (optional - helps personalization)\n   - context (optional - extra info for comments)\n4. Count valid rows\n\n---\n\n## PLATFORM CHARACTER LIMITS FOR COMMENTS\n\n| Platform  | Comment Limit | Notes                   |\n|-----------|---------------|-------------------------|\n| LinkedIn  | ~1,250 chars  | Soft limit              |\n| X/Twitter | 280 chars     | **STRICT LIMIT**        |\n| Instagram | ~2,200 chars  | May vary                |\n\n---\n\n## STEP 2: PROCESS EACH PROFILE\n\nFor each profile_url:\n\n### A. NAVIGATE TO PROFILE\n1. Go to the linkedin profile URL\n2. Wait for profile to fully load\n3. **Check accessibility:**\n   - Profile exists? If not, log and continue\n   - Profile private/restricted? Log and continue\n   - Your own profile? Skip\n\n### B. GATHER PROFILE CONTEXT\n**Note for comment personalization:**\n- Display name\n- Role/bio info\n- Content niche or themes\n- Sheet context column (if provided)\n- Sheet name column (if provided)\n\n### C. FIND RECENT POSTS\n1. Locate their posts/activity section\n2. Identify 2 most recent posts\n3. For each post:\n   - Note the post topic/content\n   - Check if you've already engaged\n   - Verify comments are enabled\n\n### D. ENGAGE WITH EACH POST\n\n**For each of the 2 posts:**\n\n#### D1. READ THE POST THOROUGHLY\n- Full post content (expand if needed)\n- Media/attachments\n- Key points made\n- Existing comments (avoid repetition)\n\n#### D2. LIKE (if like_comment includes like)\n1. Find the like/reaction action\n2. Engage with it\n3. Verify it registered\n\n#### D3. COMMENT (if like_comment includes comment)\n\n**Generate comment:**\n- Style: thoughtful\n- Angle: \"\"\n- Profile context: [from sheet and profile analysis]\n- Post context: [from reading this specific post]\n\n**Comment MUST:**\n- Reference SPECIFIC content from THIS post\n- Add genuine value or ask real question\n- Use profile context naturally\n- Match platform tone\n\n**Comment MUST NOT:**\n- Be generic (\"Great post!\", \"Love this!\")\n- Be copy-paste across posts\n- Be overtly promotional\n- Exceed platform character limit\n\n**⚠️ VALIDATE COMMENT:**\n- Count characters\n- **If X/Twitter and > 280:** Log error, skip comment\n- Check against platform limit\n\n**Post the comment:**\n1. Find comment input\n2. Enter comment\n3. **Verify before submitting:**\n   - Character count OK?\n   - Content looks right?\n4. Submit\n5. Verify comment appears\n\n#### D4. LOG THIS POST ENGAGEMENT\n- Post URL\n- Post summary\n- Like status\n- Comment text (if any)\n- Comment character count\n- Success/failure\n\n### E. RATE LIMITING BETWEEN POSTS\n- Wait 15-30 seconds between engagements on same profile\n- Vary timing to appear natural\n\n### F. RATE LIMITING BETWEEN PROFILES\n- Wait 45-90 seconds between profiles\n- **If any warning appears:** STOP immediately\n\n---\n\n## STEP 3: GENERATE COMPLETION REPORT\n\n```json\n{\n  \"totalProfiles\": <number>,\n  \"profilesProcessed\": <number>,\n  \"totalLikes\": <number>,\n  \"totalComments\": <number>,\n  \"commentsSkippedOverLimit\": <number>,\n  \"failed\": <number>,\n  \"stoppedEarly\": false,\n  \"stopReason\": \"\",\n  \"results\": [\n    {\n      \"rowIndex\": <number>,\n      \"profileUrl\": \"\",\n      \"profileName\": \"\",\n      \"postsEngaged\": [\n        {\n          \"postUrl\": \"\",\n          \"postSummary\": \"\",\n          \"liked\": true|false,\n          \"commented\": true|false,\n          \"commentText\": \"\",\n          \"commentCharCount\": <number>,\n          \"withinLimit\": true|false,\n          \"status\": \"success|comment_over_limit|failed\"\n        }\n      ],\n      \"status\": \"success|partial|failed\",\n      \"error\": \"\"\n    }\n  ]\n}\n```\n\n---\n\n## COMMENT QUALITY STANDARDS\n\n**GOOD comment example:**\n\"Your point about [specific thing from post] resonates - we've seen similar patterns with [connection to commentAngle]. Curious how you're thinking about [thoughtful follow-up]?\"\n\n**BAD comment example:**\n\"Great insights! Thanks for sharing. 👏\"\n\nThe goal is genuine relationship building, not engagement farming.",
  "urls": [],
  "meta": {
    "createdAt": "",
    "userAgent": ""
  },
  "execution": {
    "mode": "device",
    "deviceIds": []
  }
}

MORE STARTING POINTS

Other templates for run from a spreadsheet.

See all templates
RUN FROM A SPREADSHEETSend LinkedIn messages from a spreadsheet

Use a Google Sheet to send a tailored LinkedIn message to each profile.

RUN FROM A SPREADSHEETSend Instagram messages from a spreadsheet

Use a Google Sheet to send a tailored Instagram message to each account.

RUN FROM A SPREADSHEETSend X messages from a spreadsheet

Use a Google Sheet to send a tailored X message to each account.