mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-11 17:26:45 +02:00
Adds a new workflow to Social Flow for automated social media posting, integrating AI for text generation and Cloudinary for image uploads via an HTTP request node. Replit-Commit-Author: Agent Replit-Commit-Session-Id: ae4037a0-2a6f-4530-9bac-79b543286bda Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/397bca8c-984f-43ff-841a-10897aeb8140/ae4037a0-2a6f-4530-9bac-79b543286bda/BuArSJC
322 lines
9.1 KiB
JSON
322 lines
9.1 KiB
JSON
{
|
|
"name": "My workflow 8",
|
|
"nodes": [
|
|
{
|
|
"parameters": {
|
|
"formTitle": "SocialFlow",
|
|
"formFields": {
|
|
"values": [
|
|
{
|
|
"fieldLabel": "Non du produit",
|
|
"placeholder": "nom_produit",
|
|
"requiredField": true
|
|
},
|
|
{
|
|
"fieldLabel": "Prix",
|
|
"placeholder": "prix",
|
|
"requiredField": true
|
|
},
|
|
{
|
|
"fieldLabel": "Caractéristiques",
|
|
"placeholder": "caractéristiques"
|
|
},
|
|
{
|
|
"fieldLabel": "Promo",
|
|
"placeholder": "promo"
|
|
},
|
|
{
|
|
"fieldLabel": "Date publication",
|
|
"fieldType": "date",
|
|
"requiredField": true
|
|
},
|
|
{
|
|
"fieldLabel": "Heure de publication (HH:mm)",
|
|
"placeholder": "heure_publication",
|
|
"requiredField": true
|
|
},
|
|
{
|
|
"fieldLabel": "Photo",
|
|
"fieldType": "file",
|
|
"acceptFileTypes": "photo"
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"type": "n8n-nodes-base.formTrigger",
|
|
"typeVersion": 2.2,
|
|
"position": [
|
|
-720,
|
|
160
|
|
],
|
|
"id": "3441e9d7-35ff-4f14-bee8-78397d0e2e28",
|
|
"name": "On form submission",
|
|
"webhookId": "17357858-667e-4a3d-afd1-82039f41c927"
|
|
},
|
|
{
|
|
"parameters": {
|
|
"method": "POST",
|
|
"url": "=https://api.cloudinary.com/v1_1/dspr8yjfu/image/upload",
|
|
"sendBody": true,
|
|
"contentType": "multipart-form-data",
|
|
"bodyParameters": {
|
|
"parameters": [
|
|
{
|
|
"name": "upload_preset",
|
|
"value": "=upload_n8n"
|
|
},
|
|
{
|
|
"parameterType": "formBinaryData",
|
|
"name": "file",
|
|
"inputDataFieldName": "Photo"
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"type": "n8n-nodes-base.httpRequest",
|
|
"typeVersion": 4.2,
|
|
"position": [
|
|
-208,
|
|
16
|
|
],
|
|
"id": "49ff16a6-a004-4ff4-a1dc-cb6902f7f46a",
|
|
"name": "HTTP Request"
|
|
},
|
|
{
|
|
"parameters": {
|
|
"assignments": {
|
|
"assignments": [
|
|
{
|
|
"id": "14257b6b-82c8-4151-85a5-f56ab814f6f3",
|
|
"name": "image_ready_url",
|
|
"value": "={{$json.secure_url\n ? $json.secure_url.replace('/upload/','/upload/c_fill,g_auto,h_1350,w_1080,q_auto,f_auto,e_auto_contrast,e_auto_color,e_sharpen:50/')\n : ''}}\n",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"id": "74f9dbae-0e18-4cdb-b316-5976f65ad6c8",
|
|
"name": "image_public_id",
|
|
"value": "={{$json.public_id}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"includeOtherFields": true,
|
|
"options": {}
|
|
},
|
|
"type": "n8n-nodes-base.set",
|
|
"typeVersion": 3.4,
|
|
"position": [
|
|
16,
|
|
16
|
|
],
|
|
"id": "dc95401f-403a-4a72-87e6-622709b10046",
|
|
"name": "Edit Fields"
|
|
},
|
|
{
|
|
"parameters": {
|
|
"promptType": "define",
|
|
"text": "=Langue: fr\nPAS DE TEXTE AVANT OU APRÈS.\n\nContraintes:\n- Accroche d'ouverture engageante\n- 1-2 phrases sur bénéfice client, pas style catalogue\n- Pas de lien, pas d'URL\n- 3-5 hashtags ciblés (locaux/thématiques) Ajouter #lafoirfouille\n- Ton chaleureux, concret, non agressif\n- Maximum 250 caractères \n\nContexte:\n- Produit: {{ $('On form submission').item.json['Non du produit'] }}\n- Prix: {{ $('On form submission').item.json.Prix }}\n- Caractéristiques: {{ $('On form submission').item.json['Caractéristiques'] }}\n- Promo: {{$json.promo || \"aucune\"}}\n",
|
|
"messages": {
|
|
"messageValues": [
|
|
{
|
|
"message": "Tu es un community manager de boutique physique. Tu écris pour Facebook. Objectif: engagement + visites en magasin. Pas de lien web. pas de json que du texte pure avec quelques emoji. structure le texte pour un post facebook et instagram - ne parle pas de boutique locale."
|
|
}
|
|
]
|
|
},
|
|
"batching": {}
|
|
},
|
|
"type": "@n8n/n8n-nodes-langchain.chainLlm",
|
|
"typeVersion": 1.7,
|
|
"position": [
|
|
240,
|
|
16
|
|
],
|
|
"id": "b7de85b4-8a06-4cd6-b3b1-dd28f7e30720",
|
|
"name": "Basic LLM Chain",
|
|
"alwaysOutputData": true
|
|
},
|
|
{
|
|
"parameters": {
|
|
"model": "openai/gpt-4o",
|
|
"options": {}
|
|
},
|
|
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
224,
|
|
320
|
|
],
|
|
"id": "03c7dc91-a5e0-4b58-946f-7217cfbb7f22",
|
|
"name": "OpenRouter Chat Model",
|
|
"credentials": {
|
|
"openRouterApi": {
|
|
"id": "QrDzqP7MluNzhC1L",
|
|
"name": "OpenRouter account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"method": "POST",
|
|
"url": "=https://graph.facebook.com/v23.0/119315771483782/photos",
|
|
"sendQuery": true,
|
|
"queryParameters": {
|
|
"parameters": [
|
|
{
|
|
"name": "url",
|
|
"value": "={{ $('Edit Fields').first().json.image_ready_url.trim().replace(/\\)+$/,'') }}\n"
|
|
},
|
|
{
|
|
"name": "message",
|
|
"value": "={{ $json.text }}"
|
|
},
|
|
{
|
|
"name": "access_token",
|
|
"value": "EAASQALmsF1UBPlhtfZBbZCkuu9fZAbr8OpEAXuXcLuZCAx6F2BmhZBprak0AQfdqKZA0aGsR8pDtpqmkBjb7lIqZCadMJ919IrvwwE75nEo1uZCIIuAJDqkq3Cl9feQMX126sPIabGerrLtd8Dw5NGlQTNzYB7KYqUgcjZA6N5fDt7Bn4pMKMzsh0p5MCxMxq5xV1qyNLVykNMbgE7HZBkas1oLdeFj3M2hAZAYlS4NBuoZD"
|
|
},
|
|
{
|
|
"name": "published",
|
|
"value": "=0"
|
|
},
|
|
{
|
|
"name": "scheduled_publish_time",
|
|
"value": "={{ $json.scheduled_publish_time }}"
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"type": "n8n-nodes-base.httpRequest",
|
|
"typeVersion": 4.2,
|
|
"position": [
|
|
1040,
|
|
-16
|
|
],
|
|
"id": "6fbaf6c3-1744-4116-b599-047a978ba504",
|
|
"name": "Facebook Post Photo"
|
|
},
|
|
{
|
|
"parameters": {
|
|
"mode": "runOnceForEachItem",
|
|
"jsCode": "// Récupère les valeurs depuis le Form Trigger, pas depuis l'item courant\nconst dateStr = $item(0).$node[\"On form submission\"].json[\"Date publication\"];\nconst timeStr = $item(0).$node[\"On form submission\"].json[\"Heure de publication (HH:mm)\"];\n\nif (!dateStr || !timeStr) {\n throw new Error(\"Champs manquants: \" + JSON.stringify({ dateStr, timeStr }));\n}\n\nconst [y,m,d] = dateStr.split('-').map(Number);\nconst [H,Mi] = timeStr.split(':').map(Number);\n\n// Epoch UTC\nlet ts = Math.floor(Date.UTC(y, m - 1, d, H, Mi) / 1000);\n\n// Sécurité: forcer ≥ maintenant+600s\nconst now = Math.floor(Date.now()/1000);\nif (ts < now + 600) ts = now + 1200;\n\nreturn { json: { ...$json, scheduled_publish_time: ts } };\n"
|
|
},
|
|
"type": "n8n-nodes-base.code",
|
|
"typeVersion": 2,
|
|
"position": [
|
|
816,
|
|
144
|
|
],
|
|
"id": "93f14550-2ccd-4da7-bfb7-7ecacee3e830",
|
|
"name": "Code",
|
|
"alwaysOutputData": true
|
|
},
|
|
{
|
|
"parameters": {},
|
|
"type": "n8n-nodes-base.merge",
|
|
"typeVersion": 3.2,
|
|
"position": [
|
|
592,
|
|
144
|
|
],
|
|
"id": "557d9b2a-ceb1-42d8-ad2d-29e8c2533d51",
|
|
"name": "Merge"
|
|
}
|
|
],
|
|
"pinData": {},
|
|
"connections": {
|
|
"On form submission": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "HTTP Request",
|
|
"type": "main",
|
|
"index": 0
|
|
},
|
|
{
|
|
"node": "Merge",
|
|
"type": "main",
|
|
"index": 1
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"HTTP Request": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Edit Fields",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"OpenRouter Chat Model": {
|
|
"ai_languageModel": [
|
|
[
|
|
{
|
|
"node": "Basic LLM Chain",
|
|
"type": "ai_languageModel",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Edit Fields": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Basic LLM Chain",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Basic LLM Chain": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Merge",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Code": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Facebook Post Photo",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Merge": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Code",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
}
|
|
},
|
|
"active": false,
|
|
"settings": {
|
|
"executionOrder": "v1"
|
|
},
|
|
"versionId": "72a43b73-4460-49de-88aa-90afde0ef73b",
|
|
"meta": {
|
|
"templateCredsSetupCompleted": true,
|
|
"instanceId": "95265e6405e55fa03a3687565ed8e8c464bd659d0d56a9696d7d25f954abf511"
|
|
},
|
|
"id": "cTnh6OMO9wxPEPBS",
|
|
"tags": []
|
|
} |