Install
openclaw skills install sf-scraperScrape employee data from a logged-in SAP SuccessFactors browser session using browser automation. Use when: user provides an employee ID and wants employee details (name, email, department, manager, etc.) scraped directly from the SuccessFactors UI — NOT via OData/API. Requires the user to have SuccessFactors open and logged in via Chrome with the OpenClaw Browser Relay extension attached. Triggers on: "get employee name", "look up employee", "scrape SF", "find employee in SuccessFactors", or any request combining an employee ID with SuccessFactors data lookup.
openclaw skills install sf-scraperScrape employee data from a live, logged-in SAP SuccessFactors session via browser automation. This skill uses ONLY browser snapshots and actions — zero API calls.
profile="chrome" for all browser calls (we need the authenticated session).browser(action="snapshot", profile="chrome", compact=true)
Check for these states:
https://<company>.successfactors.comhttps://<company>.successfactors.euhttps://<company>.sapsf.comhttps://pmsalesdemo<N>.successfactors.com (demo instances)https://hcm<N>preview.sapsf.com (preview instances)Store the base URL — all subsequent navigation uses it.
Try these navigation strategies in order. Move to the next only if the current one fails.
browser(action="navigate", profile="chrome", targetUrl="{base_url}/sf/liveprofile?selected_user={employee_id}")
Wait 2-3 seconds for load, then snapshot. This is the most reliable deep link in modern SF instances.
Success indicators:
liveprofile and the employee IDFailure indicators:
If Strategy A fails, try these one at a time:
{base_url}/xi/ui/peopleprofile/pages/index.xhtml?selected_user={employee_id}
{base_url}/sf/peopleprofile?selected_user={employee_id}
{base_url}/#/userprofile/{employee_id}
{base_url}/sf/admin/employeefiles?selected_user={employee_id}
Same validation — snapshot after each and check for profile content.
If all deep links fail, use the search:
searchbox role element (most common)textbox with placeholder containing "Search", "Search People", "Find Someone"browser(action="act", profile="chrome", request={kind: "type", ref: "<search_ref>", text: "{employee_id}"})
browser(action="act", profile="chrome", request={kind: "press", ref: "<search_ref>", key: "Enter"})
Last resort — navigate through menus:
{base_url}/sf/adminSuccessFactors heavily uses iframes and lazy loading. Critical handling:
Iframe detection:
browser(action="snapshot", profile="chrome", compact=true, frame="main")
"main", "contentFrame", "bizmuleApp", "xCalApp"frame doesn't work, take a full (non-compact) snapshot to see the full DOM treeLazy loading / SPA transitions:
Popup/Modal handling:
Once on the employee profile, take a detailed snapshot:
browser(action="snapshot", profile="chrome")
SuccessFactors People Profile has these typical sections/cards:
Contains the most important info, always visible at top:
heading level 1 or 2Each card has a header and key-value pairs. Common patterns:
"Personal Information" / "About" card:
"Job Information" card:
"Employment Details" / "Employment Information" card:
"Compensation Information" card (may be restricted):
"Contact Information" card:
"Organizational" / "Position" card:
"Spot Profile" / "About Me" card:
In the accessibility tree snapshot, profile data appears as:
text or label nodes with the field name (e.g., "Department")text, link, or statictext nodes with the value (e.g., "Engineering")Example snapshot patterns:
text "Department"
text "Engineering"
text "Manager"
link "Jane Smith"
text "Location"
text "Bangalore, India"
text "Email"
link "john.doe@company.com"
Scan sequentially and pair each label with its following value.
SuccessFactors profiles often organize data into tabs or collapsible sections.
Common tab names:
To navigate tabs:
tab, tablist, or clickable links with these names)browser(action="act", profile="chrome", request={kind: "click", ref: "<tab_ref>"})
Collapsible sections:
button elements with section names and expand/collapse indicatorsFormat results clearly, grouped by section:
═══ Employee Profile ═══
👤 Basic Info
Name: John Doe
Employee ID: 12345
Job Title: Senior Developer
Department: Engineering
📧 Contact
Email: john.doe@company.com
Phone: +91-9876543210
Location: Bangalore, India
🏢 Organization
Manager: Jane Smith
Division: Technology
Business Unit: Product Development
Legal Entity: Company India Pvt Ltd
📋 Employment
Hire Date: 2020-03-15
Status: Active
Type: Full-Time Regular
Rules:
For multiple employee IDs:
User can add to TOOLS.md:
### SuccessFactors
- Base URL: https://yourcompany.successfactors.com
- Default fields: name, email, department, manager
If configured, use the base URL directly (skip discovery). If default fields are specified, only scrape those.
| Scenario | Detection | Action |
|---|---|---|
| Not logged in | Login form visible | Tell user to log in and re-attach relay |
| Session expired | "Session Timeout" text | Same as above |
| Employee not found | Search returns 0 results | Report clearly, suggest checking ID |
| Access denied | "Unauthorized", "No access", "Insufficient privileges" | Report — user may lack permissions |
| Profile restricted | Fields show "*****" or "Restricted" | Report which fields are restricted |
| Page won't load | Loading spinner after 3 retries | Report timeout, suggest refreshing SF |
| Multiple matches | Search returns >1 result | List matches with names/IDs, ask user to pick |
| Wrong instance | URL doesn't match expected SF domain | Warn user, ask to confirm |
profile="chrome" — never profile="openclaw" (need the user's auth session).browser(action="screenshot", profile="chrome") to see the rendered page visually and extract from the image.