Skip to content

LinkedOut was built to help manage hectic LinkedIn inboxes on mobile and desktop. It includes AI draft replies and static text snippets library, making it a nimble assistant without being ChatGPT.

License

Notifications You must be signed in to change notification settings

JohnnyRafael/linkedout

 
 

Repository files navigation

LinkedOut - AI-Powered LinkedIn Inbox

LinkedOut Preview

LinkedOut was built to help manage hectic LinkedIn inboxes on mobile and desktop. It includes AI draft replies and static text snippets library, making it a nimble assistant without being ChatGPT. Front-end built with Next.js, TypeScript, and Tailwind CSS. Backend runs on n8n and PocketBase. Clone it, tweak it, make it yours.

Features

  • AI-powered message drafts
  • Responsive design for mobile and desktop
  • Beautiful UI with dark mode support
  • Secure authentication
  • Setup wizard to deploy backend and set up database
  • Open source: Self-host it, fork it.

Known Outscope

  • Emoji reactions will not show
  • Group threads do not show (only Classic LinkedIN inbox, no Sales navigator either). Should be easy to tweak.
  • Draft reply only takes previous message (and name) as context.
  • Text Snippets can be Created/ Updated / Deleted via PocketBase, not yet in-app.
  • Manual setup route not documented yet (working on it)
  • Setup flow does not configure AI model nodes in n8n workflow (WIP)

Tech Stack

LinkedOut Preview

Frontend

  • Framework: Next.js (App Router)
  • Language: TypeScript
  • Styling: Tailwind CSS
  • UI Components: shadcn/ui
  • Authentication: Custom auth with JWT

Backend

  • Database & Auth: PocketBase
  • Workflows as Backend: n8n via webhook endpoints, and n8n api for /setup
  • LinkedIn API Access: Unipile

Prerequisites

  • Node.js 18+
  • npm or yarn
  • PocketBase instance
  • n8n instance for automation workflows. Get 50% off n8n cloud for 12 months with MAX50. Enter coupon after free trial when choosing a plan.
  • A Unipile account for LinkedIn API access. Get 50% off Unipile for 3 months with MAXFROMN8N code (message support with code after sign up)

Installation

Watch a set up video on YouTube.

Via Docker

  1. Clone the repository

    git clone https://github.com/maxt-n8n/linkedout.git
    cd linkedout
  2. Configure environment variables (optional)

    • Create a .env file in the root directory or modify the values directly in docker-compose.yml
    • Set the following variables:
      [email protected]
      PB_ADMIN_PASSWORD=your-secure-password
      N8N_WEBHOOK_URL=http://n8n:5678
      POCKETBASE_URL=http://localhost:8090
      
  3. Build and start the containers

    docker compose up --build
  4. Access the applications

  5. Complete the setup wizard

Docker Networking Notes

The Docker Compose setup uses a special configuration for networking:

  • The frontend container uses http://n8n:5678 to communicate with n8n
  • The browser uses http://localhost:8090 to access PocketBase
  • This hybrid approach allows both browser and server-side code to work without modifications

If you encounter networking issues:

  • Make sure all containers are running (docker compose ps)
  • Check container logs (docker compose logs frontend)
  • You may need to rebuild without cache (docker compose build --no-cache)

Via CloudStation Template

  1. Set up the one-click LinkedOut + PocketBase template on CloudStation: CloudStation LinkedOut Template. You'll need an n8n instance ready by this step.
  2. Follow the setup wizard to connect your n8n instance and Unipile account.
  3. Complete the setup wizard (go to /setup if you get redirected to /inbox)
  4. Open your n8n workflows and replace any AI model steps with your own (not yet part of setup flow).

Via Manual Deployment

  1. Set up n8n

    • Create a Unipile [LinkedIn API] Header credential with your Unipile API key
    • Import the following workflows from the GitHub repository:
      • /inbox backend [linkedout]
      • /thread backend [linkedout]
      • New message ingress [linkedout]
      • /setup backend [linkedout] (optional)
    • Update all placeholder values in the workflows:
      • ****POCKETBASE_BASE_URL****: Your PocketBase URL
      • ****POCKETBASE_SERVICE_USER_EMAIL****: Service account email
      • ****POCKETBASE_SERVICE_USER_PASSWORD****: Service account password
      • ****UNIPILE_ACCOUNT_ID****: Your Unipile account ID
      • ****UNIPILE_DSN****: Your Unipile DSN
  2. Set up PocketBase

    • Create the following collections:
      • users (with auth enabled)
      • threads
      • messages
      • text_snippets
    • Create a service account with email [email protected] (or update workflows with your preferred email)
    • Set a secure password for the service account (and update workflows accordingly)
  3. Deploy the Frontend

    • Clone the repository: git clone https://github.com/maxt-n8n/linkedout.git
    • Install dependencies: npm install or yarn install
    • Set environment variables:
      • NEXT_PUBLIC_POCKETBASE_URL: Your PocketBase URL
      • NEXT_PUBLIC_N8N_WEBHOOK_URL: Your n8n webhook URL
    • Build and start the application:
      • Development: npm run dev or yarn dev
      • Production: npm run build && npm start or yarn build && yarn start

Note: Do not include trailing slashes in URL environment variables.

Environment Variables

Variable Description Required
NEXT_PUBLIC_N8N_WEBHOOK_URL N8N URL (without /webhook) Yes
NEXT_PUBLIC_POCKETBASE_URL PocketBase URL Yes
PB_ADMIN_EMAIL PocketBase admin email For Docker setup
PB_ADMIN_PASSWORD PocketBase admin password For Docker setup

Note: do not include '/' trailing slash in URL env variables. It will break things (WIP to filter that out).

Contributing

Post an issue to discuss merging in a change. We'll open it up for more streamlined contributions if there's interest.


Made with ❤️ by Max and Oumnya

About

LinkedOut was built to help manage hectic LinkedIn inboxes on mobile and desktop. It includes AI draft replies and static text snippets library, making it a nimble assistant without being ChatGPT.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.3%
  • Other 1.7%