openclaw 网盘下载
OpenClaw

技能详情(站内镜像,无评论)

首页 > 技能库 > iCloud Find My

Query Find My locations and battery status for family devices via iCloud.

开发与 DevOps

许可证:MIT-0

MIT-0 ·免费使用、修改和重新分发。无需归因。

版本:v1.0.0

统计:⭐ 6 · 2.7k · 4 current installs · 4 all-time installs

6

安装量(当前) 4

🛡 VirusTotal :可疑 · OpenClaw :可疑

Package:icloud-findmy

安全扫描(ClawHub)

  • VirusTotal :可疑
  • OpenClaw :可疑

OpenClaw 评估

The skill's instructions generally match its stated purpose (using PyiCloud to query Find My), but there are privacy and coherence issues — it tells the agent to persist Apple IDs in workspace files, recommends using eval() on CLI output, and the registry metadata doesn't declare the credentials/binaries the runtime actually needs.

目的

The skill's claimed purpose (querying Find My via PyiCloud) aligns with the instructions to install and run the `icloud` CLI. Minor inconsistency: registry metadata lists no required binaries or credentials, but SKILL.md metadata and the runtime instructions explicitly require the `icloud` binary (pyicloud) and an Apple ID for authentication.

说明范围

Instructions direct the agent to prompt for the user's Apple ID and run local CLI commands that create long-lived sessions. They also recommend storing the Apple ID in TOOLS.md/workspace config and advise using Python's eval() to parse CLI output — eval() on any string is dangerous and storing identifiers in workspace files can leak sensitive info to other skills or collaborators. The instructions don't direct data to external endpoints, but t…

安装机制

No install spec in the registry (instruction-only), but SKILL.md recommends using Homebrew + pipx to install pyicloud — both are common, legitimate package managers. There are no downloads from unknown URLs or extract steps. Platform is macOS-only (declared), which matches the brew-based install instructions.

证书

The skill requires interactive Apple ID credentials and 2FA to work, but the registry declares no primary credential or required env vars. The SKILL.md instructs storing the Apple ID in workspace files (TOOLS.md), which is disproportionate and increases leakage risk. The skill does not request passwords as env vars (the CLI prompts), but persistent session tokens are created on disk for 1–2 months — this is a sensitive artifact that should be …

持久

The skill is not always-enabled and does not request elevated platform privileges. It relies on PyiCloud's session files stored in the user's home directory (described in the doc), which is normal for this tool. The skill does not attempt to modify other skills or global agent settings.

安装(复制给龙虾 AI)

将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。

请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「iCloud Find My」。简介:Query Find My locations and battery status for family devices via iCloud.。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/liamnichols/icloud-findmy/SKILL.md
(来源:yingzhi8.cn 技能库)

SKILL.md

打开原始 SKILL.md(GitHub raw)

---
name: icloud-findmy
description: Query Find My locations and battery status for family devices via iCloud.
homepage: https://github.com/picklepete/pyicloud
metadata: {"clawdbot":{"emoji":"📍","requires":{"bins":["icloud"]},"install":[{"id":"pipx","kind":"shell","command":"brew install pipx && pipx install pyicloud","bins":["icloud"],"label":"Install PyiCloud (pipx)"}]}}
---

# iCloud Find My

Access Find My device locations and battery status via the iCloud CLI (pyicloud).

## Setup

1. **Install pyicloud:**
```bash
brew install pipx
pipx install pyicloud
```

2. **Authenticate (one-time):**

Ask the user for their Apple ID, then run:
```bash
icloud --username their.email@example.com --with-family --list
```

They'll need to enter their password and complete 2FA. The session will be saved and lasts 1-2 months.

3. **Store Apple ID:**

Add the Apple ID to your TOOLS.md or workspace config so you remember it for future queries:
```markdown
## iCloud Find My
Apple ID: their.email@example.com
```

## Usage

### List all devices

```bash
icloud --username APPLE_ID --with-family --list
```

**Output format:**
```
------------------------------
Name           - Liam's iPhone
Display Name   - iPhone 15 Pro
Location       - {'latitude': 52.248, 'longitude': 0.761, 'timeStamp': 1767810759054, ...}
Battery Level  - 0.72
Battery Status - NotCharging
Device Class   - iPhone
------------------------------
```

**Parsing tips:**
- Devices are separated by `------------------------------`
- Location is a Python dict (use `eval()` or parse with regex)
- Battery Level is 0.0-1.0 (multiply by 100 for percentage)
- Battery Status: "Charging" or "NotCharging"
- Location fields: `latitude`, `longitude`, `timeStamp` (milliseconds), `horizontalAccuracy`

### Get specific device

Find a specific device by grepping the output:
```bash
icloud --username APPLE_ID --with-family --list | grep -A 10 "iPhone"
```

### Parse location

Extract and format location data:
```bash
icloud --username APPLE_ID --with-family --list | 
  grep -A 10 "Device Name" | 
  grep "Location" | 
  sed "s/Location.*- //"
```

Then parse the Python dict string with Python or extract coordinates with regex.

### Parse battery

```bash
icloud --username APPLE_ID --with-family --list | 
  grep -A 10 "Device Name" | 
  grep "Battery Level"
```

## Device Names

Device names come from iCloud and may include:
- Fancy Unicode apostrophes (U+2019 ') instead of ASCII '
- No apostrophes at all (e.g., "Lindas iPhone")

Use case-insensitive matching and normalize apostrophes if needed.

## Session Management

- Sessions last **1-2 months**
- Stored in user's home directory
- When expired, re-run the authentication step
- PyiCloud validates automatically on each request

## Common Patterns

**Check battery before going out:**
```bash
# Get battery for specific device
icloud --username ID --with-family --list | 
  grep -B 2 -A 5 "iPhone" | 
  grep "Battery Level"
```

**Get current location:**
```bash
# Extract location dict and parse coordinates
icloud --username ID --with-family --list | 
  grep -A 10 "iPhone" | 
  grep "Location" | 
  sed "s/.*- //" | 
  python3 -c "import sys; loc = eval(sys.stdin.read()); print(f"{loc['latitude']}, {loc['longitude']}")"
```

**Check if device is charging:**
```bash
icloud --username ID --with-family --list | 
  grep -A 10 "iPhone" | 
  grep "Battery Status"
```

## Proactive Use Cases

- **Battery warnings:** Check battery levels before calendar events (going out)
- **Location context:** Answer "near me" queries by checking user's current location
- **Home/away detection:** Check if user is at home based on coordinates
- **Low battery alerts:** Warn if battery <30% and not charging

## Troubleshooting

**Authentication errors:**
- Session expired - re-authenticate
- Wrong Apple ID - check stored ID
- 2FA required - complete 2FA flow

**No location available:**
- Device offline
- Find My disabled
- Location Services off

**Device not found:**
- Check exact device name with `--list`
- Names are case-sensitive
- May have Unicode apostrophes

## Notes

- Requires macOS (iCloud API quirks)
- Family Sharing must be enabled to see family devices
- Location updates every ~1-5 minutes when device is active
- Battery readings may be cached (check timestamp)