360 Secure SkillHub
360 安全技能中心

Find My iCloud CLI

这是基于pyicloud(2.5.0+)的CLI工具,核心功能:自动关联人员别名到对应设备(优先iPhone、再Apple Watch)、列出带实时位置的设备、按模糊名找设备;Apple ID存本地状态文件不硬编码,需2FA认证。适用于查询自有/家人共享苹果设备的位置、电池状态,偏好可靠CLI而非不稳定的Find My UI。输入为自然语言查询或别名,输出含位置、电池等字段的JSON结果,首次需设置Apple ID后复用。

rolandkakonyi
rolandkakonyi
热度 33.81
最近更新 2026-05-18 11:42:52
分类:生活依赖:代码执行 / 读写文件

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add findmy-icloud-cli
Metadata
name
findmy-icloud-cli
description
Query Apple Find My device and family-device locations through the pyicloud iCloud CLI, using a locally stored Apple ID username in a deterministic state file instead of hardcoding it. Use when the user wants current locations, battery status, or device lookups for their own Apple devices or family-shared devices, and when a reliable CLI path is preferred over flaky Find My UI automation.

Find My iCloud CLI

Use this skill for Apple Find My lookups via the icloud CLI (pyicloud 2.5.0+). This is the reliable path for device and family-device location on this Mac.

Run scripts from:

cd /Users/rolandk/.openclaw/workspace/skills/findmy-icloud-cli

State and setup

Do not hardcode the user's Apple ID in the skill. Store it once in this deterministic state file:

~/.local/state/icloud-findmy-cli/account.env

Format:

ICLOUD_FINDMY_USERNAME="their.email@example.com"

Use:

./scripts/findmy.sh set-username their.email@example.com
./scripts/findmy.sh show-username

If the username is missing, stop and ask the user once for their Apple ID email. After that, persist it via findmy.sh set-username and reuse the state file.

Auth flow

Check current auth:

./scripts/findmy.sh auth-status

If not logged in:

./scripts/findmy.sh auth-login

That opens the current pyicloud auth flow using the stored username. The user may need to enter password and 2FA.

Core commands

Resolve a person to the best device automatically

When the user asks for a person's location in natural language, do not force them to name a device. Use scripts/person-find.py first.

Do not hardcode real family names into the skill. Store person aliases in a local state file instead:

~/.local/state/icloud-findmy-cli/people-aliases.json

Set aliases with neutral labels such as me, partner, kid, or any user-chosen nickname:

./scripts/findmy.sh set-person-alias me "Roland"
./scripts/findmy.sh set-person-alias partner "Gabriella"
./scripts/findmy.sh show-person-aliases

Default resolution order:

  1. Match the person's iPhone
  2. If no matching iPhone with location is available, match their Apple Watch
  3. If neither is available, fall back to another matching device
  4. If nothing matches, say so clearly

Examples:

./scripts/person-find.py "partner"
./scripts/person-find.py "me"
./scripts/person-find.py "kid"

List all devices with live location

./scripts/findmy.sh list

This runs:

icloud devices list --username "$USERNAME" --with-family --locate --format json

Show one device in detail

./scripts/findmy.sh show "Roland’s iPhone 14 Pro"

Find devices by fuzzy name match

./scripts/device-find.py "Gabriella"
./scripts/device-find.py "iPhone 14"

Output shape

The main command returns JSON list entries with fields like:

  • id
  • name
  • display_name
  • device_class
  • device_model
  • battery_level
  • battery_status
  • location.latitude
  • location.longitude
  • location.timeStamp
  • location.horizontalAccuracy

Prefer JSON parsing over text scraping.

Working rules

  • Use this skill for Apple devices and family-shared devices, not shared-person Find My contacts.
  • If the user asks for a person like "where is my partner?", use scripts/person-find.py instead of asking for a device name.
  • Prefer user-defined aliases from people-aliases.json, not hardcoded real names in the skill.
  • Prefer iPhone first, then Apple Watch, then other matching devices.
  • Prefer findmy.sh list first when broad inspection is needed.
  • Use findmy.sh show when the exact device name is already known.
  • If auth breaks after an upgrade, re-check with icloud --help, then re-run findmy.sh auth-login.
  • Do not ask for the Apple ID again if the state file already has it.
  • Do not store passwords in the state file.

Limits

  • This skill does not track shared people from the Find My People tab.
  • Some accessories may return location: null or stale data.
  • Family device visibility depends on Find My / Family Sharing state.

Scripts

  • scripts/findmy.sh is the main wrapper for username storage, auth, device list, and device show
  • scripts/state.sh handles deterministic local state storage
  • scripts/device-find.py filters devices by case-insensitive substring match
  • scripts/person-find.py resolves a person alias/name to the best matching device, preferring iPhone then Watch