recherche
Maisoninterface Webjs tutorielComment publier un lien avec une carte intégrée sur Bluesky avec JavaScript

How to post a link with embed card on Bluesky with JavaScript

Alors que Bluesky continue de gagner en popularité, de plus en plus d'outils sont développés autour de lui. L'une des applications les plus populaires est la planification et l'automatisation des publications.

Cependant, l'API de Bluesky n'offre actuellement pas de moyen direct de publier des liens avec des cartes OpenGraph. Cela peut être un défi pour les utilisateurs qui souhaitent partager des liens avec des aperçus attrayants.

Dans ce tutoriel, nous allons vous montrer comment utiliser JavaScript pour publier un lien sur Bluesky avec une carte intégrée. Cette méthode contourne la limitation de l'API, vous permettant de partager des liens plus efficacement.

Commençons !

Publication sur Bluesky à l'aide de l'API JavaScript

Travailler avec l'API Bluesky est assez simple. Les docs sont plutôt bons. Tout d'abord, nous devons installer le package @atproto/api de NPM :

npm install @atproto/api

Ensuite, nous créons une instance de l'agent Bluesky et nous nous connectons avec vos informations d'identification Bluesky.

Je recommande de créer un nouveau mot de passe d'application pour votre compte Bluesky, plutôt que d'utiliser votre mot de passe principal. Cela facilitera la révocation de l'accès si nécessaire et garantira la sécurité de votre compte principal. Assurez-vous également de définir les variables d'environnement BLUESKY_USERNAME et BLUESKY_PASSWORD dans votre projet.

import { AtpAgent } from "@atproto/api"

const getBlueskyAgent = async () => {
  const agent = new AtpAgent({
    service: "https://bsky.social",
  })

  await agent.login({
    identifier: process.env.BLUESKY_USERNAME!,
    password: process.env.BLUESKY_PASSWORD!,
  })

  return agent
}

Une fois que vous avez l'agent, vous pouvez l'utiliser pour publier sur Bluesky, ce qui est assez simple.

/**
 * Send a post to Bluesky
 * @param text - The text of the post
 */
export const sendBlueskyPost = async (text: string, url?: string) => {
  const agent = await getBlueskyAgent()

  await agent.post({ text })
}

Et voilà, vous venez d'envoyer un post à Bluesky. Malheureusement, même si vous incluez un lien dans le texte de votre message, il n'est pas automatiquement converti en lien d'ancrage. Nous allons résoudre ce problème sous peu.

Détecter automatiquement les liens à facettes sur Bluesky

Lorsque vous incluez un lien dans le texte de votre message sur Bluesky, il n'est pas automatiquement transformé en lien d'ancrage. Au lieu de cela, il apparaît sous forme de texte brut.

Pour résoudre ce problème, vous devez détecter les liens et les convertir en liens à facettes.

Bien qu'il existe des méthodes manuelles pour y parvenir, heureusement, ATProto fournit une classe RichText qui peut détecter automatiquement les liens et les convertir en liens à facettes.

import { RichText } from "@atproto/api"

/**
 * Send a post to Bluesky
 * @param text - The text of the post
 */
export const sendBlueskyPost = async (text: string) => {
  const agent = await getBlueskyAgent()
  const rt = new RichText({ text })
  await rt.detectFacets(agent)

  await agent.post({
    text: rt.text,
    facets: rt.facets,
  })
}

C'est super, mais nous devons quand même ajouter la carte intégrée à la publication. Faisons-le ensuite.

Création d'une carte intégrée sur Bluesky

Inclure un lien dans votre message, c'est bien, mais c'est encore mieux si vous pouvez ajouter une carte intégrée.

Pour y parvenir, nous devons utiliser la fonctionnalité d'intégration de carte de site Web de Bluesky. Essentiellement, vous ajoutez une clé d'intégration à votre publication qui comprend, au minimum, une URL, un titre et une description.

Il existe plusieurs façons d'obtenir les données requises. Si vous le connaissez au moment de la publication, vous pouvez simplement le coder en dur. Sinon, vous pouvez récupérer l'URL pour récupérer le titre, la description et l'image.

Cependant, je trouve que le moyen le plus simple est d'utiliser l'API Dub.co Metatags pour récupérer les métadonnées de l'URL, puis de créer la carte intégrée à partir de celles-ci. Voyons comment cela fonctionne.

npm install @atproto/api

Nous avons créé une fonction simple qui récupère les métadonnées de l'URL, puis renvoie les données dans un format clair.

Ensuite, créons une fonction qui utilise les métadonnées pour télécharger l'image sur Bluesky, puis créons la carte intégrée.

import { AtpAgent } from "@atproto/api"

const getBlueskyAgent = async () => {
  const agent = new AtpAgent({
    service: "https://bsky.social",
  })

  await agent.login({
    identifier: process.env.BLUESKY_USERNAME!,
    password: process.env.BLUESKY_PASSWORD!,
  })

  return agent
}

Une fois que nous avons la carte intégrée, nous pouvons l'ajouter à la publication.

/**
 * Send a post to Bluesky
 * @param text - The text of the post
 */
export const sendBlueskyPost = async (text: string, url?: string) => {
  const agent = await getBlueskyAgent()

  await agent.post({ text })
}

Nous avons maintenant une fonction qui envoie un message à Bluesky avec une carte intégrée.

Exemple complet

J'espère que si vous avez suivi, vous devriez maintenant avoir un code complet. Sinon, voici le code complet que vous pouvez copier et coller dans votre projet. Il :

  • Crée un agent Bluesky
  • Récupère les métadonnées de l'URL
  • Crée une carte intégrée
  • Envoie une publication à Bluesky avec la carte intégrée et détecte automatiquement les liens à facettes
import { RichText } from "@atproto/api"

/**
 * Send a post to Bluesky
 * @param text - The text of the post
 */
export const sendBlueskyPost = async (text: string) => {
  const agent = await getBlueskyAgent()
  const rt = new RichText({ text })
  await rt.detectFacets(agent)

  await agent.post({
    text: rt.text,
    facets: rt.facets,
  })
}

J'espère que vous avez trouvé ce tutoriel utile et que vous envisagerez de l'utiliser dans vos propres projets.

Bonne publication !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
JavaScript: Explorer la polyvalence d'un langage WebJavaScript: Explorer la polyvalence d'un langage WebApr 11, 2025 am 12:01 AM

JavaScript est le langage central du développement Web moderne et est largement utilisé pour sa diversité et sa flexibilité. 1) Développement frontal: construire des pages Web dynamiques et des applications à une seule page via les opérations DOM et les cadres modernes (tels que React, Vue.js, Angular). 2) Développement côté serveur: Node.js utilise un modèle d'E / S non bloquant pour gérer une concurrence élevée et des applications en temps réel. 3) Développement des applications mobiles et de bureau: le développement de la plate-forme multiplateuse est réalisé par réact noral et électron pour améliorer l'efficacité du développement.

L'évolution de JavaScript: tendances actuelles et perspectives d'avenirL'évolution de JavaScript: tendances actuelles et perspectives d'avenirApr 10, 2025 am 09:33 AM

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

Démystifier javascript: ce qu'il fait et pourquoi c'est importantDémystifier javascript: ce qu'il fait et pourquoi c'est importantApr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Python ou JavaScript est-il meilleur?Python ou JavaScript est-il meilleur?Apr 06, 2025 am 12:14 AM

Python est plus adapté à la science des données et à l'apprentissage automatique, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python est connu pour sa syntaxe concise et son écosystème de bibliothèque riche, et convient à l'analyse des données et au développement Web. 2. JavaScript est le cœur du développement frontal. Node.js prend en charge la programmation côté serveur et convient au développement complet.

Comment installer JavaScript?Comment installer JavaScript?Apr 05, 2025 am 12:16 AM

JavaScript ne nécessite pas d'installation car il est déjà intégré à des navigateurs modernes. Vous n'avez besoin que d'un éditeur de texte et d'un navigateur pour commencer. 1) Dans l'environnement du navigateur, exécutez-le en intégrant le fichier HTML via des balises. 2) Dans l'environnement Node.js, après avoir téléchargé et installé Node.js, exécutez le fichier JavaScript via la ligne de commande.

Comment envoyer des notifications avant le début d'une tâche en quartz?Comment envoyer des notifications avant le début d'une tâche en quartz?Apr 04, 2025 pm 09:24 PM

Comment envoyer à l'avance des notifications de tâches en quartz lors de l'utilisation du minuteur de quartz pour planifier une tâche, le temps d'exécution de la tâche est défini par l'expression CRON. Maintenant...

Dans JavaScript, comment obtenir des paramètres d'une fonction sur une chaîne prototype dans un constructeur?Dans JavaScript, comment obtenir des paramètres d'une fonction sur une chaîne prototype dans un constructeur?Apr 04, 2025 pm 09:21 PM

Comment obtenir les paramètres des fonctions sur les chaînes prototypes en JavaScript dans la programmation JavaScript, la compréhension et la manipulation des paramètres de fonction sur les chaînes prototypes est une tâche commune et importante ...

Quelle est la raison de la défaillance du déplacement de style dynamique Vue.js dans le WECHAT Mini Program WebView?Quelle est la raison de la défaillance du déplacement de style dynamique Vue.js dans le WECHAT Mini Program WebView?Apr 04, 2025 pm 09:18 PM

Analyse de la raison pour laquelle la défaillance du déplacement de style dynamique de l'utilisation de Vue.js dans la vue Web de l'applet WeChat utilise Vue.js ...

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP