AutomationFlowsSlack & Telegram › Analyze Real Estate Market Sentiment with Scrapegraphai and Telegram

Analyze Real Estate Market Sentiment with Scrapegraphai and Telegram

Byvinci-king-01 @vinci-king-01 on n8n.io

This workflow automatically analyzes real estate market sentiment by scraping investment forums and news sources, then provides AI-powered market predictions and investment recommendations. Scheduled Trigger - Runs on a cron schedule to regularly monitor market sentiment.…

Cron / scheduled trigger★★★★☆ complexity15 nodesN8N Nodes ScrapegraphaiTelegram
Slack & Telegram Trigger: Cron / scheduled Nodes: 15 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #6627 — we link there as the canonical source.

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
{
  "id": "VhEwspDqzu7ssFVE",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "My workflow 2",
  "tags": [
    {
      "id": "DxXGubfBzRKh6L8T",
      "name": "Revenue Optimization",
      "createdAt": "2025-07-25T16:24:30.370Z",
      "updatedAt": "2025-07-25T16:24:30.370Z"
    },
    {
      "id": "IxkcJ2IpYIxivoHV",
      "name": "Content Strategy",
      "createdAt": "2025-07-25T12:57:37.677Z",
      "updatedAt": "2025-07-25T12:57:37.677Z"
    },
    {
      "id": "PAKIJ2Mm9EvRcR3u",
      "name": "Trend Monitoring",
      "createdAt": "2025-07-25T12:57:37.670Z",
      "updatedAt": "2025-07-25T12:57:37.670Z"
    },
    {
      "id": "YtfXmaZk44MYedPO",
      "name": "Dynamic Pricing",
      "createdAt": "2025-07-25T16:24:30.369Z",
      "updatedAt": "2025-07-25T16:24:30.369Z"
    },
    {
      "id": "wJ30mjhtrposO8Qt",
      "name": "Simple RAG",
      "createdAt": "2025-07-28T12:55:14.424Z",
      "updatedAt": "2025-07-28T12:55:14.424Z"
    }
  ],
  "nodes": [
    {
      "id": "ca1ec51f-e86e-44f4-b00f-6588ec3bf456",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1056,
        272
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f7d52e3a-2ede-4754-ab26-20e4d96f86c3",
      "name": "ScrapeGraphAI - RE Forums",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        1392,
        400
      ],
      "parameters": {
        "userPrompt": "Extract recent forum discussions about real estate market conditions, investment opportunities, and market sentiment. Focus on posts from the last 24 hours. Return data in this format: { \"discussions\": [{ \"title\": \"discussion title\", \"author\": \"username\", \"date\": \"date posted\", \"content\": \"main discussion content\", \"replies_count\": \"number of replies\", \"sentiment_indicators\": [\"bullish\", \"bearish\", \"neutral indicators\"], \"url\": \"discussion url\" }] }",
        "websiteUrl": "https://www.biggerpockets.com/forums/real-estate-investing"
      },
      "typeVersion": 1
    },
    {
      "id": "728be835-5b88-4132-9289-fcf12f31d554",
      "name": "ScrapeGraphAI - RE News",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        1392,
        640
      ],
      "parameters": {
        "userPrompt": "Extract the latest real estate investment news and market analysis from the past 24 hours. Focus on market trends, economic indicators, and expert opinions. Return data as: { \"news_articles\": [{ \"headline\": \"article title\", \"author\": \"author name\", \"date\": \"publication date\", \"summary\": \"article summary\", \"key_points\": [\"important points\"], \"market_impact\": \"positive/negative/neutral\", \"url\": \"article url\" }] }",
        "websiteUrl": "https://www.realestateinvestingtrust.com/news"
      },
      "typeVersion": 1
    },
    {
      "id": "6b2e44ec-8c2c-419a-a145-e367bacab041",
      "name": "Sentiment Analyzer",
      "type": "n8n-nodes-base.code",
      "position": [
        1664,
        432
      ],
      "parameters": {
        "jsCode": "// Combine forum and news data for sentiment analysis\nconst forumData = $input.all()[0]?.json?.result?.discussions || [];\nconst newsData = $input.all()[1]?.json?.result?.news_articles || [];\n\nfunction analyzeSentiment(text) {\n  const bullishKeywords = ['buy', 'opportunity', 'growth', 'investment', 'profit', 'rising', 'bullish', 'positive', 'gain', 'uptrend'];\n  const bearishKeywords = ['sell', 'crash', 'decline', 'loss', 'falling', 'bearish', 'negative', 'risk', 'downturn', 'bubble'];\n  \n  const textLower = text.toLowerCase();\n  const bullishCount = bullishKeywords.filter(word => textLower.includes(word)).length;\n  const bearishCount = bearishKeywords.filter(word => textLower.includes(word)).length;\n  \n  if (bullishCount > bearishCount) return 'bullish';\n  if (bearishCount > bullishCount) return 'bearish';\n  return 'neutral';\n}\n\nfunction calculateSentimentScore(sentiment) {\n  switch(sentiment) {\n    case 'bullish': return 1;\n    case 'bearish': return -1;\n    default: return 0;\n  }\n}\n\nconst forumSentiments = forumData.map(discussion => {\n  const sentiment = analyzeSentiment(discussion.title + ' ' + discussion.content);\n  return {\n    source: 'forum',\n    title: discussion.title,\n    sentiment: sentiment,\n    score: calculateSentimentScore(sentiment),\n    url: discussion.url,\n    date: discussion.date\n  };\n});\n\nconst newsSentiments = newsData.map(article => {\n  const sentiment = analyzeSentiment(article.headline + ' ' + article.summary);\n  return {\n    source: 'news',\n    title: article.headline,\n    sentiment: sentiment,\n    score: calculateSentimentScore(sentiment),\n    url: article.url,\n    date: article.date,\n    market_impact: article.market_impact\n  };\n});\n\nconst allSentiments = [...forumSentiments, ...newsSentiments];\nconst totalScore = allSentiments.reduce((sum, item) => sum + item.score, 0);\nconst averageScore = totalScore / allSentiments.length || 0;\n\nlet overallSentiment = 'neutral';\nif (averageScore > 0.3) overallSentiment = 'bullish';\nelse if (averageScore < -0.3) overallSentiment = 'bearish';\n\nreturn [{\n  json: {\n    overall_sentiment: overallSentiment,\n    sentiment_score: averageScore,\n    total_sources: allSentiments.length,\n    bullish_count: allSentiments.filter(s => s.sentiment === 'bullish').length,\n    bearish_count: allSentiments.filter(s => s.sentiment === 'bearish').length,\n    neutral_count: allSentiments.filter(s => s.sentiment === 'neutral').length,\n    detailed_analysis: allSentiments,\n    analysis_timestamp: new Date().toISOString()\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "ed209cd0-b393-4bb8-9e59-5fc605ab1f77",
      "name": "Market Predictor",
      "type": "n8n-nodes-base.code",
      "position": [
        1968,
        416
      ],
      "parameters": {
        "jsCode": "// Market prediction based on sentiment analysis\nconst sentimentData = $input.all()[0].json;\n\nfunction predictMarketDirection(sentimentScore, bullishCount, bearishCount, totalSources) {\n  let prediction = 'hold';\n  let confidence = 0;\n  let reasoning = [];\n  \n  // Strong bullish sentiment\n  if (sentimentScore > 0.5 && bullishCount > bearishCount * 2) {\n    prediction = 'strong_buy';\n    confidence = Math.min(90, 60 + (sentimentScore * 30));\n    reasoning.push('Strong bullish sentiment detected across multiple sources');\n  }\n  // Moderate bullish sentiment\n  else if (sentimentScore > 0.2) {\n    prediction = 'buy';\n    confidence = Math.min(75, 50 + (sentimentScore * 25));\n    reasoning.push('Moderate positive sentiment in the market');\n  }\n  // Strong bearish sentiment\n  else if (sentimentScore < -0.5 && bearishCount > bullishCount * 2) {\n    prediction = 'strong_sell';\n    confidence = Math.min(90, 60 + (Math.abs(sentimentScore) * 30));\n    reasoning.push('Strong bearish sentiment detected - consider exiting positions');\n  }\n  // Moderate bearish sentiment\n  else if (sentimentScore < -0.2) {\n    prediction = 'sell';\n    confidence = Math.min(75, 50 + (Math.abs(sentimentScore) * 25));\n    reasoning.push('Negative sentiment trend - caution advised');\n  }\n  // Neutral/mixed signals\n  else {\n    prediction = 'hold';\n    confidence = 40;\n    reasoning.push('Mixed signals in market sentiment - maintain current positions');\n  }\n  \n  // Adjust confidence based on data volume\n  if (totalSources < 10) {\n    confidence *= 0.8;\n    reasoning.push('Limited data sources - lower confidence');\n  }\n  \n  return {\n    prediction,\n    confidence: Math.round(confidence),\n    reasoning\n  };\n}\n\nconst marketPrediction = predictMarketDirection(\n  sentimentData.sentiment_score,\n  sentimentData.bullish_count,\n  sentimentData.bearish_count,\n  sentimentData.total_sources\n);\n\n// Generate investment recommendations\nlet recommendations = [];\nswitch(marketPrediction.prediction) {\n  case 'strong_buy':\n    recommendations = [\n      'Consider increasing real estate investment allocation',\n      'Look for value opportunities in growth markets',\n      'Accelerate planned property acquisitions'\n    ];\n    break;\n  case 'buy':\n    recommendations = [\n      'Moderate increase in real estate exposure',\n      'Focus on cash-flowing properties',\n      'Monitor market closely for entry points'\n    ];\n    break;\n  case 'strong_sell':\n    recommendations = [\n      'Consider reducing real estate exposure',\n      'Postpone new acquisitions',\n      'Review portfolio for underperforming assets'\n    ];\n    break;\n  case 'sell':\n    recommendations = [\n      'Exercise caution with new investments',\n      'Consider taking profits on recent gains',\n      'Increase cash reserves'\n    ];\n    break;\n  default:\n    recommendations = [\n      'Maintain current investment strategy',\n      'Continue regular market monitoring',\n      'Stay prepared for market shifts'\n    ];\n}\n\nreturn [{\n  json: {\n    ...sentimentData,\n    market_prediction: marketPrediction.prediction,\n    confidence_level: marketPrediction.confidence,\n    reasoning: marketPrediction.reasoning,\n    investment_recommendations: recommendations,\n    risk_level: marketPrediction.confidence > 70 ? 'low' : marketPrediction.confidence > 50 ? 'medium' : 'high',\n    prediction_timestamp: new Date().toISOString()\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "11367ba0-9a2c-4352-85c5-945596f2aab0",
      "name": "Timing Optimizer",
      "type": "n8n-nodes-base.code",
      "position": [
        2272,
        416
      ],
      "parameters": {
        "jsCode": "// Timing optimization based on market prediction and historical patterns\nconst predictionData = $input.all()[0].json;\n\nfunction optimizeTiming(prediction, confidence, sentimentScore) {\n  let timing_recommendation = 'monitor';\n  let urgency = 'low';\n  let optimal_timeframe = '1-3 months';\n  let timing_factors = [];\n  \n  // Determine optimal timing based on prediction strength\n  if (prediction === 'strong_buy' && confidence > 75) {\n    timing_recommendation = 'act_immediately';\n    urgency = 'high';\n    optimal_timeframe = '1-2 weeks';\n    timing_factors.push('Strong market signals indicate immediate action needed');\n  }\n  else if (prediction === 'buy' && confidence > 60) {\n    timing_recommendation = 'act_soon';\n    urgency = 'medium';\n    optimal_timeframe = '2-4 weeks';\n    timing_factors.push('Positive sentiment building - act within optimal window');\n  }\n  else if (prediction === 'strong_sell') {\n    timing_recommendation = 'exit_positions';\n    urgency = 'high';\n    optimal_timeframe = '1-2 weeks';\n    timing_factors.push('Strong negative signals - consider immediate exit strategy');\n  }\n  else if (prediction === 'sell') {\n    timing_recommendation = 'reduce_exposure';\n    urgency = 'medium';\n    optimal_timeframe = '2-6 weeks';\n    timing_factors.push('Negative trend developing - gradual position reduction advised');\n  }\n  \n  // Add seasonal considerations (simplified)\n  const currentMonth = new Date().getMonth();\n  const seasonalFactors = {\n    spring: [2, 3, 4], // March, April, May\n    summer: [5, 6, 7], // June, July, August\n    fall: [8, 9, 10],  // September, October, November\n    winter: [11, 0, 1] // December, January, February\n  };\n  \n  let currentSeason = 'winter';\n  for (const [season, months] of Object.entries(seasonalFactors)) {\n    if (months.includes(currentMonth)) {\n      currentSeason = season;\n      break;\n    }\n  }\n  \n  if (currentSeason === 'spring' || currentSeason === 'summer') {\n    timing_factors.push('Peak real estate season - higher activity expected');\n  } else {\n    timing_factors.push('Off-season period - potentially better deals available');\n  }\n  \n  return {\n    timing_recommendation,\n    urgency,\n    optimal_timeframe,\n    timing_factors,\n    current_season: currentSeason\n  };\n}\n\nconst timingAnalysis = optimizeTiming(\n  predictionData.market_prediction,\n  predictionData.confidence_level,\n  predictionData.sentiment_score\n);\n\nreturn [{\n  json: {\n    ...predictionData,\n    timing_recommendation: timingAnalysis.timing_recommendation,\n    urgency_level: timingAnalysis.urgency,\n    optimal_timeframe: timingAnalysis.optimal_timeframe,\n    timing_factors: timingAnalysis.timing_factors,\n    current_season: timingAnalysis.current_season,\n    timing_analysis_timestamp: new Date().toISOString()\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "a430a788-98ec-469e-9724-dca80245a1e9",
      "name": "Investment Advisor Alert",
      "type": "n8n-nodes-base.code",
      "position": [
        2592,
        416
      ],
      "parameters": {
        "jsCode": "// Generate comprehensive investment advisor alert\nconst analysisData = $input.all()[0].json;\n\nfunction generateAlert(data) {\n  const {\n    overall_sentiment,\n    sentiment_score,\n    market_prediction,\n    confidence_level,\n    timing_recommendation,\n    urgency_level,\n    optimal_timeframe,\n    investment_recommendations,\n    risk_level\n  } = data;\n  \n  // Determine alert priority\n  let alertPriority = 'normal';\n  if (urgency_level === 'high' && confidence_level > 70) {\n    alertPriority = 'critical';\n  } else if (urgency_level === 'medium' || confidence_level > 60) {\n    alertPriority = 'high';\n  }\n  \n  // Generate alert title\n  const alertTitle = `\ud83c\udfe0 RE Market Alert: ${market_prediction.toUpperCase().replace('_', ' ')} Signal (${confidence_level}% confidence)`;\n  \n  // Generate detailed message\n  let message = `\ud83d\udcca **REAL ESTATE MARKET ANALYSIS REPORT**\\n\\n`;\n  message += `\ud83c\udfaf **Overall Sentiment:** ${overall_sentiment.toUpperCase()}\\n`;\n  message += `\ud83d\udcc8 **Market Prediction:** ${market_prediction.replace('_', ' ').toUpperCase()}\\n`;\n  message += `\ud83c\udfb2 **Confidence Level:** ${confidence_level}%\\n`;\n  message += `\u23f0 **Timing:** ${timing_recommendation.replace('_', ' ').toUpperCase()}\\n`;\n  message += `\ud83d\udea8 **Urgency:** ${urgency_level.toUpperCase()}\\n`;\n  message += `\ud83d\udcc5 **Optimal Timeframe:** ${optimal_timeframe}\\n`;\n  message += `\u26a0\ufe0f **Risk Level:** ${risk_level.toUpperCase()}\\n\\n`;\n  \n  message += `\ud83d\udca1 **KEY RECOMMENDATIONS:**\\n`;\n  investment_recommendations.forEach((rec, index) => {\n    message += `${index + 1}. ${rec}\\n`;\n  });\n  \n  message += `\\n\ud83d\udd0d **ANALYSIS SUMMARY:**\\n`;\n  message += `\u2022 Total sources analyzed: ${data.total_sources}\\n`;\n  message += `\u2022 Bullish signals: ${data.bullish_count}\\n`;\n  message += `\u2022 Bearish signals: ${data.bearish_count}\\n`;\n  message += `\u2022 Neutral signals: ${data.neutral_count}\\n`;\n  \n  message += `\\n\ud83d\udccb **TIMING FACTORS:**\\n`;\n  data.timing_factors.forEach((factor, index) => {\n    message += `\u2022 ${factor}\\n`;\n  });\n  \n  message += `\\n\ud83d\udd50 **Report Generated:** ${new Date().toLocaleString()}\\n`;\n  message += `\\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501`;\n  \n  return {\n    alert_title: alertTitle,\n    alert_message: message,\n    alert_priority: alertPriority,\n    raw_data: data\n  };\n}\n\nconst alert = generateAlert(analysisData);\n\nreturn [{\n  json: {\n    ...alert,\n    notification_timestamp: new Date().toISOString()\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "d2bd5cbb-7de7-45f3-b106-2200aba40fa4",
      "name": "Telegram Alert",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2896,
        400
      ],
      "parameters": {
        "text": "={{ $json.alert_message }}",
        "chatId": "@real_estate_alerts",
        "additionalFields": {
          "parse_mode": "Markdown"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "15984e52-8b3a-4739-956c-e3d24197ff3f",
      "name": "Sticky Note - Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        -352
      ],
      "parameters": {
        "color": 2,
        "width": 300,
        "height": 1136,
        "content": "# Step 1: Schedule Trigger \u23f1\ufe0f\n\n**Daily Market Monitoring**\n\nThis trigger runs the workflow every day at 8:00 AM to analyze real estate market sentiment.\n\n## Configuration:\n- **Frequency**: Daily at 8:00 AM\n- **Cron Expression**: `0 8 * * *`\n- **Purpose**: Automated daily market analysis\n\n## Why Daily?\n- Real estate markets change gradually\n- Daily analysis captures emerging trends\n- Optimal timing for investment decisions"
      },
      "typeVersion": 1
    },
    {
      "id": "de278e05-8034-4c28-a838-79933be72677",
      "name": "Sticky Note - Data Collection",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        -352
      ],
      "parameters": {
        "color": 3,
        "width": 300,
        "height": 1136,
        "content": "# Step 2: Data Collection \ud83d\udd0d\n\n**Dual Source Scraping**\n\nTwo ScrapeGraphAI nodes collect data from:\n\n## Forum Scraping:\n- **Source**: BiggerPockets Forums\n- **Focus**: Investor discussions\n- **Data**: Sentiment indicators, trends\n\n## News Scraping:\n- **Source**: RE Investment News\n- **Focus**: Market analysis & expert opinions\n- **Data**: Headlines, market impact\n\n## Benefits:\n- Comprehensive market view\n- Real-time sentiment capture\n- Multiple perspective analysis"
      },
      "typeVersion": 1
    },
    {
      "id": "e14ea293-64f2-4751-a573-5b9f2bed9a8a",
      "name": "Sticky Note - Sentiment Analysis",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1584,
        -352
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "height": 1136,
        "content": "# Step 3: Sentiment Analysis \ud83e\udde0\n\n**AI-Powered Market Psychology**\n\nAdvanced sentiment analysis combining forum discussions and news articles.\n\n## Key Features:\n- **Keyword Analysis**: Bullish/bearish indicators\n- **Scoring System**: -1 to +1 sentiment scale\n- **Source Weighting**: News vs forum importance\n- **Trend Detection**: Pattern recognition\n\n## Output:\n- Overall market sentiment\n- Confidence scoring\n- Detailed breakdowns\n- Historical comparison"
      },
      "typeVersion": 1
    },
    {
      "id": "a1d2afa7-e8dc-4e19-8fb3-ac199f9726a9",
      "name": "Sticky Note - Market Prediction",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        -352
      ],
      "parameters": {
        "color": 5,
        "width": 300,
        "height": 1136,
        "content": "# Step 4: Market Prediction \ud83d\udd2e\n\n**Intelligent Forecasting Engine**\n\nTransforms sentiment into actionable market predictions.\n\n## Prediction Types:\n- **Strong Buy**: High confidence bullish\n- **Buy**: Moderate positive signals\n- **Hold**: Mixed/neutral sentiment\n- **Sell**: Negative trend detected\n- **Strong Sell**: High confidence bearish\n\n## Features:\n- Confidence scoring (0-100%)\n- Risk assessment\n- Investment recommendations\n- Reasoning transparency"
      },
      "typeVersion": 1
    },
    {
      "id": "ce6eb84f-96ca-47a6-9b9a-8e16c1b77b13",
      "name": "Sticky Note - Timing Optimization",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2192,
        -352
      ],
      "parameters": {
        "color": 6,
        "width": 300,
        "height": 1136,
        "content": "# Step 5: Timing Optimization \u23f0\n\n**Strategic Entry/Exit Planning**\n\nOptimizes investment timing based on market conditions and seasonal factors.\n\n## Timing Strategies:\n- **Act Immediately**: Strong signals (1-2 weeks)\n- **Act Soon**: Good opportunity (2-4 weeks)\n- **Monitor**: Wait for clarity (1-3 months)\n- **Exit Positions**: Risk mitigation (immediate)\n\n## Factors Considered:\n- Market sentiment strength\n- Seasonal real estate patterns\n- Historical performance data\n- Risk/reward ratios"
      },
      "typeVersion": 1
    },
    {
      "id": "77039ec5-4612-49fb-a4b4-1f4e5c21ec56",
      "name": "Sticky Note - Investment Alert",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2496,
        -352
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 1136,
        "content": "# Step 6: Investment Alert \ud83d\udea8\n\n**Professional Advisory System**\n\nGenerates comprehensive investment alerts with actionable recommendations.\n\n## Alert Components:\n- **Priority Level**: Critical/High/Normal\n- **Market Summary**: Key findings\n- **Recommendations**: Specific actions\n- **Risk Assessment**: Potential downsides\n- **Timing Guidance**: When to act\n\n## Alert Types:\n- Immediate action required\n- Opportunity identification\n- Risk warnings\n- Market updates"
      },
      "typeVersion": 1
    },
    {
      "id": "05197e73-8d6b-45e2-8202-6c828a45a9c7",
      "name": "Sticky Note - Telegram Delivery",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2800,
        -352
      ],
      "parameters": {
        "width": 300,
        "height": 1136,
        "content": "# Step 7: Telegram Delivery \ud83d\udcf1\n\n**Instant Notification System**\n\nDelivers formatted investment alerts directly to your Telegram channel.\n\n## Features:\n- **Markdown Formatting**: Professional layout\n- **Instant Delivery**: Real-time alerts\n- **Channel Integration**: Team notifications\n- **Mobile Friendly**: Access anywhere\n\n## Setup Requirements:\n- Create Telegram bot via @BotFather\n- Add bot token to credentials\n- Configure channel/chat ID\n- Enable markdown parsing"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "df60cb6d-f920-46a7-843a-9d4c9bdd76d9",
  "connections": {
    "Market Predictor": {
      "main": [
        [
          {
            "node": "Timing Optimizer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "ScrapeGraphAI - RE Forums",
            "type": "main",
            "index": 0
          },
          {
            "node": "ScrapeGraphAI - RE News",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Timing Optimizer": {
      "main": [
        [
          {
            "node": "Investment Advisor Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sentiment Analyzer": {
      "main": [
        [
          {
            "node": "Market Predictor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ScrapeGraphAI - RE News": {
      "main": [
        [
          {
            "node": "Sentiment Analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Investment Advisor Alert": {
      "main": [
        [
          {
            "node": "Telegram Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ScrapeGraphAI - RE Forums": {
      "main": [
        [
          {
            "node": "Sentiment Analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

This workflow automatically analyzes real estate market sentiment by scraping investment forums and news sources, then provides AI-powered market predictions and investment recommendations. Scheduled Trigger - Runs on a cron schedule to regularly monitor market sentiment.…

Source: https://n8n.io/workflows/6627/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

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

Slack & Telegram

IT operations and infrastructure teams IoT system administrators and engineers Facility and building management teams Manufacturing and industrial operations managers Smart city and public infrastruct

N8N Nodes Scrapegraphai, Telegram
Slack & Telegram

This workflow automates the process of monitoring Amazon product prices and sending alerts when a product’s price drops below a defined threshold.

N8N Nodes Scrapegraphai, Google Sheets, Telegram
Slack & Telegram

Intellectual property lawyers and legal teams Brand protection specialists Content creators and publishers Marketing and brand managers Digital rights management teams Copyright enforcement agencies M

N8N Nodes Scrapegraphai, Telegram
Slack & Telegram

This workflow automatically scrapes real estate listings from Zillow and sends them to a Telegram channel. Scheduled Trigger - Runs the workflow at specified intervals to find new listings. AI-Powered

N8N Nodes Scrapegraphai, Telegram
Slack & Telegram

Solo founders and spreadsheet gremlins who track everything in Notion and want crisp Telegram pings without opening a single page.

Telegram, Notion