- Unique content - based on, but not copied from, real posts - no two posts are the same although it might feel like it
- Seamless integration - blends in with real posts, no one will notice the difference
- Single source of truth - no need to follow multiple accounts, get all your typical LinkedIn content from one source
RidicuLink is a unique bot that generates fictional, satirical content based on real posts from LinkedIn. Live bot can be found here: RidicuLink (LinkedIn)1.
As the rise in popularity of LinkedIn Lunatics 🔥 continues to grow, the creators of this bot saw an opportunity to poke fun at the current state of this "professional" social media site. Using LLM models, specifically currently GPT-3.5-turbo, RidicuLink generates new mind bending content from existing social media posts. This approach allows the bot to seamlessly blend into real-life interactions on LinkedIn. The result is a refreshing take on a platform that can often feel overly serious and dry 🚱. Thereby, turning social media even more into a playground for satire.
The bot is currently running on a Raspberry Pi 4 and continuously generates new posts every day.
- Written in Python using Poetry for dependency management
- Leveraging OpenAI API for content generation
- Using SpaCy for text pre processing and cleaning
- Utilizing Selenium for web scraping of real posts
- With sqlite3 as a simple database for storing real posts
- Scheduled with Cron to run how often you want (usual LinkedIn spam 👀)
- Deployed with Docker on a simple Raspberry Pi 4
Some instructions on how to use this repo. Feel free to open an issue if you have any questions.
poetry installcp .env.example .env- Add your LinkedIn credentials
- Add your OpenAI API key
- Get your Organization ID from LinkedIn - More Info
To find your LinkedIn company ID as a LinkedIn Page Admin, navigate to the Admin View of the LinkedIn Page from the All Pages or Home tab. The LinkedIn company ID is the numbers after "/company/" in the URL.
- Create LinkedIn application and add access token with respective permissions (min w_organization_social) - More Info here and here
- Download ChromeDriver and place it in
./src/, alternatively for other browser drivers, updateSELENIUM_DRIVER_TYPE&SELENIUM_DRIVER_PATHin./conf/config.yml - Update
SEARCH_TOPICSin./conf/config.ymlfor topics / keywords you want to scrape - Run scraper entry point to collect real LinkedIn posts
python src/main_scraper.py- Per defualt, results will be stored in
./data/as linkedin.db
- Run bot entry point to generate new posts
python src/main_bot.pyFor deployment via Docker Container, following steps are required (after setting up your .env file).
The Dockerfile is based on a slim Python image and installs all dependencies via Poetry. The entry point is set to a cron job that runs the bot every twice a day. This can be changed in the ./crontab/crontab file. A wrapper script is used to propagate the environment variables from the .env file through the container to be available for the cron job and successfully run the bot.
Note: all scrapping should be done before building the Docker image, as the image does not contain this functionality.
# 1. - build docker image locally
docker build -t ridic:<version> .
# 2. - run the script in Docker Container manually
docker run -d --env-file ./.env ridic:<version>
Further parameters and configurations can be found in ./conf/config.yml. Especially, the following parameters are worth mentioning:
- ✔️
SEARCH_TOPICS: topics / keywords to search for when scraping LinkedIn posts - ✔️
POST_TOPICS: topics / keywords to use for content generation - these topics should be a subset of theSEARCH_TOPICS - ✔️
OAI_MODEL: OpenAI model to use for content generation - ✔️
OAI_MAX_TOKENS: maximum number of tokens to generate per created content suggestion - this parameter has a minimal randomization build in to create more diverse posts - ✔️
OAI_N_COMPLETIONS: number of completions to generate per request - ✔️
OAI_TEMPERATURE: temperature parameter for content generation, higher values result in more random completions - this parameter has a minimal randomization build in to create more diverse posts - ✔️
OAI_PROMPT_PREFIX: prefix for content generation prompt - can be used to guide the model to generate specific content - ✔️
OAI_PROMPT_SUFFIX: suffix for content generation prompt - can be used to include or exclude specific content
1The views and opinions expressed in these posts do not reflect the official policy or position of the site owner. Any content provided are not intended to malign any religion, ethnic group, club, organization, company, individual or anyone or anything.


