Instagram photo draft with caption
PassedWhite SE MirrorZ · 2 min 10 s · the AI stepped in 2 times Took 352 ms · kept as “confirm”It answered
No app or kind of screen it could name · 10 words, 8 buttons with no wordsNew post<11 characters>=PollPromptAdd audioRipped Jeans (Slowed +.7Eyes Withrà _Taa neonleShareback · backa buttoncomments · chatmusicforwardlike · heart · Ripped Jeans (Slowed +.a buttona button
The program has changed since this run, so some steps are named as the run recorded them.
What the AI was told
Instagram photo draft with caption: The caption field was successfully tapped and is now ready for input. The step failed because it was looking for "Write…
## The program: “Instagram photo draft with caption” (`Instagram_photo_draft_with_caption`)
Opens Instagram, starts a new post using the newest photo or video in the camera roll, types a caption, and leaves it saved as a draft without publishing. Expects Instagram closed or on any screen to start; leaves Instagram on its home feed with the post saved to Drafts.
### Its steps
1. “Start” the mirror
2. Run “Open app” with “instagram”
3. Ask AI to “Start creating a new post (photo/video), and get to the screen that shows the camera roll for picking the photo or video to post, with the newest item selected.”
4. Tap the words “Next”
5. Wait 1.5 s (if it fails, the program keeps going)
6. Tap the words “Next”
7. Wait 1.5 s (if it fails, the program keeps going)
8. Read the screen → keeps the result as $screen
9. If $screen has none of “caption”:
10. Ask AI to “Get to the new post's caption screen, where there is a text field to write a caption.”
11. Tap the words “Write a caption...” inside longer text ← this step failed
12. Type $caption_text
13. Press “Back”
14. Wait 1 s (if it fails, the program keeps going)
15. Read the screen → keeps the result as $confirm
16. If $confirm contains “Save draft” or “Discard”:
17. Tap the words “Save draft” inside longer text
18. Finish · “Saved the Instagram post as a draft”
### Where it failed: step 11 of 18
It called `tap_text` with {"text":"Write a caption...","contain":true}.
It answered: {"ok":false,"error":"\"Write a caption...\" is not on screen","hint":"Nothing was tapped. The screen may still be changing — a page loading, a sheet sliding in — so look again (read_screen). If it shows now, this step can run again as it is; if it never comes, find what is on the screen instead.","target":"Write a caption..."}
The tool's hint: Nothing was tapped. The screen may still be changing — a page loading, a sheet sliding in — so look again (read_screen). If it shows now, this step can run again as it is; if it never comes, find what is on the screen instead.
### What ran just before, oldest first
- step 1, cast (connect): worked
- step 2, Open app (app: instagram): worked
- step 3, agent (Start creating a new post (photo/video), and get to the screen that shows the camera roll for picking the photo or video to post, with the newest item selected. · ≤ 12 steps): worked
- step 4, tap_text ("Next"): worked
- step 5, wait (1.5s): worked
- step 6, tap_text ("Next"): worked
- step 7, wait (1.5s): worked
- step 8, read_screen (whole screen): worked
- step 10, agent (Get to the new post's caption screen, where there is a text field to write a caption. · ≤ 8 steps): worked
### What it was given
- $caption_text (The caption to type on the post.) = "<11 characters>"
### What it remembers
- $screen = {"ok":true,"count":10,"text":[{"id":2,"text":"New post","x":309,"y":37},{"id":4,"text":"Add a captio...","x":112,"y":558},{"id":5,"text":"三","x":58,"y":727},{"id":6,"text":"Poll","x":103,"y":727},{"id":8,"text":"Prompt","x":242,"y":728},{"id":10,"text":"Add audio","x":147,"y":809},{"id":13,"text":"Ripped Jeans (Slowed +.","x":227,"y":875},{"id":15,"text":"7Eyes With","x":540,"y":875},{"id":16,"tex… (659 more characters)
- $confirm = nothing yet
- $phone = {"name":"White SE MirrorZ","driver":"imouse","model":"iPhone12,8","handset":"iPhone SE 2","ios":"26.5","screen":{"width":608,"height":1080},"apps":{},"language":null,"date":"2026-10-06","weekday":"Tuesday","time":"10:07","hour":10}
### How you end: call the done tool with one of these verdicts
- **retry** — the way is clear now: the program runs this step again, with the same input.
- **carry_on** — the step's job is done: you did it yourself, or the screen shows it was not needed. The program goes on with the next step.
- **stop** — it cannot be fixed from here. The program stops, and your summary is what the person reads.Instagram photo draft with caption: The caption screen was successfully exited by tapping the "OK" button in the top right. The step failed because it trie…
## The program: “Instagram photo draft with caption” (`Instagram_photo_draft_with_caption`)
Opens Instagram, starts a new post using the newest photo or video in the camera roll, types a caption, and leaves it saved as a draft without publishing. Expects Instagram closed or on any screen to start; leaves Instagram on its home feed with the post saved to Drafts.
### Its steps
1. “Start” the mirror
2. Run “Open app” with “instagram”
3. Ask AI to “Start creating a new post (photo/video), and get to the screen that shows the camera roll for picking the photo or video to post, with the newest item selected.”
4. Tap the words “Next”
5. Wait 1.5 s (if it fails, the program keeps going)
6. Tap the words “Next”
7. Wait 1.5 s (if it fails, the program keeps going)
8. Read the screen → keeps the result as $screen
9. If $screen has none of “caption”:
10. Ask AI to “Get to the new post's caption screen, where there is a text field to write a caption.”
11. Tap the words “Write a caption...” inside longer text
12. Type $caption_text
13. Press “Back” ← this step failed
14. Wait 1 s (if it fails, the program keeps going)
15. Read the screen → keeps the result as $confirm
16. If $confirm contains “Save draft” or “Discard”:
17. Tap the words “Save draft” inside longer text
18. Finish · “Saved the Instagram post as a draft”
### Where it failed: step 13 of 18
It called `press_key` with {"key":"back"}.
It answered: {"ok":false,"error":"The back key is a keyboard shortcut on this phone, and the cursor is in a text field, where iOS would type it instead and turn on Typing Mode. Tap the screen's own button instead — its back arrow, Cancel, Done or OK."}
### What ran just before, oldest first
- step 1, cast (connect): worked
- step 2, Open app (app: instagram): worked
- step 3, agent (Start creating a new post (photo/video), and get to the screen that shows the camera roll for picking the photo or video to post, with the newest item selected. · ≤ 12 steps): worked
- step 4, tap_text ("Next"): worked
- step 5, wait (1.5s): worked
- step 6, tap_text ("Next"): worked
- step 7, wait (1.5s): worked
- step 8, read_screen (whole screen): worked
- step 10, agent (Get to the new post's caption screen, where there is a text field to write a caption. · ≤ 8 steps): worked
- step 11, tap_text ("Write a caption..."): failed, and the AI got past it — The caption field was successfully tapped and is now ready for input. The step failed because it was looking for "Write a caption..." but Instagram actually displays "Add a caption..." - the program step should be updated to search for "Add a caption..." instead.
- step 12, type_text ("<11 characters>"): worked
### What it was given
- $caption_text (The caption to type on the post.) = "<11 characters>"
### What it remembers
- $screen = {"ok":true,"count":10,"text":[{"id":2,"text":"New post","x":309,"y":37},{"id":4,"text":"Add a captio...","x":112,"y":558},{"id":5,"text":"三","x":58,"y":727},{"id":6,"text":"Poll","x":103,"y":727},{"id":8,"text":"Prompt","x":242,"y":728},{"id":10,"text":"Add audio","x":147,"y":809},{"id":13,"text":"Ripped Jeans (Slowed +.","x":227,"y":875},{"id":15,"text":"7Eyes With","x":540,"y":875},{"id":16,"tex… (659 more characters)
- $confirm = nothing yet
- $phone = {"name":"White SE MirrorZ","driver":"imouse","model":"iPhone12,8","handset":"iPhone SE 2","ios":"26.5","screen":{"width":608,"height":1080},"apps":{},"language":null,"date":"2026-10-06","weekday":"Tuesday","time":"10:07","hour":10}
### How you end: call the done tool with one of these verdicts
- **retry** — the way is clear now: the program runs this step again, with the same input.
- **carry_on** — the step's job is done: you did it yourself, or the screen shows it was not needed. The program goes on with the next step.
- **stop** — it cannot be fixed from here. The program stops, and your summary is what the person reads.