by WeWeb
This template gives you a complete, automated system for monitoring Reddit and extracting growth insights. It tracks discussions across target subreddits, surfaces what users love, dislike, want changed, and highlights how they compare you to competitors. Paired with the free WeWeb UI template, it prioritizes engagement and organizes everything into a clean, easy-to-use dashboard. So every team gets the insights they need: Leadership** gains clarity on industry trends and emerging shifts Product** can adjust roadmaps and prioritize features or integrations Marketing** gets content angles, competitive messaging, and SEO topics Sales** receives objection insights straight from real conversations Support** spots early patterns in user challenges 🙌 Who this is for Perfect for product teams, founders, and growth marketers who want to build and scale Reddit as a channel without spending hours manually scanning threads. 💫 What Makes This Different Eliminates manual scanning:** Automatically pull product and competitor mentions using F5Bot for free, without the high cost of traditional monitoring tools. Captures full conversations:** Track not just posts, but the entire comment chain where real insights, objections, and frustrations actually surface. AI-powered prioritization:** Every mention is classified by sentiment and topic so you know what to prioritize and why. Cross-team intelligence:** Highlights product insights, competitor signals, sales objections, user frustrations, and industry trends, helping product, marketing, sales, support, and leadership make more customer-centric decisions. ⚙️ How the Workflow Works A cron job runs every hour and scans your Gmail inbox for new F5Bot alert emails. When an alert is found, the workflow extracts all mention data from the email. An AI node processes each mention to: categorize it by topic tag sentiment All data is stored in Supabase. The data is displayed in a WeWeb dashboard where users can browse mentions. If a user wants deeper context, they click “AI Summary.” This triggers a webhook in n8n, which pulls the main Reddit post and its entire comment chain. The AI node summarizes the full thread and highlights: the core discussion competitor comparisons what users like or dislike industry-level signals The workflow returns a clean, actionable summary back to the WeWeb UI. 🧪 Requirements You don’t need any heavy infrastructure. To get started, you’ll need: F5Bot account (free)** - to track Reddit mentions by keywords and trigger email alerts Gmail integration** - so the workflow can parse emails from F5Bot OpenAI API key** - for AI-powered categorization and summarization Supabase project (free)** - to store all mention data WeWeb account (free)** - connects your n8n workflow to a clean, user-friendly dashboard for viewing insights Here's a detailed setup guide. 🔧 Want to Go Further? This setup is beginner-friendly, but you can extend it with: Blog topic generation Full blog post generation Social media posts Competitor benchmarking reports Weekly or monthly email digests Slack alerts for high-signal mentions
by Roshan Ramani
Nano Banana AI Image Editor Transform your Telegram photos with AI-powered image processing using the revolutionary Nano Banana technology. This workflow automatically receives photos via Telegram, processes them through Google's advanced Gemini 2.5 Flash vision model, and sends back intelligently enhanced images - all powered by the innovative Nano Banana processing pipeline. Who's it for Perfect for content creators, social media managers, photographers, and anyone who wants to automatically enhance their Telegram photos with AI. Whether you're running a photo editing service, creating content for clients, or just want smarter image processing in your personal chats, the Nano Banana AI editor delivers professional-grade results. How it works The Nano Banana workflow creates an intelligent Telegram bot that processes images in real-time. When you send a photo with a caption to your bot, it automatically downloads the image, converts it to the proper format, sends it to Google's Gemini AI for analysis and enhancement, then returns the processed result. The Nano Banana engine optimizes every step for speed and quality. How to set up Create Telegram Bot: Get your bot token from @BotFather on Telegram OpenRouter Account: Sign up at openrouter.ai for free Gemini access Configure Credentials: Add your Telegram and OpenRouter API keys to n8n Update Chat ID: Replace "YOUR_CHAT_ID_HERE" with your actual Telegram chat ID Activate Webhook: Enable the Telegram trigger to start receiving messages Requirements n8n instance (cloud or self-hosted) Telegram Bot API credentials OpenRouter account (free tier available) Basic understanding of webhook configuration How to customize the workflow The Nano Banana editor is highly customizable: Change AI Model:** Modify the model parameter in "Nano Banana Image Processor" node Add Filters:** Insert additional processing nodes before the AI analysis Custom Prompts:** Edit the text content sent to Gemini for different processing styles Multiple Chats:** Duplicate the final node for different Telegram destinations Error Handling:** Add conditional logic for failed processing attempts Batch Processing:** Extend to handle multiple images simultaneously The Nano Banana technology ensures optimal performance while maintaining flexibility for your specific use cases.
by Shohani
Send daily inspirational quotes with AI translation to Telegram subscribers This n8n workflow creates an automated daily quote bot that fetches inspirational quotes, translates them using AI, adds emoji "stickers," and sends them to registered Telegram subscribers. Perfect for content creators, coaches, or anyone wanting to share daily motivation with their audience. Who's it for Content creators and social media managers Life coaches and motivational speakers Community managers running Telegram channels Anyone wanting to automate daily inspirational content Developers learning n8n automation with AI integration How it works The workflow operates on two main flows: Daily Quote Distribution: Schedule Trigger runs daily to fetch a random inspirational quote HTTP Request fetches quotes from the ZenQuotes API (free service) Google Gemini AI translates the quote to your target language and adds relevant emoji "stickers" Google Sheets retrieves the list of registered subscribers Telegram sends the formatted quote (original + translated + emojis) to all subscribers User Registration: Telegram Trigger listens for new messages to your bot Google Sheets automatically registers new users who interact with the bot Requirements Telegram Bot Token** - Create a bot via @BotFather on Telegram Google Gemini API** - For AI translation and emoji enhancement Google Sheets** - To store subscriber list (free Google account) ZenQuotes API** - Free, no API key required How to set up Create Telegram Bot: Message @BotFather on Telegram, create a new bot, and save the token Set up Google Sheets: Create a spreadsheet with columns: registered_users, date Configure Gemini API: Get your API key from Google AI Studio Update the Set Fields node: Configure your target language and bot preferences Test the workflow: Send a message to your bot to register, then manually trigger the quote sending How to customize the workflow Change target language**: Modify the AI prompt in the LLM Chain node to translate to any language Adjust sending schedule**: Update the Schedule Trigger to send quotes at your preferred time/frequency Customize quote sources**: Replace the HTTP Request with other quote APIs or your own content Add quote categories**: Enhance the AI prompt to categorize quotes (motivational, business, life, etc.) Include user preferences**: Expand Google Sheets to store user language preferences for personalized translations Good to know The workflow automatically handles new subscriber registration Supports MarkdownV2 formatting for rich text in Telegram Uses emoji "stickerization" to make quotes more engaging and visual Demo bot working with this workflow is @sgsbot on Telegram
by Khairul Muhtadin
unli.dev + n8n + Telegram Image Analyzer turns images sent to your Telegram bot into clean, Markdown-formatted transaction text using unli.dev Vision API. Instead of typing numbers and dates manually, the workflow downloads the photo, converts it to base64, analyzes it via API, and replies in-chat with extracted details, saving time and reducing errors. 💡 Why Use Image Analyzer? Save time:** Process images in seconds, cutting manual entry by up to 90%. Solve pain points:** No more blurry screenshot frustration; get clean Markdown transactions. Faster outcomes:** Per-image turnaround under 15s. Competitive edge:** Give staff/customers structured feedback instantly ⚡ Perfect For Small business owners:** Capture receipts/payments quickly. Accountants/bookkeepers:** Intake client receipts with fewer typos. Ops/support teams:** Turn messy screenshots into actionable records. 🔧 How It Works Trigger: Telegram bot receives photo. Process: Convert to base64 & prepare request. Smart Logic: Call unli.dev Vision API for text extraction. Output: Send Markdown result back to Telegram. Optional: Save structured data to Google Sheets, Airtable, or DB. 🛠 Quick Setup Import workflow JSON to your n8n instance. Add credentials: Telegram bot + unli.dev API key. Customize the system prompt (default: extract the transaction in Markdown). Test by sending a real photo to your bot. 🧩 You’ll Need n8n instance Telegram bot token unli.dev Vision API key Optional: Google Sheets / Airtable for storage Made by: Khaisa Studio Category: Image Analysis Contact: Get in touch
by Sabrina Ramonov 🍄
Description This fully automated AI Twin Viral News system researches the latest trending news in any niche or industry, then generates talking-head AI clone videos WITHOUT having to film or edit yourself. This can easily be tailored to any particular niche, simply by updating the Perplexity research prompty. It combines ChatGPT, Perplexity, HeyGen, and Blotato to research, create, and auto-post talking-head AI avatar videos to every social media platform, every single day. Who Is This For? This is perfect for digital marketing agencies, small business owners, entrepreneurs, content creators, influencers, and social media agencies. How It Works 1. Trigger Schedule: configured to run once daily at 10am 2. AI Researcher Call Perplexity to research the top 10 latest news in your industry Select news story most likely to go viral Compile detailed factual report on selected news story 3. AI Writer AI writes monologue script, video caption, and short title 4. Create Avatar Video Call HeyGen API (requires paid API plan), specifying your avatar ID and voice ID Create avatar video; optionally pass an image/video background if you have a green screen avatar 5. Get Video Wait awhile, then fetch completed avatar video Upload video to Blotato 6. Publish to Social Media via Blotato Connect your Blotato account Choose your social accounts Either post immediately or schedule for later Setup & Required Accounts Sign up for Perplexity.ai and set up your API Billing Generate your Perplexity API Key: https://www.perplexity.ai/account/api/keys Sign up for Blotato.com Generate Blotato API Key via Settings > API > Generate API Key (paid feature only) Ensure "Verified Community Nodes" enabled in n8n Admin Panel Install "Blotato" verified community node Create Blotato credential Sign up for HeyGen web plan and API plan Paste your HeyGen API key, HeyGen avatar ID, and HeyGen voice ID Complete the 2 setup steps in BROWN sticky notes in this template Optional: Background Image/Video Behind Avatar Ensure you have an avatar with background removed (requires higher tier Heygen plan) Open SETUP HEYGEN node and set parameter 'has_background_video' to true Open SETUP HEYGEN node and replace video URL in parameter 'background_video_url' Recommendation: Only enable after the basic workflow is operational, i.e. you can make avatar videos without a background Tips & Tricks Perplexity API account must have billing funded HeyGen API requires paid plan Make sure you copied your avatar ID correctly (not the group avatar ID) If your script is long, it takes more time for your video to finish While testing: Enable only 1 social platform and deactivate the rest Update AI writer prompt to return a 5-second script instead of 30 seconds to reduce processing time Go to HeyGen and check that your avatar video is being processed After the workflow finishes, check your social media account for the final post If successful, enable another social media node and continue testing 📄 Documentation Full Tutorial Troubleshooting Check your Blotato API Dashboard to see every request, response, and error. Click on a request to see the details. Need Help? In the Blotato web app, click the orange button on the bottom right corner. This opens the Support messenger where I help answer technical questions. Connect with me: Linkedin | Youtube
by Roshan Ramani
Product Ingredient Safety Analyzer with AI via WhatsApp What does this workflow do? This workflow creates an intelligent WhatsApp bot that analyzes product ingredients and provides instant safety assessments. Users can send either text queries (product names/brands) or images of product labels, and receive AI-powered analysis covering food, cosmetics, personal care, pharmaceuticals, and household products. Who's it for? Health-conscious consumers** wanting to make informed purchasing decisions Parents** checking product safety for their children People with allergies or sensitivities** screening for harmful ingredients Beauty and skincare enthusiasts** verifying cosmetic product safety Wellness coaches or nutritionists** helping clients evaluate products Small business owners** offering product safety consultation services Eco-conscious consumers** checking for environmental toxins Anyone** looking to understand what's in their everyday products What do you need to get started? Required Accounts & APIs: WhatsApp Business API** - For receiving and sending messages Google Cloud Account** - For Document AI (OCR) service Google Gemini API** - For AI-powered ingredient analysis Setup Steps: Configure WhatsApp Business API credentials Enable Google Document AI in your Google Cloud project Create a Document AI processor for OCR Set up Google Gemini API access Configure all credentials in N8N How does this workflow work? User Input Options: Text Messages**: Send product name/brand (e.g., "Dove soap", "Coca Cola") Images**: Upload photos of product ingredient labels Conversational**: Ask questions or request help Processing Flow: For Image Messages: WhatsApp receives image message Extracts and downloads the image Converts image to Base64 format Uses Google Document AI OCR to extract text AI analyzes extracted text + user caption Returns safety assessment via WhatsApp For Text Messages: WhatsApp receives text query AI directly analyzes product name/ingredients Returns safety assessment via WhatsApp AI Analysis Includes: Product type identification (food, cosmetic, pharmaceutical, etc.) Harmful ingredient detection (parabens, sulfates, trans fats, etc.) Beneficial ingredient highlights Clear safety verdict: ✅ SAFE / ⚠️ CAUTION / ❌ AVOID Practical recommendations and alternatives Response Format: The AI provides concise, WhatsApp-friendly messages with: Product category and type Key ingredients found Safety concerns with specific flags Clear recommendation Actionable advice Use Cases Health-conscious consumers** checking food product ingredients Beauty enthusiasts** verifying cosmetic safety Parents** ensuring child product safety People with allergies** screening for harmful ingredients Eco-conscious users** checking for environmental toxins General wellness** making informed purchase decisions Key Features Dual input support**: Text and image processing OCR technology**: Extracts text from product labels Multi-category analysis**: Food, cosmetics, pharmaceuticals, household items Conversational AI**: Handles greetings, help requests, unclear queries Mobile-optimized**: WhatsApp-friendly formatting Instant results**: Real-time safety assessments Educational**: Explains why ingredients are safe or harmful Technical Highlights Smart routing**: Automatically detects message type (text vs image) Structured output**: JSON-formatted AI responses for reliability Product-specific criteria**: Different analysis standards per category Error handling**: Requests clearer images if OCR fails Conversational fallback**: Guides users when information is insufficient Example Interactions User sends image of shampoo bottle: Response: "Hair Care Product Analysis - Contains sulfates and parabens. ⚠️ USE WITH CAUTION. Consider sulfate-free alternatives for healthier hair." User texts "Maggi noodles": Response: "Food Product Analysis - High sodium content, contains MSG and artificial colors. ❌ AVOID REGULAR CONSUMPTION. Occasional treat okay." User texts "Hi": Response: "Hi! I'm your Product Safety Analyzer. Send me a product name or photo of ingredients to check safety!" Benefits Empowers informed decisions**: Know what you're consuming/using Saves research time**: Instant analysis vs manual ingredient lookup Accessible**: Works via familiar WhatsApp interface Comprehensive**: Covers multiple product categories Educational**: Learn about ingredient safety over time Convenient**: Analyze products while shopping Notes OCR works best with clear, well-lit images AI provides general safety information, not medical advice Analysis based on commonly known ingredient safety standards Users should consult professionals for specific health concerns Supports conversational queries for better user experience
by Amit Mehta
N8N Workflow: Send and Check TTS (Text-to-speech) Voice Calls with Email Verification This workflow automates a two-factor verification process using a voice call and an email. It is designed to send a text-to-speech (TTS) voice call with a verification code and, upon successful voice verification, to send an email with a second verification code. How it Works This workflow automates the process of sending voice calls for verification and combines it with email verification. It uses the ClickSend API for the voice call and an SMTP integration for sending the email. Use Cases Two-factor authentication (2FA) for user registration or login. Automated verification for phone numbers and email addresses. Building a custom verification system for web applications. Setup Instructions ClickSend API: Register on ClickSend and obtain your API Key. In the Send Voice node, create a Basic Auth credential using your ClickSend username and API Key as the password. SMTP Credentials: In the Send Email node, you must set up your SMTP credentials for the sender's email. Workflow Logic Trigger: The workflow is started by submitting a form. Set Voice Code: The workflow sets a predefined voice verification code. Send Voice Call: A voice call is made to the provided phone number using the ClickSend API, where a synthesized voice reads the code. Verify Voice Code: A form appears to prompt the user to enter the voice code they received. Conditional Check: An If node checks if the entered voice code is correct. Set Email Code & Send Email: If the voice code is correct, a second code is set, and an email is sent to the user with that code. Verify Email Code: The user is then prompted to enter the code from the email. Final Check: A final If node verifies the email code. The workflow either leads to a Success message or a Fail email code message. Node Descriptions | Node Name | Description | |-----------|-------------| | On form submission | This trigger node presents a form to the user to collect their phone number, desired voice, language, email, and name. | | Set voice code | A Set node that defines the verification code for the voice call. | | Code for voice | A Code node that adds spaces between the digits of the voice code to make it sound clearer during the call. | | Send Voice | This httpRequest node sends a POST request to the ClickSend API to initiate the TTS voice call. | | Verify voice code | A form node that prompts the user to enter the code they received via the voice call. | | Is voice code correct? | An If node that checks if the code entered by the user matches the predefined voice code. | | Set email code | A Set node that defines the verification code for the email. | | Send Email | This node uses an SMTP credential to send an email to the user with their verification code. | | Verify email code | A form node that prompts the user to enter the code they received via email. | | Is email code correct? | An If node that checks if the code entered by the user matches the predefined email code. | | Success | A form node that displays a success message upon completion of both verifications. | | Fail voice code | A form node that displays a failure message if the voice code is incorrect. | | Fail email code | A form node that displays a failure message if the email code is incorrect. | Customization Tips You can change the verification codes by modifying the values in the Set voice code and Set email code nodes. The form can be customized to change the fields, labels, and dropdown options for voice and language. The email content and subject can be customized in the Send Email node. Suggested Sticky Notes for Workflow STEP 1**: "Register here to ClickSend and obtain your API Key... In the node 'Send Voice' create a 'Basic Auth' with the username you registered and the API Key provided as your password". STEP 2**: "Set the verification code for this explanatory flow... In the node 'Send Email' set the sender". STEP 3**: "Submit the form and you will receive a call to the phone number you entered where the selected voice will tell you the content of the text you wrote". Set voice code**: "Set the code that will be spoken in the verification phone call". Set email code**: "Set the code that will be sent in the verification email". Required Files 1g8EAij2RwhNN70t_xSend_and_check_TTS_(Text-to-speech)_voice_calls_end_email_verification.json: The n8n workflow export file for this automation. Testing Tips Run the workflow and submit the form with your phone number and email. Check your phone for the voice call and listen for the code. Enter the correct voice code in the next form and submit. Check your email for the second verification code. Enter the correct email code to test the success path, or an incorrect one to test the failure path. Suggested Tags & Categories #Verification #Voice #Email #API #Authentication
by Mezie
What it does Receives campaign parameters via form, creates a Smartlead campaign, sources qualified leads through Wiza based on your ICP description, researches each prospect with Perplexity AI, generates personalized icebreaker emails and follow-up sequences with OpenRouter LLMs, and uploads everything to Smartlead for automated delivery. Who's it for B2B sales teams, marketing agencies, and consultants who want to automate the entire SDR prospecting process from lead sourcing to personalized email delivery. Requirements n8n (self-hosted or cloud) Smartlead API Key Wiza Bearer Token OpenRouter API Key Perplexity API Key How to set up Import workflow JSON into n8n Configure Smartlead, Wiza, OpenRouter, and Perplexity credentials Create Lead Database and Case Study tables in n8n Update the "Business Context" node with your offer Activate workflow and use the campaign form How to customize Adjust ICP translation logic in the "Format Search Parameters" agent Modify email templates in the "Ice Breaker Email Generator" prompt Change follow-up sequence timing in the "Build Sequence Templates" code node
by Dominic Saraum
The Google Meet AI Assistant workflow provides intelligent meeting analysis by integrating Google Calendar, Google Drive, AssemblyAI transcription, Anthropic Claude AI, Slack, and Notion. It automates the complete process of fetching meeting data, retrieving recordings, transcribing conversations, analyzing with AI, and distributing actionable insights. Workflow Steps Step 1: Fetch Meetings Retrieves Google Calendar events from the last 24 hours. Filters for confirmed meetings with Google Meet conference links. Step 2: Get Recording Searches for the meeting recording file saved in Google Drive. Downloads the recording for transcription purposes. Step 3: Transcribe Recording Uses AssemblyAI to transcribe the recording. Transcription includes speaker labels, highlights, and sentiment analysis. Step 4: AI Analysis Analyzes the transcript with Anthropic Claude AI. Extracts: Meeting summary (2-3 paragraphs) Action items with responsible parties Mentioned dates or deadlines Overall meeting sentiment Step 5: Distribute Summary Posts meeting summary and insights to a Slack channel. Creates tasks for action items in Notion. Integration Overview Google Calendar: Event retrieval and filtering of Google Meet meetings. Google Drive: Recording search and download. AssemblyAI: Audio transcription with advanced features. Anthropic Claude (Langchain): AI-driven analysis of transcripts. Slack: Notification distribution for meeting summaries. Notion: Task creation for actionable items. Error Handling If a recording is not found, stops execution and returns an error message: "No recording found for this meeting. Please ensure the meeting was recorded and saved to Google Drive." Summary This workflow fully automates the end-to-end process of meeting analysis from calendar event detection to action item task creation using AI, enabling productivity gains for meeting-heavy teams. If further use or support is needed, you can contact me via LinkedIn. If you want, I can also help create a detailed documentation or a formatted description ready for sharing or integration guides. Let me know!
by Davide
This workflow implements a complete Voice AI Chatbot system for Wordress that integrates speech recognition, guardrails for safety, retrieval-augmented generation (RAG), Qdrant vector search, and audio responses. It is designed to be connected to a WordPress Voicebot AI plugin through a webhook endpoint. Key Advantages ✅ Complete Voice AI Pipeline** The workflow handles: audio input STT intelligent processing TTS output All within a single automated process. ✅ Safe and Policy-Compliant Thanks to the Guardrails module, the system automatically: detects harmful or disallowed requests blocks them responds safely This protects both the user and the business. ✅ Contextual and Memory-Based Conversations The Window Buffer Memory tied to unique session IDs enables: continuous conversation flow natural dialogue better understanding of context ✅ Company-Specific Knowledge via RAG By integrating Qdrant as a vector store, the system can: retrieve business documentation give accurate and up-to-date answers support personalized content This makes the chatbot far more powerful than a standard LLM. ✅ Modular and Extensible Architecture Because everything is modular inside n8n, you can: swap OpenAI with other models add new tools or knowledge sources change prompts or capabilities without redesigning the entire workflow. ✅ **Easy WordPress Integration The workflow connects directly to a WordPress Voicebot plugin, meaning: no custom backend development simple deployment fast integration for websites ✅ Automatic Indexing of Documents The second workflow section: fetches Google Drive files converts them into embeddings indexes them into Qdrant This lets you maintain your knowledge base with almost no manual work. How It Works This workflow creates a Wordpress voice-enabled AI chatbot that processes audio inputs and provides contextual responses using RAG (Retrieval-Augmented Generation) from a Qdrant vector database. The system operates as follows: Audio Processing Pipeline: Receives audio input via webhook and converts speech to text using OpenAI's STT (Speech-to-Text) Applies guardrails to detect inappropriate content or jailbreak attempts using a separate GPT-4.1-mini model Routes safe queries to the AI agent and blocks unsafe content with a default response AI Agent with Contextual Memory: Uses OpenAI Chat Model with window buffer memory to maintain conversation context Equips the agent with two tools: Calculator for computations and RAG tool for business knowledge retrieval The RAG system queries Qdrant vector store containing company documents using OpenAI embeddings Response Generation: Generates appropriate text responses based on query type and available knowledge Converts approved responses to audio using OpenAI's TTS (Text-to-Speech) with "onyx" voice Returns binary audio responses to the webhook caller Set Up Steps Vector Database Preparation: Create Qdrant collection via HTTP request with specified vector configuration Clear existing collection data before adding new documents Set up Google Drive integration to source documents from specific folders Document Processing Pipeline: Search and retrieve files from Google Drive folder "Test Negozio" Process documents through recursive text splitting (500 chunk size, 50 overlap) Generate embeddings using OpenAI and store in Qdrant vector store Implement batch processing with 5-second delays between operations System Configuration: Configure webhook endpoint for receiving audio inputs Set up multiple OpenAI accounts for different functions (STT, TTS, guardrails, main agent) Establish Qdrant API connections for vector storage and retrieval Implement session-based memory management using session IDs from webhook headers WordPress Integration: Install the provided Voicebot AI Agent WordPress plugin Configure the plugin with the webhook URL to connect to this n8n workflow The system is now ready to receive audio queries and respond with voice answers The workflow handles both real-time voice queries and background document processing, creating a comprehensive voice assistant solution with business-specific knowledge retrieval capabilities. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by Sakar Dahal
This is the AI agent which will set the event in the Google Calendar and get the events from the calendar based on the prompt provided to AI agent based on Gemini.
by Gareth Roll
This workflow uses OpenAI to generate tweets to be stored in Airtable for review. A JS snippet handles the topics to be tweeted about in the form of hashtags.