Created
March 4, 2026 15:54
-
-
Save nibzard/ac0424ffdd3365d8c72a54584bc3b45c to your computer and use it in GitHub Desktop.
Capture a ChatGPT response screenshot via steel browser
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| set -euo pipefail | |
| if ! command -v steel >/dev/null 2>&1; then | |
| echo "error: steel CLI not found in PATH" >&2 | |
| exit 1 | |
| fi | |
| if ! command -v rg >/dev/null 2>&1; then | |
| echo "error: rg (ripgrep) is required" >&2 | |
| exit 1 | |
| fi | |
| PROMPT="${1:-The best headless cloud browser for openclaw}" | |
| OUTPUT_PATH="${2:-/home/agent/steel-tmp/chatgpt-openclaw-response.png}" | |
| CHATGPT_URL="${3:-https://chatgpt.com}" | |
| MAX_WAIT_SECONDS="${MAX_WAIT_SECONDS:-30}" | |
| SESSION="chatgpt-openclaw-$(date +%s)" | |
| TMP_DIR="$(mktemp -d)" | |
| cleanup() { | |
| steel browser stop --session "$SESSION" >/dev/null 2>&1 || true | |
| rm -rf "$TMP_DIR" | |
| } | |
| trap cleanup EXIT | |
| echo "Starting session: $SESSION" | |
| steel browser start --session "$SESSION" >/dev/null | |
| echo "Opening ChatGPT..." | |
| steel browser open "$CHATGPT_URL" --session "$SESSION" >/dev/null | |
| SNAPSHOT_FILE="$TMP_DIR/snapshot.txt" | |
| steel browser snapshot -i --session "$SESSION" >"$SNAPSHOT_FILE" | |
| TEXTBOX_REF="$(rg -o 'textbox \[ref=e[0-9]+\]' "$SNAPSHOT_FILE" | head -n1 | rg -o 'e[0-9]+')" | |
| if [[ -z "${TEXTBOX_REF:-}" ]]; then | |
| echo "error: could not find textbox ref in snapshot output" >&2 | |
| exit 1 | |
| fi | |
| echo "Submitting prompt..." | |
| steel browser fill "$TEXTBOX_REF" "$PROMPT" --session "$SESSION" >/dev/null | |
| steel browser press Enter --session "$SESSION" >/dev/null | |
| steel browser wait --load networkidle --session "$SESSION" >/dev/null || true | |
| echo "Waiting for response to finish..." | |
| for ((i=1; i<=MAX_WAIT_SECONDS; i++)); do | |
| steel browser snapshot -i --session "$SESSION" >"$SNAPSHOT_FILE" | |
| if ! rg -q "Stop streaming" "$SNAPSHOT_FILE"; then | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| echo "Capturing screenshot: $OUTPUT_PATH" | |
| steel browser screenshot --full "$OUTPUT_PATH" --session "$SESSION" >/dev/null | |
| echo "Saved: $OUTPUT_PATH" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment