{"skill":{"slug":"meituan-automation","displayName":"Meituan Physical Automation","summary":"Give your AI hands. This skill physically taps, swipes, and interacts with the Meituan App on a real Android phone — searching restaurants, picking items, ha...","description":"---\ntitle: Meituan Physical Automation — Let Your AI Order Food For Real\ndescription: Give your AI hands. This skill physically taps, swipes, and interacts with the Meituan App on a real Android phone — searching restaurants, picking items, handling spec popups, and landing on the checkout page. No APIs. No hacking. Just real-world automation.\ntags: [meituan, food-delivery, android, automation, adb, uiautomator2, china, takeout, ordering, restaurant, waimai, real-device, phone-control, computer-use, terminal-skill, local-skill, anti-ban, ui-automation]\n---\n\n# 🍜 Meituan Physical Automation\n\n> **Your AI finally has hands. Now it can order your lunch.**\n\nThis skill gives any AI Agent (like ClawBot) the ability to **physically control a real Android phone** to order food delivery on [Meituan (美团)](https://www.meituan.com) — the largest food delivery platform in China with over 700 million users.\n\nNo API keys. No Meituan developer account. No reverse engineering. Just the same taps and swipes a human would make — done entirely by your AI.\n\n---\n\n## ⚠️ Platform Compatibility\n\n| Platform | Supported |\n|----------|-----------|\n| 🤖 Android | ✅ **Yes** — requires ADB + USB Debugging |\n| 🍎 iOS | ❌ **No** — Apple's sandbox prevents ADB-style physical control |\n\nThis skill is **Android-only by design**. iOS devices don't support ADB or UIAutomator2, which are the underlying technologies that make physical screen control possible without reverse engineering the app. If you have an Android phone (any brand: Samsung, Xiaomi, Huawei, OnePlus, Pixel, etc.), you're good to go.\n\n---\n\n## ✨ What Makes This Different\n\nMost \"food delivery\" AI tools rely on unofficial APIs, web scraping, or require developer credentials. This skill is different:\n\n| Other approaches | This skill |\n|-----------------|------------|\n| Call unofficial HTTP APIs | Physically tap the screen like a human |\n| Risk account bans from bot traffic | Indistinguishable from a real user |\n| Break when apps update their API | Works as long as the UI exists |\n| Require app reverse engineering | Zero reverse engineering |\n| Stop at complex spec pop-ups | **Smart Visual Radar** auto-handles multi-level spec selection (size, temperature, sweetness) |\n| Silently fail on business errors | Returns clear error messages (\"¥7 short of minimum\", \"mandatory item missing\") |\n\n---\n\n## 🎯 What Your AI Can Do With This Skill\n\nJust tell your AI what you want. For example:\n\n> *\"Order me a Grande Coconut Latte from the nearest Luckin Coffee.\"*\n\nYour AI will autonomously:\n1. 🔍 Search Meituan for nearby Luckin Coffee stores\n2. 🏪 Enter the correct store\n3. 📦 Switch to the delivery ordering tab\n4. 🔎 Search for \"Coconut Latte\" within the store menu\n5. ➕ Add it to cart (auto-handling size/temperature pop-ups)\n6. 🧾 Navigate to the checkout confirmation page\n\n**Then it stops and hands control back to you to pay.** Your money stays 100% safe — the AI never completes payment.\n\n---\n\n## 🚀 One-Time Setup (3 steps, ~5 minutes)\n\n**Step 1 — Install the skill engine** (your AI can do this for you):\n```bash\npip install -r requirements.txt\npython -m uiautomator2 init\n```\n\n**Step 2 — Enable Developer Mode on your Android phone:**\n- Go to **Settings → About Phone**\n- Tap **Build Number** 7 times until \"Developer Mode\" activates\n- Go to **Settings → Developer Options → Enable USB Debugging**\n\n**Step 3 — Connect your phone and verify:**\n```bash\nadb devices\n# Should show your device ID, e.g.: \"ABC123XYZ    device\"\n```\n\nThat's it. Tell your AI you want food. It takes over from here.\n\n---\n\n## 🤖 CRITICAL INSTRUCTION FOR AI SUBAGENT\n\n> **STOP! DO NOT JUST READ THIS FILE AND RETURN ITS CONTENT!**\n> You are an AI with terminal access. You **MUST** use your bash/terminal tool to **EXECUTE** the following commands RIGHT NOW. Do not just summarize this document. You are physically controlling a phone.\n\n### Phase 1: Environment Check (run once on first use)\nYou must execute these commands in your bash terminal:\n1. Run `pip install -r requirements.txt` and wait for completion.\n2. Run `python -m uiautomator2 init` to initialize the Android device driver.\n3. Run `adb devices` and parse the output. If no device is listed, tell the user: *\"Please connect your Android phone via USB and ensure USB Debugging is enabled in Developer Options.\"*\n4. Run `adb shell am start -n \"com.sankuai.meituan/com.meituan.android.pt.homepage.activity.MainActivity\"` to bring Meituan to the foreground.\n\n### Phase 2: Ordering Workflow (strict sequence — do not skip steps)\n\nYou must execute the following bash commands one by one, wait for the JSON output, and proceed based on the result.\n\n```bash\n# 1. Search for restaurants\npython cli.py search \"<restaurant_name>\"\n# Returns: list of stores with index numbers\n\n# 2. Enter a store (try index 0 first)\npython cli.py open <index>\n# Returns: \"营业中\" (open) or \"打烊\" (closed). If closed, try next index.\n\n# 3. Switch to delivery tab (MANDATORY — do not skip)\npython cli.py waimai\n\n# 4. Search for the specific item within the store\npython cli.py tap \"搜索\"\npython cli.py type \"<item_name>\"\n\n# 5. Add item to cart (visual radar handles all spec pop-ups automatically)\npython cli.py add \"<item_name>\"\n\n# 6. Go to checkout (STOPS HERE — never auto-pays)\npython cli.py checkout\n# Returns: estimated delivery time, total price, address status\n```\n\n### Phase 3: Error Handling\n- If a command returns `ERROR:` read the `HINT:` on the next line and adapt.\n- If a store shows \"门店已打烊\" (closed), go back and try `open <next_index>`.\n- If `add` fails, the item name on screen may differ slightly — try a shorter keyword.\n- If `checkout` shows `needs_address: True`, inform the user to add a delivery address on their phone.\n\n---\n\n## 📁 Files In This Package\n\n| File | Purpose |\n|------|---------|\n| `SKILL.md` | This file — skill description + AI runbook |\n| `cli.py` | Main entry point — all commands go through here |\n| `meituan.py` | Core business logic — visual radar, cart handling, checkout parsing |\n| `device.py` | Low-level Android device abstraction (ADB + UIAutomator2) |\n| `requirements.txt` | Python dependencies |\n\n---\n\n## 💡 Tips & Known Limitations\n\n- **Store hours matter**: Meituan stores have specific delivery hours. If a store is closed (\"打烊\"), ask your AI to try the next store in the search results.\n- **Slider CAPTCHAs**: High-frequency usage may occasionally trigger a human-verification slider on screen. Just swipe it manually — takes 2 seconds.\n- **Delivery address**: The first time you use the skill, you may need to add a delivery address manually on the checkout page. After that, it's saved.\n- **Language**: The Meituan app is in Chinese. The skill handles all Chinese UI navigation internally — you can give commands in English or Chinese.\n\n---\n\n*Built with ❤️ by [@oscarka](https://github.com/oscarka/meituan-cli) · MIT-0 License*\n","tags":{"adb":"1.0.1","android":"1.0.1","latest":"1.0.1","meituan":"1.0.1","physical-control":"1.0.1","takeout":"1.0.1","ui-automation":"1.0.1","anti-ban":"1.0.0","automation":"1.0.0","china":"1.0.0","computer-use":"1.0.0","food-delivery":"1.0.0","local-skill":"1.0.0","ordering":"1.0.0","phone-control":"1.0.0","real-device":"1.0.0","restaurant":"1.0.0","terminal-skill":"1.0.0","uiautomator2":"1.0.0","waimai":"1.0.0"},"stats":{"comments":0,"downloads":359,"installsAllTime":0,"installsCurrent":0,"stars":1,"versions":2},"createdAt":1778120384963,"updatedAt":1779076325383},"latestVersion":{"version":"1.0.1","createdAt":1778142070534,"changelog":"Fixed an issue where AI Agents (such as Clawbot) failed to execute commands properly. Added extremely strict execution directives (\"CRITICAL INSTRUCTION FOR AI SUBAGENT\") in SKILL.md to force the AI to invoke the terminal and perform physical ordering, rather than just returning the document content.","license":"MIT-0"},"metadata":null,"owner":{"handle":"oscarka","userId":"s171bwz93b72eqbd294513edzn83gtek","displayName":"oscarka","image":"https://avatars.githubusercontent.com/u/3446157?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1780090756846}}