Skip to main content

LinkedIn Python Bot

I built this project because I'm super lazy to check my LinkedIn account.
So by using this bot, I'll increase my profile views, interactions, followers, and connections.
And since I love sharing my stuff with others, I created this package. So if you enjoy it, start it on GitHub.







Features

  • Interact with LinkedIn posts.
    • Like
    • Comment
  • Auto post/image publishing

Installation

pip install automate-linkedin

or

pip install git+https://github.com/SelmiAbderrahim/automate-linkedin

Usage options

  1. CLI

You can use these features throught the command line interface (CLI), which is quite useful to run it on a server.

$ autoln OPTIONS

options:

  • username: Your LinkedIn email address (required).
  • password: Your LinkedIn email password (required).
  • env: Get username & password as environment variables. (optional).
  • headless: Hide the browser's window. (optional).
  1. API

You can use the same features on your own project (code) throught the API.

from automate_linkedin.interactions import Posts
class Interaction(Posts):
    pass

For the LinkedIn authentication, I'm using the easy_selenium to create a Chrome driver and login to LinkedIn accounts.

2.1. Create driver

from easy_selenium.driver.chrome.driver import Driver
driver = Driver()
chrome = driver.create(headless=headless)

2.2. Login

from easy_selenium.authentication.login.linkedin import Login
login = Login(username, password)
authenticated = login.start(chrome)




1. Posts Interactions

CLI

Interact with the LinkedIn 'home page' or 'groups' posts.

Options

  • post-interaction: Interact with your LinkedIn posts. (required).

    autoln --username plain_text_email --password plain_text_password --post-interaction

  • post-number-likes: Number of post likes [default: 5] (required).

    autoln --username plain_text_email --password plain_text_password --post-interaction --post-number-likes 10

  • env: Get username & password as environment variables. (optional).

    autoln --env --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --post-interaction

  • headless: Hide the browser's window. (optional).

    autoln --env --headless --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --post-interaction

  • comment-number-likes: The number of likes of comments. (optional).

  • like-post-comments: Like comments of each posts. (optional).

    autoln --env --headless --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --post-interaction --like-post-comments --comment-number-likes 2

  • auto-comment: Comment with positive examples. (optional).

    autoln --env --headless --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --post-interaction --auto-comment

💡 Example: If I want to run a headless browser to like 20 posts and comment on any of these posts if possible.

autoln --env --headless --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --post-interaction --auto-comment --post-number-likes 25

API

After creating a Chrome driver and making sure you're authenticated, as shown above, you can use this function to interact with posts on your LinkedIn pages and groups.

from interactions import Posts

posts = Posts()
posts.start(chrome)

Attributes:

>> print(Posts.__doc__)

Interact with the LinkedIn posts.

    Params:
        number_of_posts_to_like (int): Number of posts to like (default = 5).
        number_of_post_comments_to_like (int): Number of comments to like for each post (default = 2).
        like_post_comments (bool): Start liking comments (default = False).
        auto_comment (bool): Post a positive comment for random posts (default = False).
        url (str): The page's url (default = 'https://www.linkedin.com/feed')
        short_sleep_range (tuple[float, float]): time.sleep(short range) (default = (0.5, 0.9)) 
        long_sleep_range (tuple[float, float]): time.sleep(long range) (default = (1.5, 4.9)) 

    Returns:
        None




2. publishing

CLI

This will allow you to publish a post with an image or text on your LinkedIn profile.

options:

  • --publish: Enable the publishing option (required).
  • --text: The text content of the post (optional).
  • --image-path: The absolute path of the image (optional).

💡 Example: If I want to publish a post with my image and greeting message.

autoln --env --headless --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --publish --text "Hi people!" --image-path C:\\images\me.png

API

Post text only

from automate_linkedin.publish import Publish
p = Publish()
p.post(chrome, content="greeting!")

Post text and image

from automate_linkedin.publish import Publish
p = Publish()
p.image(chrome, r"C:\Users\selmi\Pictures\BloggersHood1.png", content="zfzazafazf")




3. Network

Manage your network.

3.1. Follow people

You can follow up to 16 people each time.

CLI

autoln --env --headless --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --follow-network

API

from automate_linkedin.networkk import Follow
follow = Follow()
follow.start(driver)

3.2. Connect with people

You can send invites up to 16 people each time.

CLI

autoln --env --headless --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --connect-network

API

from automate_linkedin.networkk import Connect
connect = Connect()
connect.start(driver)




4. Environment variables

There many reasons for using environment variables in your projects, including:

  • Easy configuration
  • Better security
  • Fewer production mistakes

So in your working directory, create a new file .env and place the secrets you'll use with this package.

Exmaple

LINKEDIN_EMAIL_ADDRESS=example@email.com
LINKEDIN_PASSWORD=password

Then you gonna use it throught the cli:

autoln --env --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD

5. Run it on a server

I have tested the below code on my Ubuntu server, if something went wrong, please open a new issue.

  • The first thing you have to do is installing Chrome
sudo apt-get update
sudo apt-get install google-chrome-stable
google-chrome --version
  • Login to your server
ssh user@ip
  • Create a virtualenv

Linux/Mac

python -m pip install virtualenv
python -m virtualenv env
source env/bin/activate

Windows

py -m pip install virtualenv
py -m virtualenv env
env\Scripts\activate
  • Install automate-linkedin
pip install automate-linkedin
  • Create a new bash file with the content below

Let's assume this is my working directory

selmi@7BNVUM:/selmi$ pwd
/home/selmi/automate-linkedin

Then we create a new file like.sh in that working directory.

#!/usr/bin/env bash
SHELL=/bin/bash
DISPLAY=:0
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
cd /home/selmi/automate-linkedin
autoln --env --headless --username LINKEDIN_EMAIL_ADDRESS --password LINKEDIN_PASSWORD --post-interaction --like-post-comments --comment-number-likes 2 --post-number-likes 10 --auto-comment

Then for the permissions:

sudo chmod +x /home/selmi/automate-linkedin/likes.sh
  • Environment variables see this

  • Crontab

and finally, we automate the process using crontab.

crontab -e

To run that bash file every 5 hours, add this line:

0 */5 * * * ./home/selmi/automate-linkedin/likes.sh

Then save it.

That's it.

Release files for Automate-LinkedIn 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Automate-LinkedIn 0.1.2
File Size Uploaded
Automate LinkedIn-0.1.2.tar.gz 12.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Automate-LinkedIn 0.1.2
File Interpreter ABI Platform
Automate_LinkedIn-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 26.8 kB

Release files / Automate LinkedIn-0.1.2.tar.gz

Download URL Automate LinkedIn-0.1.2.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
08ed940312b98ec5d583770759e8bb59824e391a88ae765e147c5782b0d02128
BLAKE2b-256 checksum
How to use checksums
a9d1d63b46e3c574291067afb662d0406d8e2acbbb665b5564b9834cb4e46e8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / Automate_LinkedIn-0.1.2-py3-none-any.whl

Download URL Automate_LinkedIn-0.1.2-py3-none-any.whl
Size 14.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7e4e9aa8a1931783d7561df95a14dd171163c39bd0f3efc80220d27be8f38174
BLAKE2b-256 checksum
How to use checksums
908ebd23a7bbb97dfd7c1ec333fcf4694264cd3cfc497123098a20281eec5062
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page