KlangoRPA Studio
Studio is the desktop app where you build bots. Click through a workflow once — Studio captures every action, generates Python + Playwright code, and lets you refine selectors, add data, and publish with a single button.
Recording a Web Bot
Studio opens a Chromium browser controlled by Playwright. As you interact with the page, every click, keystroke, navigation, and extraction is recorded as a step in your automation.
To start recording:
- Open Studio and log in with your KlangoRPA account.
- Click New Bot → Web Bot.
- Enter a name and click Start Recording.
- A Chromium window opens. Navigate to your target website and perform the actions you want to automate.
- Use the overlay toolbar to Extract data from the page (stores it in a variable or writes back to a file).
- Click Stop when finished.
After stopping, Studio moves to the Selector Review screen where you can verify and adjust each captured action before publishing.
Smart selectors
Studio generates multiple candidate selectors per element (ID, role, text, CSS) so the bot adapts to minor page changes.
Extract data
Use the Extract action to pull text, attributes, or tables from the page into variables or files.
Action labels
Give each step a human-readable label — it appears in the Python log and in the History view.
AI assist
Stuck on a complex interaction? The AI Assist panel generates a custom Python snippet based on your prompt.
Map Edit
Map Edit is the editor that opens after recording (or when you click Edit Script on a published bot). It lets you inspect and modify every step without touching Python directly.
What you can do in Map Edit:
- Edit the target selector for any action (click, type, extract).
- Reorder steps with Move Up / Move Down buttons.
- Add Flow Control blocks — loops, conditionals, custom Python snippets, and AI-generated code.
- Add Data Sources (Excel, CSV, SQL, IMAP email) to loop over rows of data.
- Manage Bot-Exclusive Assets — credentials used only by this bot.
- Preview the estimated time saved per run.
- Publish the updated bot to the cloud.
Version history
Every Publish saves a snapshot of the script and the session map. You can browse past versions in the Edit Script panel, restore any version (making it the active bot), or run a historical version once without changing the active version.
Data Sources
A Data Source connects a bot to rows of external data. For each row, the bot runs one iteration of a loop_datasetblock, with the row's columns available as variables.
Excel / CSV
Read rows from a spreadsheet or flat file on the runner machine. Write-back supported: the bot can update the same column it read.
SQL
Run a query against a database. The result set becomes the loop dataset. Write-back not supported — use an insert/update action for that.
Email (IMAP)
Each matching email in an IMAP mailbox is one iteration. Columns: FROM, SUBJECT, BODY, DATE, ATTACHMENTS (local paths). Filters: sender, subject, body keyword, has-attachment, extension.
Using a Data Source in a bot:
- In Map Edit, click + Data Source (📊 toolbar).
- Choose a kind, give it a name, and fill in the path or connection details.
- Click Discover Columns to auto-detect column names.
- In your action's value field, insert a column token like
{{DATA.Sheet1.Email}}. - Insert a Loop Dataset block around the actions that should repeat per row.
{{ASSET.DB.Password}}) so the credential is never stored in the bot definition.Flow Control
Flow Control blocks are pseudo-actions inserted into the step list. They generate standard Python constructs — no custom language needed.
Loop (range)
Repeat a block N times. N can be a Python expression, e.g. len(rows). The loop variable name is configurable.
If / Else If / Else / End If
Conditional logic. The condition is any Python boolean expression, e.g. row['Status'] == 'pending'.
Custom Code
Insert raw Python lines at any point in the script. Useful for calculations, API calls, or validations between steps.
AI Action
Describe what you need in plain language; the AI writes the Python snippet for you. Uses the LLM key configured in Preferences.
All Flow Control blocks are inserted via the Flow Control menu (🔀 button in Map Edit). Blocks survive Redefine and Regenerate operations — they're stored as part of the session map, not as text edits to the generated script.
Desktop Bots
In addition to web bots (browser automation with Playwright), Studio can record bots for native desktop applications on Windows and Linux.
Toggle between 🌐 Web Bot and 🖥️ Desktop Bot in the Studio header before starting a new recording.
Windows
Uses pywinauto / UIA for control-level anchors (AutomationId, Name, ControlType). Generated script targets specific UI controls — robust against window repositioning.
Linux
Uses xdotool / wmctrl for window-level anchors (title, class). Coordinates are relative to the window, so the bot survives moving or resizing the target window.
xdotool and wmctrl installed on Linux Runner machines.Publishing a Bot
Clicking Publish in Studio sends the Python script and the session map to your Management server in a single atomic operation. Before overwriting the current version, the server saves a snapshot — so you can always roll back.
What gets published:
- The generated Python script (
.py) - The session map (selectors, data sources, flow control definitions)
- A version number incremented on each publish
Once published, the bot appears in the Web Console under Bots and is ready to be dispatched manually, put on a trigger, or added to a queue.