← Todos los NIPs

NIP-39

Vincular perfiles con otras plataformas

BorradorEventos

Demuestra que también controlas cuentas en otros sitios (GitHub, Mastodon, Bluesky, Telegram, Discord…): enuméralas en un evento kind 10011, cada una apuntando a una publicación pública donde esa cuenta menciona tu npub.

De un vistazo

Estado
En uso, pero todavía puede cambiar.
Kinds
Tags
  • i
Último cambio
27 sept 2026

Pruébalo

Edita el formulario o el JSON: ambos se mantienen sincronizados, la insignia indica si el resultado es válido y, al tocar cualquier campo, se explica qué hace.

Ejemplos
Válido 1 nota

Aún sin firmar · Solo claves de demo. Las claves secretas de estos personajes son públicas a propósito.

Formulario
1 ene 2025, 0:00 UTC

Contenido

Este kind no lleva contenido: déjalo como un string vacío.

Tags

  1. i Recomendado

    Una identidad declarada con su prueba.

  2. i Recomendado

    Una identidad declarada con su prueba.

  3. i Recomendado

    Una identidad declarada con su prueba.

Añadir tag

Cómo funciona este NIP

Paso 1 de 4

Enumera tus cuentas

Publica un kind 10011 con un tag i por cuenta: "plataforma:identidad", por ejemplo "github:alice-nostr". Los nombres de plataforma solo usan a-z, 0-9 y ._-/ y nunca dos puntos.

En el curso

Ningún capítulo del curso cubre este NIP todavía. El editor de arriba es la forma más rápida de empezar.

Se basa en

Ver también

Especificación

El texto de las especificaciones se cita en inglés del repositorio nostr-protocol/nips. Nuestras explicaciones y la interfaz están traducidas. Código fuente en GitHub en el commit 0046368

Leer la especificación497 palabras, citadas del repositorio en el commit 0046368.

Abstract

Users can declare their control over one or more online identities such as usernames, profile pages, keypairs in kind 10011 using i tags.

{
  "kind": 10011,
  "tags": [
    ["i", "github:semisol", "9721ce4ee4fceb91c9711ca2a6c9a5ab"],
    ["i", "twitter:semisol_public", "1619358434134196225"],
    ["i", "mastodon:bitcoinhackers.org/@semisol", "109775066355589974"],
    ["i", "telegram:1087295469", "nostrdirectory/770"]
  ],
  // other fields...
}

An i tag MUST have two parameters, which are defined as the following:

  1. platform:identity: This is the platform name (for example github) and the identity on that platform (for example semisol) joined together with :.
  2. proof: String or object that points to the proof of owning this identity.

Clients SHOULD process any i tags with more than 2 values for future extensibility. Identity provider names SHOULD only include a-z, 0-9 and the characters ._-/ and MUST NOT include :. Identity names SHOULD be normalized if possible by replacing uppercase letters with lowercase letters, and if there are multiple aliases for an entity the primary one should be used.

Verification text

For every claim type, the proof SHOULD have the text:

Verifying that I control the following Nostr public key: <npub encoded public key>

Clients verifying a claim SHOULD accept any proof published by <identity> that contains the user's npub, because proofs created under earlier versions of this NIP use different text.

Claim types

github

Identity: A GitHub username.

Proof: A GitHub Gist ID. This Gist should be created by <identity> with a single file that has the verification text. This can be located at https://gist.github.com/<identity>/<proof>.

twitter

Identity: A Twitter username.

Proof: A Tweet ID. The tweet should be posted by <identity> and have the verification text. This can be located at https://twitter.com/<identity>/status/<proof>.

mastodon

Identity: A Mastodon instance and username in the format <instance>/@<username>.

Proof: A Mastodon post ID. This post should be published by <username>@<instance> and have the verification text. This can be located at https://<identity>/<proof>.

telegram

Identity: A Telegram user ID.

Proof: A string in the format <ref>/<id> which points to a message published in the public channel or group with name <ref> and message ID <id>. This message should be sent by user ID <identity> and have the verification text. This can be located at https://t.me/<proof>.

bluesky

Identity: A Bluesky handle, without the leading @ (for example alice.bsky.social).

Proof: The record key of a Bluesky post. This post should be published by <identity> and have the verification text. This can be located at https://bsky.app/profile/<identity>/post/<proof>.

discord

Identity: A Discord username.

Proof: A string in the format <guild>/<channel>/<message> which points to a message with ID <message> in the channel with ID <channel> of the server with ID <guild>. This message should be sent by <identity> and have the verification text. This can be located at https://discord.com/channels/<proof>.

Discord messages can only be read by members of the server they were posted in, so clients that cannot access the server will not be able to verify this claim.