AutomationFlowsWeb Scraping › Sentientagi

Sentientagi

SentientAGI. Uses httpRequest. Webhook trigger; 13 nodes.

Webhook trigger★★★★☆ complexity13 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 13 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "SentientAGI",
  "nodes": [
    {
      "parameters": {
        "fieldToSplitOut": "tweets",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        -96,
        -256
      ],
      "id": "235521e5-1ee9-4817-8fa8-886ea1b5054b",
      "name": "Split Out",
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "url": "=https://api.twitterapi.io/twitter/tweet/advanced_search",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "={{$json.query}}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        560,
        -496
      ],
      "id": "268a74cc-25d9-4ff2-8635-584c8f5ab126",
      "name": "Sentient",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// T\u00fcm item'lar\u0131 al\nconst items = $input.all().map(i => i.json);\n\n// View say\u0131s\u0131n\u0131 olas\u0131 alanlardan \u00e7ek\nconst getViews = (j) => {\n  const cands = [\n    j.viewCount, j.views, j.view_count,\n    j.metrics?.viewCount, j.metrics?.impression_count,\n    j.impression_count, j.legacy?.views?.count, j.legacy?.view_count\n  ];\n  for (const v of cands) {\n    const n = Number(v);\n    if (Number.isFinite(n)) return n;\n  }\n  return 0;\n};\n\n// Top10'u bul (view'e g\u00f6re azalan)\nconst top10 = items\n  .map(j => ({ text: j.text ?? j.data?.text ?? j.legacy?.full_text ?? \"\", views: getViews(j) }))\n  .filter(r => r.text)\n  .sort((a,b) => b.views - a.views)\n  .slice(0, 10);\n\n// Sadece metinleri alt alta yaz\nconst joined = top10.map(r => r.text).join(\"\\n\");\n\n// Tek \u00e7\u0131kt\u0131: sadece text\nreturn [{ json: { text: joined } }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        128,
        -256
      ],
      "id": "1092965c-69dd-45a4-b005-c26e4d682a6e",
      "name": "Tweets"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.fireworks.ai/inference/v1/chat/completions",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer fw_3ZN44gAXzejooyEFaJd6wPz2"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ $json.body }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        576,
        -256
      ],
      "id": "2006edab-5bb2-4b46-92e2-71cc9fc9c036",
      "name": "Dobby"
    },
    {
      "parameters": {
        "jsCode": "// Top10 metinleri ve mod se\u00e7imi\nconst tweetsText = $json.text ?? \"\";\nconst mode = $('Webhook').first().json.body.mode ?? \"motive\";\nconst username = $('Webhook').first().json.body.username ?? \"user\";\n\n\n// Geli\u015ftirilmi\u015f Dobby prompt\nconst content = `You are Dobby, an unhinged AI analyst who gives brutal crypto/Web3 reality checks.\nYour personality: Sharp, direct, uses crypto slang, occasionally drops f-bombs when content is really bad, but stays insightful.\n\nYou're analyzing @${username}'s recent tweets. Give feedback based on the selected mode while maintaining your edgy personality.\n\nMODE STYLES:\n- motive \u2192 Find genuine strengths and hype them up with real enthusiasm. \"Your [specific thing] actually slaps, here's why...\"\n- constructive \u2192 Balanced roasting. Point out what works, what's trash, specific improvements. \"You're killing it with X, but Y is mid...\"\n- harsh \u2192 Full savage mode. Tear apart their strategy with brutal honesty and specific examples. \"This shit is cringe because...\"\n\nRULES:\n- Keep it to 5-7 sentences MAX (punchy and memorable)\n- Reference actual patterns from their tweets (don't be generic)\n- End with ONE specific actionable insight\n- Use natural crypto/Web3 terminology\n- Maintain Dobby's unhinged-but-smart personality throughout\n- Be brutally honest but constructive (even in harsh mode)\n\nTWEETS TO ANALYZE:\n${tweetsText}\n\nSelected mode: ${mode}\n\nGive me your ${mode} take on @${username}:`;\n\n// API payload\nconst payload = {\n  model: \"accounts/sentientfoundation/models/dobby-unhinged-llama-3-3-70b-new\",\n  messages: [{ role: \"user\", content }],\n  max_tokens: 256, // Reduced for shorter, punchier responses\n  temperature: 0.8, // Higher for more personality\n  top_p: 1,\n  top_k: 40,\n  presence_penalty: 0.1, // Reduce repetition\n  frequency_penalty: 0.1 // Encourage variety\n};\n\n// Return for HTTP node\nreturn [{ json: { body: JSON.stringify(payload), payload } }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        352,
        -256
      ],
      "id": "1cbddb25-1972-43ae-b49e-39bc7e11a9e2",
      "name": "Propmt"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "evaluate",
        "authentication": "headerAuth",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        -112,
        -496
      ],
      "id": "6709707d-2503-40f7-9694-f14a47739438",
      "name": "Webhook",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Gelen t\u00fcm item'lardan body alan\u0131n\u0131 \u00e7ek\nconst items = $input.all();\n\nreturn items.map(item => {\n  const body = item.json.body || {};\n  return { json: body };\n});"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        112,
        -496
      ],
      "id": "50ddee50-1e00-43a6-93a8-1f6e2c1fc9b1",
      "name": "Code"
    },
    {
      "parameters": {
        "jsCode": "const username = $json.username;\nconst project  = $json.project;\nconst handle  = $json.handle;\n\n\nconst query =\n  'from:' + username +\n  ' (\"' + project + '\" OR @' + handle + ')' +\n  ' -filter:nativeretweets -filter:retweets -filter:replies';\n\nreturn [{ json: { query } }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        336,
        -496
      ],
      "id": "bccd2022-68e2-4132-9798-71c1e24690ea",
      "name": "Query"
    },
    {
      "parameters": {
        "jsCode": "// Dobby node'un JSON \u00e7\u0131kt\u0131s\u0131\nconst dobby = $json; // bu Code node'u Dobby'den sonra geliyorsa\n\n// Kullan\u0131c\u0131 metaverisi: username/mode/project/handle\n// (Bunlar bir \u00f6nceki \"Code\" ya da \"Webhook\" node'undan geliyorsa ad\u0131n\u0131 de\u011fi\u015ftir)\nconst meta =\n  $node[\"Code\"]?.json                   // \u00f6rnek: sabit de\u011fer d\u00f6nd\u00fcrd\u00fc\u011f\u00fcn Code node\n  || $node[\"Webhook\"]?.json?.body       // \u00f6rnek: webhook body'sinden\n  || {};\n\nlet content = dobby?.choices?.[0]?.message?.content ?? \"\";\n\n// Uzun tire ve k\u0131sa tireyi bo\u015flukla de\u011fi\u015ftir\ncontent = content.replace(/\u2014/g, \" \").replace(/-/g, \" \");\n\nconst model   = dobby?.model ?? \"\";\nconst created = dobby?.created ?? null;\n\n// Web app'in bekledi\u011fi net bir payload haz\u0131rla\nconst payload = {\n  username: meta.username ?? null,\n  mode: meta.mode ?? null,\n  project: meta.project ?? null,\n  handle: meta.handle ?? null,\n  model,\n  created,\n  content\n};\n\nreturn [{ json: { payload } }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        800,
        -256
      ],
      "id": "02a24ff2-36db-4478-a6d4-34427ac5065a",
      "name": "Payload"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "dc1b687f-4453-423e-b140-7acd7af16fd9",
              "leftValue": "={{ $json.hasTweets }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1008,
        -496
      ],
      "id": "66c6294d-67d5-4858-aead-5256cbb01b70",
      "name": "If"
    },
    {
      "parameters": {
        "jsCode": "const tweets = $json.tweets || [];\nreturn [{\n  json: {\n    hasTweets: tweets.length > 0,\n    tweets\n  }\n}];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        784,
        -496
      ],
      "id": "43c42466-7914-4df2-b12a-e77d32dcd0a9",
      "name": "Check Tweets"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "{\n  \"success\": false,\n  \"message\": \"No tweets found for this user\"\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.4,
      "position": [
        1216,
        -384
      ],
      "id": "f51d1768-0a13-4066-bdb7-996a5f012274",
      "name": "NoTweetsRespond"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.4,
      "position": [
        1024,
        -256
      ],
      "id": "1a921b87-91c8-4e61-a9c4-439c48ad259a",
      "name": "AIRespond"
    }
  ],
  "connections": {
    "Sentient": {
      "main": [
        [
          {
            "node": "Check Tweets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Tweets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tweets": {
      "main": [
        [
          {
            "node": "Propmt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Propmt": {
      "main": [
        [
          {
            "node": "Dobby",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Query",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Query": {
      "main": [
        [
          {
            "node": "Sentient",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Dobby": {
      "main": [
        [
          {
            "node": "Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Payload": {
      "main": [
        [
          {
            "node": "AIRespond",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "NoTweetsRespond",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Tweets": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5852af06-fb4c-41fd-a6c4-e18e9d52fbdd",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "FkZzQFPoFOyy33ZL",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

SentientAGI. Uses httpRequest. Webhook trigger; 13 nodes.

Source: https://github.com/alptugyaman/dobby-x-ray/blob/a71c90d529043a96b8b8213499e4c9586581dfcf/SentientAGI.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request
Web Scraping

Sign PDF documents with legally-compliant digital signatures using X.509 certificates. Supports multiple PAdES signature levels (B, T, LT, LTA) with optional visible stamps.

Execute Command, HTTP Request, Read Write File +1
Web Scraping

📡 This workflow serves as the central Alpha Vantage API fetcher for Tesla trading indicators, delivering cleaned 20-point JSON outputs for three timeframes: , , and . It is required by the following a

HTTP Request