Matty Reed
Student and Teacher | Designer and Builder | Helping Founders Flourish
Templates by Matty Reed
Generate written content with GPT Recursive Writing & Editing agents
Who is this for? Content creators, writers, and automation enthusiasts experimenting with recursive AI workflows for content generation and refinement. Ideal for those exploring AI agents that collaborate in cycles of writing and editing. What problem does this solve? This template introduces a fully automated, recursive writing‑editing loop using multi‑agent collaboration. A “Writing Agent” generates content based on an input topic. An “Editing Agent” reviews it, suggests improvements, and determines whether the work is complete. The loop continues until the editor is satisfied—allowing for high‑quality, iterative AI‑assisted writing with minimal human input. How it works This template is a foundational setup to help you build custom recursive writing workflows: Trigger: Activated by an n8n chat message containing a topic. You can customize this to work with webhooks, forms, or other input sources. Edit Handler: A code node checks for previous edits and sets a default empty string if none are found. Writing Agent: Generates a blurb based on the topic and any edits. Customize the prompt in this node by editing the user/system instructions to fit your tone, domain, or style preferences. Editing Agent: Suggests specific edits and outputs a structured JSON object: json { "status": "incomplete", "edits": "Replace passive voice with active voice in the second sentence. Clarify the main idea in the opening line." } You can adjust the JSON format or editing criteria in the prompt field. Customize the prompt in this node by editing the user/system instructions to fit your tone, domain, or style preferences. Recursive Loop: If the status is “incomplete,” the edits are passed back to the Writing Agent, which revises the blurb. Completion: Once the Editing Agent outputs a status of “complete,” the workflow ends, and the final blurb is returned to the n8n chat. Setup Steps Import the Template into your n8n workspace. Configure API Credentials: Link your OpenAI API key (or your preferred LLM like Claude or Gemini) in the credentials section. Customize the Prompts (Optional but recommended): In the Writing Agent, you can instruct it to mimic a specific tone, format, or genre. In the Editing Agent, specify your editing standards (e.g., concise, persuasive, technical). Modify the JSON output structure in the Structured Output Parser node if needed. Test and Iterate: Run a test by sending a topic via the chat trigger and observe the loop behavior. Example Output Input Topic: “The future of remote work” Final Blurb: “Remote work is here to stay. As companies embrace flexible setups, productivity and employee satisfaction are reaching new highs. The challenge now is to build culture and collaboration tools that keep up.” This template offers a powerful starting point for recursive AI writing. Expand it with additional agents, tone shifts, formatting layers, or sentiment analysis as needed.
Starred Slack messages to Notion database with AI auto-tagging
Who is this for? Teams that want to capture important Slack messages in Notion with smart categorization. Perfect for knowledge workers, community managers, or any team that needs to preserve valuable conversations from Slack and organize them automatically in a Notion database. What problem does this solve? Important Slack messages get buried in chat history and are hard to find later. This workflow monitors your Slack channel and automatically saves starred messages to Notion with AI-generated titles and smart tags. No more manually copying messages or losing track of important discussions. How it works Trigger - Schedule Trigger fires every 10 minutes to check for new messages. Get Slack Messages - fetches recent messages from your specified Slack channel within the last 10 minutes. Star Filter - only processes messages that have been reacted to with a ⭐ emoji (configurable to any emoji). Get Message Link - retrieves the permanent link to the starred Slack message. Choose Notion DB - connects to your target Notion database and loads available tag options. Set Tags - prepares the available tags from your Notion database for AI processing. AI Processing - uses OpenAI GPT-4o-mini to: Generate a concise title (under 50 characters) Automatically categorize the message with existing tags (90%+ confidence threshold) Create Notion Page - saves the message to Notion with: AI-generated title Auto-selected tags Original message content Permanent link back to Slack Setup steps Import and connect credentials Import this template into n8n Connect your Slack API credentials (Slack Bot Setup Guide) Connect your Notion API token (Notion Integration Guide) Connect your OpenAI API credentials Configure Slack integration Create a Slack bot and add it to your target channel Update the channelId in "Get Slack Messages" node with your channel ID Ensure your bot has these permissions: channels:history - to read channel messages reactions:read - to detect star reactions chat:write.public - to get message permalinks Slack Bot Setup Resources: Creating a Slack App Bot Token Scopes Adding Apps to Channels Set up Notion database Create or use existing Notion database with required properties: Tags (Multi-select) - add tag options with descriptions for better AI accuracy Link (URL) - for storing Slack permalink Title (Title) - will be auto-populated by AI Update the databaseId in "Choose Notion DB" and "Create Notion Page" nodes Customize the workflow Change trigger emoji: Edit the IF condition to use a different emoji (e.g., bookmark, pushpin) Adjust timing: Modify the Schedule Trigger interval (remember to update the "oldest" filter in Get Slack Messages to match) Improve AI prompts: Edit the prompt in "Write Title & Tag" node for better categorization Test the setup Star a message in your Slack channel Wait for the next 10-minute trigger or manually execute the workflow Check your Notion database for the new entry Example output Slack message: > "Hey team, just found this amazing tool for automating our design workflow. We should definitely consider it for next sprint: https://example.com/design-tool" Generated Notion page: Title: "Design Tool Recommendation for Next Sprint" Tags: "Tools", "Design", "Sprint Planning" Content: Full message text with Slack permalink Link: Direct link back to original Slack message Extending the flow Multi-channel support - duplicate the "Get Slack Messages" node for different channels and merge the outputs. Enhanced AI processing - modify the prompt to extract additional metadata like: Priority levels Action items Mentioned team members Due dates Rich content preservation - add logic to handle Slack attachments, images, or threaded replies. Notification system - add nodes to notify team members when important messages are archived. Sentiment analysis - incorporate additional AI processing to categorize message sentiment or urgency. This template provides a lean setup for intelligent Slack-to-Notion archiving. Star important messages, let AI handle the organization, and never lose track of valuable conversations again.
Generate AI short-form videos with Creatomate, ElevenLabs & Pexels Stock
Who is this for? Creators, agencies, and marketers who need short-form vertical video at scale. Anyone who wants to turn a topic into an edited “talking shorts” style clip without opening a video editor. What problem does it solve? Manually producing shorts is slow and repetitive. You have to write the script, hunt for b-roll, generate voiceover, layer music, edit timing, and export. This workflow automates that from prompt to rendered MP4 using AI, stock video, and Creatomate. Note: this template requires a Creatomate template like the one shown below: How it works You submit a topic in a simple n8n form. The workflow uses an AI model to generate a YouTube Shorts style script (~100 words) with hook, body, and looping ending. A second AI step turns that script into 8 visual search terms (for example “person typing at desk,” “happy team in office,” “corporate meeting”) that are likely to exist in stock footage. For each term, the workflow calls the Pexels Videos API and pulls the best portrait clip. It fetches clip details and filters files under 50 MB, then keeps the largest high quality version under that limit. The selected clip URLs are combined into a list that will later map to eight background layers in the Creatomate template. The generated script is sent to ElevenLabs (text-to-speech) to create the voiceover audio file. That audio is uploaded to Google Drive. The workflow then: Randomly picks a background music track from a Drive folder. Sets the Drive file sharing to “anyone with the link” so Creatomate can fetch it directly. The workflow calls Creatomate’s Render API: Injects the voiceover URL, the chosen music URL, and the eight stock video URLs into a predefined vertical template. Also enables auto-subtitles in the template by linking the transcript to on-screen captions. The workflow polls Creatomate until render status is succeeded. When rendering is done, cleanup runs: The temporary voice file in Drive is deleted. Final output metadata (including the render ID and status) is passed to the last node. Result: You get an edited 9:16 short with stock b-roll, captions, voiceover, background music, and transitions. Setup steps n8n Import this workflow JSON into n8n. Expose the included Form Trigger to capture the topic input. AI script + search terms Connect your AI model credentials in the Short Text node for script generation. Connect your AI model credentials in the Video Search Terms node for visual search term generation. Confirm both nodes are wired to output structured JSON to their paired Structured Output Parser nodes. Stock footage Add your Pexels API key as the Authorization header in both Search Videos and Get The Video Details. Keep orientation=portrait so clips match 9:16. Voiceover Add your ElevenLabs API key to the Generate Voice request header (xi-api-key). Set the voice ID in the ElevenLabs URL if you want a different voice. Google Drive Connect Google Drive OAuth in Google Drive, List Short Music Files, and Set File Permissions. In List Short Music Files, point q and folderId to the folder that stores your background music tracks. Confirm Set File Permissions is using role: reader, type: anyone so Creatomate can fetch the audio file. Creatomate render Set your Creatomate API key (Authorization: Bearer <key>) in Create Short and Check Video Status. Replace template_id with your own Creatomate template ID if different. Map each Background-1 ... Background-8 field in the JSON body to the combined clip URLs. These correspond to layers in your Creatomate template. Test end to end Run the workflow with a sample topic. Confirm: Script is generated. At least 8 stock clips are found. Voice file uploads to Drive and becomes publicly readable. Creatomate render finishes with status = succeeded. Adjust template timing and transitions in Creatomate if visuals do not match pacing. Notes The cleanup step deletes the temporary voiceover file from Drive after render to avoid clutter. The workflow chooses a random music track each run to keep videos from sounding identical. The render loop will keep polling Creatomate until the final MP4 is ready. Resources n8n workflow basics: n8n Docs Using AI models in n8n: n8n Docs on AI Anthropic model usage: Anthropic Docs Pexels API reference: Pexels API ElevenLabs text to speech: ElevenLabs Docs Google Drive file access control: Google Drive API Creatomate render API: Creatomate API