Use this skill when you need to inspect or update an OpenClaw agent identity for the current workspace, especially when that workspace is connected to a Discord bot and you want to synchronize Discord profile data into IDENTITY.md.
This skill is for:
IDENTITY.mdopenclaw.jsonAvatar: from the Discord bot profileworkspace/avatars/Discord: metadata section into IDENTITY.mdThis skill is not for changing the Discord bot account itself. It only reads bot metadata from the Discord API and reflects it into OpenClaw identity files.
When using this skill, follow these rules:
Read openclaw.json from the workspace where the skill is installed or where the user explicitly points you.
Read the Discord channel token from this workspace's openclaw.json, not from another agent or workspace.
Prefer the single enabled Discord channel. If there are multiple candidates, ask the user which channel to use, or require an explicit channel name.
If IDENTITY.md has no Avatar:, populate it explicitly.
Avatar:.Use the non-animated static Discord CDN URL:
https://cdn.discordapp.com/avatars/
Save the image as:
workspace/avatars/discord-
Avatar: is missing, set it. Default behavior: write the static Discord CDN URL into Avatar:.
Avatar: already exists and differs, do not silently overwrite it.Ask the user whether they want to replace the existing avatar value.
Discord: if Discord metadata is available.Save only non-empty fields among:
For example, omit email if it is null, and omit bio if it is empty.
Only make local, minimal edits.
Do not echo it. Recommend rotation if it has been exposed.
You may receive one or more of the following:
IDENTITY.mdopenclaw.jsonExample Discord bot profile payload returned by Discord /users/@me:
{
"id": "1471414603580838030",
"username": "Andrew",
"avatar": "650ada97187f9be350f13bf25ae136d8",
"discriminator": "9171",
"public_flags": 0,
"flags": 0,
"bot": true,
"banner": null,
"accent_color": null,
"global_name": null,
"avatar_decoration_data": null,
"collectibles": null,
"display_name_styles": null,
"banner_color": null,
"clan": null,
"primary_guild": null,
"mfa_enabled": true,
"locale": "en-US",
"premium_type": 0,
"email": null,
"verified": true,
"bio": ""
}
When editing identity data, the desired result is:
workspace/avatars/Avatar: present in IDENTITY.mdDiscord: present in IDENTITY.md if there is any non-empty Discord metadata to storePreferred IDENTITY.md structure:
# IDENTITY
- **Name:** Andrew
- **Avatar:** https://cdn.discordapp.com/avatars/1471414603580838030/650ada97187f9be350f13bf25ae136d8.png
- **Discord:**
- username: Andrew
- locale: en-US
If email is not null and bio is not empty, include them too:
- **Discord:**
- username: Andrew
- locale: en-US
- email: andrew@example.com
- bio: Agent for the noodles workspace.
IDENTITY.md does not exist yetopenclaw.json./users/@me using that channel token.workspace/avatars/.IDENTITY.md with at least Avatar: and Discord: entries.IDENTITY.md exists but has no Avatar:openclaw.json./users/@me.workspace/avatars/.Avatar: .Discord: with the non-empty metadata fields.IDENTITY.md already has Avatar:openclaw.json and fetch the Discord bot profile.Discord: metadata fields.IDENTITY.mdTreat the file as Markdown with bold field labels such as:
- Name: value- Avatar: value- Discord: followed by nested bullet itemsAccept small formatting variations, but preserve the user’s original style where possible.
Common layouts:
~/.openclaw/workspace~/.openclaw/workspace/IDENTITY.md~/.openclaw/workspace/openclaw.json~/.openclaw/workspace/avatarsIf the user has multiple agents or workspaces, operate only on the explicitly targeted one.
If you need automation, see scripts/sync_discord_identity.py in this skill package. It:
openclaw.json/users/@meworkspace/avatars/IDENTITY.md--force-avatar is used--channel when multiple Discord channels exist in one workspacepython scripts/sync_discord_identity.py \
--workspace ~/.openclaw/workspace
python scripts/sync_discord_identity.py \
--workspace ~/.openclaw/workspace-beagle-profile
python scripts/sync_discord_identity.py \
--workspace ~/.openclaw/workspace \
--channel noodles
python scripts/sync_discord_identity.py \
--workspace ~/.openclaw/workspace \
--force-avatar
To publish this skill to ClawHub:
clawhub publish . --version 0.1.0 --changelog "Initial release" --tags latest
For users to install it:
openclaw skills install sync-discord-identity
Start a new OpenClaw session after installing so the skill is loaded.
This skill is complete only when all applicable conditions are satisfied:
workspace/avatars/IDENTITY.md contains Avatar: if missing beforeDiscord: includes non-empty username/locale/email/bio fields only共 1 个版本