Vous souhaitez automatiser vos publications sur Twitter (désormais X) pour partager des images utiles ? Créez un bot qui tweete des photos accompagnées de descriptions pertinentes. Hébergez-le sur un Raspberry Pi avec Node.js pour une solution fiable et économique. Suivez ce guide détaillé, testé sur Raspberry Pi 3B+ et versions récentes.

Sur Twitter, de nombreux comptes automatisés publient photos, faits ou illustrations thématiques, attirant une audience fidèle. Au-delà des likes et retweets, ce projet renforce vos compétences en programmation Node.js et automation IoT.
Nous avons déjà couvert un bot basique en Python sur Raspberry Pi. Ici, utilisons Node.js pour un bot photo-tweeter : images de la Première Guerre mondiale avec citations et attributions, stockées dans un tableau simple.
Collectez des images libres de droits (vos propres photos, Creative Commons ou open source). Notez attributions et descriptions pour chaque. Nous les intégrons plus tard.
Assurez-vous d'avoir un Raspberry Pi 2 ou supérieur (testé sur Pi 3B+ et Pi 5) avec Raspberry Pi OS installé.
Dans le terminal (ou SSH), mettez à jour le système :
sudo apt update && sudo apt upgrade -yRedémarrez :
sudo rebootTéléchargez et installez Node.js LTS (version 20.x recommandée pour 2024) :
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -sudo apt-get install -y nodejsVérifiez l'installation :
node -vVous devriez voir v20.x.x ou supérieur. npm est inclus.
Créez un répertoire :
mkdir twitterbot && cd twitterbotInitialisez le projet :
npm init -yInstallez Twit (note : bibliothèque legacy pour API v1.1 ; pour API v2 moderne, préférez twitter-api-v2) :
npm install twitCréez server.js :
nano server.jsAjoutez un test :
console.log('Bot Twitter prêt !');Exécutez : node server.js. Succès confirmé.
Créez un compte Twitter dédié. Accédez à developer.twitter.com, demandez l'accès développeur (soumettez un usage légitime anti-spam).
Créez une app, définissez permissions "Lecture + Écriture". Générez :
Créez config.js :
nano config.jsmodule.exports = {
consumer_key: 'VOTRE_CLE',
consumer_secret: 'VOTRE_SECRET',
access_token: 'VOTRE_TOKEN',
access_token_secret: 'VOTRE_TOKEN_SECRET'
};
Dans server.js, ajoutez :
const Twit = require('twit');
const config = require('./config.js');
const T = new Twit(config);
T.post('statuses/update', { status: 'Mon premier tweet via bot !' }, (err, data) => {
console.log(data);
});Exécutez node server.js. Vérifiez Twitter.

Créez images/ et copiez 10-12 images (formats supportés : JPG, PNG <5Mo).
Dans server.js, ajoutez (après requires) :
const fs = require('fs');
const path = require('path');
function randomFromArray(images) {
return images[Math.floor(Math.random() * images.length)];
}
function uploadRandomImage() {
const images = fs.readdirSync(path.join(__dirname, 'images/'));
const imagepath = path.join(__dirname, '/images/' + randomFromArray(images));
const b64content = fs.readFileSync(imagepath, { encoding: 'base64' });
T.post('media/upload', { media_data: b64content }, (err, data, response) => {
if (err) { console.error('Erreur:', err); return; }
console.log('Image uploadée ! Tweeting...');
T.post('statuses/update', {
media_ids: [data.media_id_string]
}, (err, data, response) => {
if (err) { console.error('Erreur:', err); } else {
console.log('Tweet posté !');
}
});
});
}
setInterval(uploadRandomImage, 60000); // Toutes les 60s - Augmentez pour respecter limites API
Exécutez node server.js. Ctrl+C pour arrêter.
Créez images.js :
nano images.jsmodule.exports = [
{ file: 'image1.jpg', text: 'Description #1. Source: https://example.com/1' },
{ file: 'image2.jpg', text: 'Description #2. Source: https://example.com/2' }
// Ajoutez vos images
];Modifiez uploadRandomImage pour utiliser images.js et tweeter { status: img.text, media_ids: [...] }.

Récapitulatif :
Adaptez à tout thème. Pour persistance, utilisez PM2 (npm i -g pm2; pm2 start server.js). Consultez nos autres projets Raspberry Pi pour bots avancés.
Note : API Twitter v1.1 dépréciée ; migrez vers v2 pour fiabilité future.
[]