Push message:

Early holders of successful projects often possess superior market judgment, and their other holdings are likely to be the next opportunities.
Choose a proven successful project (such as a token with significant price appreciation) as the “seed project.”
Filter out genuine “smart money” from the seed project’s holders: Screening Criteria:
Holding ratio: < 5% (exclude project whale holders) Capital scale: holding value > $1 million (funding requirement) Address type: exclude exchanges, project treasuries, DeFi protocol contracts
Excluded institutional keywords: exchange, binance, treasury, foundation, uniswap, vault, etc.
Batch query the filtered smart money addresses to obtain their complete ERC20 holdings. Data Cleaning:
Filter out stablecoins (USDT, USDC, DAI, BUSD) Exclude spam tokens (possible_spam = true) Count frequency of each token appearance
Categorize discovered tokens into three classes based on security scores and holding concentration:
✅ Data-driven: Based on real on-chain holding data, not subjective speculation ✅ First-mover advantage: Follow smart money for early positioning, avoid chasing highs ✅ Risk diversification: Multi-tier allocation, balancing returns and risks ✅ Automation: Reduce manual analysis time, improve decision efficiency
⚠️ Market risk: Smart money can also make wrong judgments, past performance doesn’t guarantee future results ⚠️ Concentration risk: Avoid over-concentration in screened targets ⚠️ Timeliness: Markets change rapidly, need timely updates of analysis results ⚠️ Technical risk: Unverified contracts have security risks, require extra caution
Regular updates: Recommend daily updates of analysis results to capture latest dynamics Portfolio allocation: Strictly allocate positions according to risk levels, don’t go all-in on single targets Stop-loss mechanism: Set reasonable stop-loss points to control single investment risk Continuous tracking: Monitor changes in smart money address holdings, adjust strategy timely
Remember: This is an auxiliary decision-making tool, not an investment guarantee. Always combine with your own risk tolerance when making decisions.
{"type":"n8n","content":"{\"workflowData\":{\"nodes\":[{\"parameters\":{\"notice\":\"\",\"rule\":{\"interval\":[{\"field\":\"days\",\"daysInterval\":1,\"triggerAtHour\":0,\"triggerAtMinute\":0}]}},\"type\":\"n8n-nodes-base.scheduleTrigger\",\"typeVersion\":1.2,\"position\":[-512,16],\"id\":\"026076a8-a64d-47f1-93d4-298f3d742c97\",\"name\":\"Scheduled Trigger\"},{\"parameters\":{\"method\":\"GET\",\"url\":\"=https://deep-index.moralis.io/api/v2.2/erc20/{{$vars.contractAddress}}/owners\",\"authentication\":\"none\",\"sendQuery\":true,\"specifyQuery\":\"keypair\",\"queryParameters\":{\"parameters\":[{\"name\":\"chain\",\"value\":\"bsc\"},{\"name\":\"limit\",\"value\":\"100\"},{\"name\":\"order\",\"value\":\"DESC\"}]},\"sendHeaders\":true,\"specifyHeaders\":\"keypair\",\"headerParameters\":{\"parameters\":[{\"name\":\"accept\",\"value\":\"application/json\"},{\"name\":\"X-API-Key\",\"value\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImU2Mzk0MDA4LTYxODAtNDMzOC04NzczLTgwZjNhNjI4ZjE1MSIsIm9yZ0lkIjoiNDMwNjkyIiwidXNlcklkIjoiNDQzMDMxIiwidHlwZUlkIjoiZGNmNmY0OTctNmZhNy00NDAxLThmYWUtMzdkMGE4ZDI2NjYwIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MzkyNjMxNDMsImV4cCI6NDg5NTAyMzE0M30.SzM3MoOsCaeEAiyW6mwVRYmIks1YcJa-EcGxU0_eiGg\"}]},\"sendBody\":false,\"options\":{},\"infoMessage\":\"\"},\"type\":\"n8n-nodes-base.httpRequest\",\"typeVersion\":4.2,\"position\":[-288,16],\"id\":\"5e835a60-4265-4e2d-a9a8-f45dbb05b036\",\"name\":\"Get Top 100 Holdings\"},{\"parameters\":{\"mode\":\"runOnceForAllItems\",\"language\":\"javaScript\",\"jsCode\":\"const data = $input.first().json.data.result;\\nconst address = [];\\n\\n// Helper function to check if it's an institutional label\\nfunction isInstitutionalLabel(label) {\\n if (!label) return false;\\n \\n const institutionalKeywords = [\\n 'exchange', 'binance', 'coinbase', 'kraken', 'okex', 'huobi',\\n 'uniswap', 'pancakeswap', 'sushiswap',\\n 'treasury', 'foundation', 'team', 'dev',\\n 'vault', 'pool', 'contract', 'router'\\n ];\\n \\n const lowerLabel = label.toLowerCase();\\n return institutionalKeywords.some(keyword => lowerLabel.includes(keyword));\\n}\\n\\nfor (const item of data) {\\n // Conditions for filtering smart money\\n const isRetail = (\\n // Main condition: holding ratio less than 5%\\n item.percentage_relative_to_total_supply < 5 &&\\n \\n // Auxiliary condition: exclude known institutional addresses\\n (item.owner_address_label === null || \\n !isInstitutionalLabel(item.owner_address_label)) &&\\n \\n // Auxiliary condition: funding requirements\\n parseFloat(item.usd_value) > 1000000 // Greater than 1 million USD\\n );\\n \\n // Only add to array if smart money conditions are met\\n if (isRetail) {\\n address.push({ json: { owner_address: item.owner_address } });\\n }\\n}\\n\\nreturn address;\",\"notice\":\"\"},\"type\":\"n8n-nodes-base.code\",\"typeVersion\":2,\"position\":[-64,16],\"id\":\"aabdece9-f14b-4f7b-9e3f-1a9c85e51f66\",\"name\":\"Smart Money Screening\"},{\"parameters\":{\"splitInBatchesNotice\":\"\",\"batchSize\":\"={{ $input.all().length }}\",\"options\":{}},\"type\":\"n8n-nodes-base.splitInBatches\",\"typeVersion\":3,\"position\":[160,16],\"id\":\"66f8a68f-69fd-4b59-a36a-c7b4a8157431\",\"name\":\"Smart Wallet Loop\"},{\"parameters\":{\"mode\":\"runOnceForAllItems\",\"language\":\"javaScript\",\"jsCode\":\"inputdata = $input.all()\\nfunction filterTokens(walletData) {\\n // Get tokens data\\n let tokens = walletData.json.data;\\n \\n // Check if tokens is an array, if not, perform conversion\\n if (!Array.isArray(tokens)) {\\n Log('❌ tokens is not an array, starting conversion...');\\n Log('❌ Original tokens type:', typeof tokens);\\n Log('❌ Original tokens content:', tokens);\\n \\n // Try multiple conversion methods\\n if (tokens === null || tokens === undefined) {\\n Log('⚠️ tokens is null/undefined, returning empty array');\\n tokens = [];\\n } \\n else if (typeof tokens === 'object' && tokens.data) {\\n // If tokens is an object and contains data property\\n Log('🔄 Detected tokens.data, trying to use tokens.data');\\n tokens = Array.isArray(tokens.data) ? tokens.data : [tokens.data];\\n }\\n else if (typeof tokens === 'object' && tokens.result) {\\n // If tokens is an object and contains result property\\n Log('🔄 Detected tokens.result, trying to use tokens.result');\\n tokens = Array.isArray(tokens.result) ? tokens.result : [tokens.result];\\n }\\n else if (typeof tokens === 'object') {\\n // If it's an object, convert to array containing this object\\n Log('🔄 Converting object to array');\\n tokens = [tokens];\\n }\\n else {\\n // Other cases, try to force convert to array\\n Log('🔄 Force converting to array');\\n try {\\n tokens = Array.isArray(tokens) ? tokens : [tokens];\\n } catch (e) {\\n Log('❌ Conversion failed, using empty array');\\n tokens = [];\\n }\\n }\\n \\n Log('✅ Converted tokens type:', typeof tokens);\\n Log('✅ Is converted tokens an array:', Array.isArray(tokens));\\n Log('✅ Converted tokens length:', tokens.length);\\n } \\n \\n // If still not an array or empty after conversion, return empty result\\n if (!Array.isArray(tokens) || tokens.length === 0) {\\n Log('⚠️ Final tokens is still not a valid array, returning empty result');\\n return {\\n highSecurityTokens: [],\\n bigHoldingTokens: [],\\n mediumRiskTokens: []\\n };\\n }\\n \\n // Filter out stablecoins and spam tokens\\n const filteredTokens = tokens.filter(token => \\n token && \\n token.symbol && \\n !['USDT', 'USDC', 'DAI', 'BUSD'].includes(token.symbol) && \\n !token.possible_spam\\n );\\n \\n Log('🔍 Token count after filtering:', filteredTokens.length);\\n \\n // High security value tokens (security score>=90 and verified)\\n const highSecurityTokens = filteredTokens\\n .filter(token => \\n token.security_score >= 90 && \\n token.verified_contract\\n )\\n .map(token => token.symbol);\\n \\n // Big holding potential tokens (holding ratio>0.1% and unrated or low-rated)\\n const bigHoldingTokens = filteredTokens\\n .filter(token => \\n token.percentage_relative_to_total_supply > 0.001 && \\n (token.security_score === null || token.security_score < 80)\\n )\\n .map(token => token.symbol);\\n \\n // Medium risk opportunity tokens (security score 60-85 and verified)\\n const mediumRiskTokens = filteredTokens\\n .filter(token => \\n token.security_score >= 60 && \\n token.security_score <= 85 && \\n token.verified_contract\\n )\\n .map(token => token.symbol);\\n \\n Log('📊 Classification results - High security:', highSecurityTokens.length, 'Big holdings:', bigHoldingTokens.length, 'Medium risk:', mediumRiskTokens.length);\\n \\n return {\\n highSecurityTokens,\\n bigHoldingTokens,\\n mediumRiskTokens\\n };\\n}\\nvar result = []\\n// Usage example - fix syntax errors\\ninputdata.forEach((item, index) => {\\n Log(`🔄 Processing wallet ${index + 1}`);\\n try {\\n const filteredResult = filterTokens(item);\\n result.push(filteredResult);\\n Log(`✅ Wallet ${index + 1} processing completed`);\\n } catch (error) {\\n Log(`❌ Error processing wallet ${index + 1}:`, error.message);\\n Log('❌ Erroneous wallet data structure:', JSON.stringify(item, null, 2));\\n result.push({\\n highSecurityTokens: [],\\n bigHoldingTokens: [],\\n mediumRiskTokens: []\\n });\\n }\\n});\\nLog('🎉 All wallets processing completed, total count:', result.length);\\nreturn [{result}]\",\"notice\":\"\"},\"type\":\"n8n-nodes-base.code\",\"typeVersion\":2,\"position\":[384,-128],\"id\":\"4021aecd-d193-4f42-b13b-d142bfc27fdc\",\"name\":\"Holding Token Classification\"},{\"parameters\":{\"method\":\"GET\",\"url\":\"=https://deep-index.moralis.io/api/v2.2/{{ $json.owner_address }}/erc20\",\"authentication\":\"none\",\"sendQuery\":true,\"specifyQuery\":\"keypair\",\"queryParameters\":{\"parameters\":[{\"name\":\"chain\",\"value\":\"bsc\"},{\"name\":\"limit\",\"value\":\"100\"}]},\"sendHeaders\":true,\"specifyHeaders\":\"keypair\",\"headerParameters\":{\"parameters\":[{\"name\":\"accept\",\"value\":\"application/json\"},{\"name\":\"X-API-Key\",\"value\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6IjQ4ZGFlODg5LWU1YjItNGVkYS04ZTc1LTAzZWRlZjAxNTcyOCIsIm9yZ0lkIjoiNDcyMjkzIiwidXNlcklkIjoiNDg1ODQ5IiwidHlwZUlkIjoiZmZkZmU4YjAtYTRlNi00ZjE3LTgwNGYtZWExZmY3Y2M1YWRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3NTg3NzEwMDQsImV4cCI6NDkxNDUzMTAwNH0.gWjnh9cTzYY5eHrPR4Qy29eY1czDCbp3eQogOC0utfU\"}]},\"sendBody\":false,\"options\":{},\"infoMessage\":\"\"},\"type\":\"n8n-nodes-base.httpRequest\",\"typeVersion\":4.2,\"position\":[384,64],\"id\":\"216c8de4-a2c3-4925-9dfc-1c37e68e253a\",\"name\":\"Get Smart Money Holding Tokens\"},{\"parameters\":{\"mode\":\"runOnceForAllItems\",\"language\":\"javaScript\",\"jsCode\":\"var inputdata = $input.first().json.result\\nconst result = {};\\n\\n['highSecurityTokens', 'bigHoldingTokens', 'mediumRiskTokens'].forEach(category => {\\n const counts = {};\\n inputdata.forEach(item => \\n item[category]?.forEach(token => counts[token] = (counts[token] || 0) + 1)\\n );\\n \\n result[category] = Object.entries(counts)\\n .sort((a, b) => b[1] - a[1])\\n .slice(0, 5)\\n .map(([token, count]) => ({ token, count }));\\n});\\n\\nreturn [{result}]\\n\",\"notice\":\"\"},\"type\":\"n8n-nodes-base.code\",\"typeVersion\":2,\"position\":[608,-128],\"id\":\"51a08841-1b85-4e87-bc30-58815ca19a54\",\"name\":\"Count Token Frequency\"},{\"parameters\":{\"text\":\"== Based on \\\"smart money\\\" analysis of specific ERC20 token holders on BSC chain, discover the next potential targets by analyzing the investment portfolios of early holders in high-quality projects.\\nCollected data: {{ $json.result.toJsonString()}}\\nAnalysis Background\\nDiscover smart money deployment patterns through analyzing successful project holders' investment portfolios:\\n\\nScreening Criteria - Holdings above $1M USD, excluding project treasury (≥10%), exchange addresses, Safe/Treasury wallets\\nInvestment Logic - These smart money investors can usually identify quality projects early, their other holdings are likely the next opportunities\\nRisk Classification - Categorize based on security scores and holding concentration, balancing returns with risks\\n\\nData Structure Explanation\\n\\nhighSecurityTokens: High security projects (score ≥90 and verified) - Core long-term holding candidates\\nbigHoldingTokens: Large concentrated holdings (holding ratio >0.1% and score <80) - Smart money heavy bet targets\\nmediumRiskTokens: Balanced risk projects (score 60-85 and verified) - Diversified allocation choices\\n\\nAnalysis Requirements\\n\\nSearch Latest News: Focus on token project progress, ecosystem development, partnerships\\nSmart Money Logic: Analyze why these successful investors would choose these targets\\nMarket Timing: Judge whether current timing is suitable for entry\\nPortfolio Recommendations: Provide specific position allocation suggestions\\n\\nOutput Format Requirements\\nUse Telegram HTML format, strictly follow the template below:\\n<b>🎯 Smart Money Investment Portfolio Analysis Report</b>\\n<b>💎 Core Long-term Holdings</b> (High Security - Recommended <code>30-40%</code> position)\\n<pre>Token Count Smart Money Selection Logic Recommended Action\\nTOKEN XX times Core value analysis Buy/Watch</pre>\\n<b>🚀 Heavy Bet Targets</b> (Big Holdings - Recommended <code>10-15%</code> position)\\n<pre>Token Count Concentration Betting Rationale Risk Warning\\nTOKEN XX times High/Medium Breakout potential analysis Specific risk points</pre>\\n<b>⚖️ Diversified Allocation Choices</b> (Medium Risk - Recommended <code>10-20%</code> position)\\n<pre>Token Count Risk Level Allocation Logic\\nTOKEN XX times Medium Risk Balanced return reasoning</pre>\\n<blockquote><b>⚠️ Risk Warning</b>\\nFollowing smart money does not guarantee profits. Decisions should be made based on personal risk tolerance and market conditions. Avoid over-concentrated positions as recommended, since this is already based on wallet screening related to target tokens.</blockquote>\\n<i>Data Source: Real-time BSC on-chain holding data</i>\\nStrict Formatting Requirements:\\n\\nEvery <b> tag must have a corresponding </b>\\nEvery <code> tag must have a corresponding </code>\\nEvery <pre> tag must have a corresponding </pre>\\n\\n<blockquote> tag must have a corresponding </blockquote>\\n\\n<i> tag must have a corresponding </i>\\nToken addresses use <code>address</code> format\\nLinks use <a href=\\\"URL\\\">text</a> format\\n\",\"options\":{}},\"type\":\"@n8n/n8n-nodes-langchain.agent\",\"typeVersion\":1,\"position\":[832,-128],\"id\":\"3f516118-c305-4393-8e4a-268251154421\",\"name\":\"AI Intelligent Analysis\"},{\"parameters\":{\"model\":{\"__rl\":true,\"value\":\"anthropic/claude-sonnet-4\",\"mode\":\"list\",\"cachedResultName\":\"anthropic/claude-sonnet-4\"}},\"type\":\"n8n-nodes-base.lmOpenAi\",\"typeVersion\":1,\"position\":[928,96],\"id\":\"098419e2-eb48-425f-97aa-be1b8f6e279c\",\"name\":\"OpenAI Model\",\"credentials\":{\"openAiApi\":{\"id\":\"54d0b567-b3fc-4c6a-b6be-546e0b9cd83f\",\"name\":\"openrouter\"}}},{\"parameters\":{\"operation\":\"sendMessage\",\"chatId\":{\"__rl\":true,\"value\":\"-4935504511\",\"mode\":\"id\"},\"text\":\"={{ $json.output }}\",\"parseMode\":\"HTML\"},\"type\":\"n8n-nodes-base.telegram\",\"typeVersion\":1.2,\"position\":[1184,-128],\"id\":\"2e66e2c0-9902-4d4f-ae9c-7573af12bff3\",\"name\":\"Telegram Push\",\"credentials\":{\"telegramApi\":{\"id\":\"8f6a5210-a771-4981-b0a0-09e62769828b\",\"name\":\"Telegram account\"}}}],\"pinData\":{},\"connections\":{\"Scheduled Trigger\":{\"main\":[[{\"node\":\"Get Top 100 Holdings\",\"type\":\"main\",\"index\":0}]]},\"Get Top 100 Holdings\":{\"main\":[[{\"node\":\"Smart Money Screening\",\"type\":\"main\",\"index\":0}]]},\"Smart Money Screening\":{\"main\":[[{\"node\":\"Smart Wallet Loop\",\"type\":\"main\",\"index\":0}]]},\"Smart Wallet Loop\":{\"main\":[[{\"node\":\"Holding Token Classification\",\"type\":\"main\",\"index\":0}],[{\"node\":\"Get Smart Money Holding Tokens\",\"type\":\"main\",\"index\":0}]]},\"Holding Token Classification\":{\"main\":[[{\"node\":\"Count Token Frequency\",\"type\":\"main\",\"index\":0}]]},\"Get Smart Money Holding Tokens\":{\"main\":[[{\"node\":\"Smart Wallet Loop\",\"type\":\"main\",\"index\":0}]]},\"Count Token Frequency\":{\"main\":[[{\"node\":\"AI Intelligent Analysis\",\"type\":\"main\",\"index\":0}]]},\"AI Intelligent Analysis\":{\"main\":[[{\"node\":\"Telegram Push\",\"type\":\"main\",\"index\":0}]]},\"OpenAI Model\":{\"ai_languageModel\":[[{\"node\":\"AI Intelligent Analysis\",\"type\":\"ai_languageModel\",\"index\":0}]]}},\"active\":false,\"settings\":{\"timezone\":\"Asia/Shanghai\",\"executionOrder\":\"v1\"},\"tags\":[],\"meta\":{\"templateCredsSetupCompleted\":true},\"credentials\":{},\"id\":\"77650c86-eb9b-4fef-87fd-141a6ab462e6\",\"plugins\":{},\"mcpClients\":{}},\"startNodes\":[],\"triggerToStartFrom\":{\"name\":\"Scheduled Trigger\"}}"}