âšď¸ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0.1 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://annamills.substack.com/p/automating-linkedin-search-by-getting |
| Last Crawled | 2026-04-09 00:41:10 (2 days ago) |
| First Indexed | 2026-03-04 11:47:03 (1 month ago) |
| HTTP Status Code | 200 |
| Meta Title | Automating LinkedIn search by getting Claude to build and test a new skill |
| Meta Description | An exploration in agentic AI use |
| Meta Canonical | null |
| Boilerpipe Text | To further my explorations of
agentic AI uses that might help educators
, I decided to see if I could automate an annoyingly slow task that comes up as I try to keep track of and respond to conversations about AI in education.
Iâve been frustrated with the slowness of LinkedInâs search filter system; for example, you canât just search for posts by a particular person that reference particular keywords; you have to do a general search on keywords and then narrow down by âpostâ and then by âmember.â Google doesnât index LinkedIn posts reliably.
I love connecting people who are talking about the same topics and cross-referencing conversations. I often think of a post where someone talked about something and want to review it or link to it but give up because I donât have time or patience for the excruciating search process it would take to dig it up.
I knew that you could save instructions on how to complete particular tasks as âskillsâ in a Claude account. I decided to see if Claude could develop a reliable way to search LinkedIn with the Claude in Chrome browser extension. I interviewed it about LinkedIn search strategies, and it interviewed me about what search capabilities and kinds of outputs I wanted (see the
whole chat transcript
). It drafted a skill. I asked it to test. There were some false starts, as when Claude got no results and I did get results with the same search terms. But when I pointed this out, it was able to figure out the problem with its view of the site and update the skill. It started working.
In one test, I asked it to âLook for recent posts from Joel Gladd where he describes his use of Claude Code.â It surfaced two posts I remembered and one I hadnât seen, then offered to keep going; I asked it to summarize all of Joel Gladdâs uses, and I was delighted to read its summaries as well as the posts themselves and discover quite a few experiments of his that I had missedit did. True, I could have searched myself or scrolled through his post history, but the thought of the user interface experience that would involve makes me shudder.
In another test in a fresh chat session, I wanted to find a particular post by Bonni Stachowiak from the Teaching in Higher Ed podcast and see if Jon Ippolito has posted separately on the same topic. In the
chat
, Claude first attempted to search LinkedIn without the skill and failed to find Bonni Stachowiakâs post. Then I told it to use the skill, and it succeeded.
Iâm excited to keep using this and hopeful that Claude with the LinkedIn search skill will help me more easily learn more and help connect conversations and people on LInkedIn.
If this sounds useful to you, please try it and let me know if it works! Youâll see that it includes a process for searching comments; I havenât tested that yet. Maybe the skill will need futher tweaking. Below is the text of the skill (a skill is just text instructions, not code). Again, this was generated and refined by Claude and depends on the Claude in Chrome browser extension having access to a LinkedIn account. To use it, Go to âCusotmizeâ in Claude, âCreate new skill,â call it âLinkedIn Searchâ and copy this text in. (See Anthropicâs guides
What are Skills?
and
Use Skills in Claude
.)
LinkedIn Post & Comment Search
Search LinkedIn for posts or comments using keyword and author filters via Chrome browser automation, with a Google site-search fallback.
Prerequisites
The user must be
logged into LinkedIn
in their Chrome browser.
The
Claude in Chrome
extension must be active and connected.
Confirm both before beginning the workflow. Do not attempt to log in on the userâs behalf.
Gathering the Search Request
Before searching, clarify the following with the user. Items marked with a default can be skipped if the user doesnât specify them.
ParameterRequired?Default
Keywords
Yesâ
Search scope
No
Posts onlyAuthor
(personâs name)NoAny author
Company
(posted by company, or authorâs company)NoAny
Date range
NoAny time
Content type
(video, image, document, newsletter, carousel)NoAny
Connection degree
(1st, 2nd, 3rd+)NoAny
Output format
No
URLs only
Search scope options
Posts only
(default): Search post content using LinkedIn native search + filters
Comments by a person
: Search a specific personâs comment history (see Comment Search section below)
Both
: Search posts first, then comments
Output format options
URLs only
(default): Return just the LinkedIn post URL(s)
Summary
: URL + brief description of post content
Extracted text
: URL + full text of each post
Screenshot
: URL + screenshot of each post in the browser
Primary Method: LinkedIn Native Search
Step 1: Build the search URL
Construct a URL to skip straight to filtered post results where possible:
https://www.linkedin.com/search/results/content/?keywords=ENCODED_KEYWORDS
URL-encode the keywords. If the user wants an exact phrase, wrap it in quotes before encoding (LinkedIn supports quoted phrase search).
Use
navigate
to go to this URL.
Step 2: Take a screenshot and verify the page loaded
Use
computer
with action
screenshot
to confirm:
The page loaded (not a login wall or error)
The Posts tab / content results are visible
If a login wall appears, stop and remind the user of the prerequisite.
Step 3: Apply filters
Click
âAll filtersâ
(use
find
to locate the button, then
computer
to click it).
The filter panel includes these fields relevant to post search:
FilterHow to useTool
Sort by
âRelevanceâ or âLatestâ
form_input
or
computer
click
Date posted
Past 24 hours / Past week / Past month
computer
click
Content type
Video, Image, Document, Newsletter, Carousel
computer
click
From member
Type personâs name, select from autocomplete
form_input
then
computer
to select
From company
Type company name, select from autocomplete
form_input
then
computer
to select
Author company
Filter by where the author works
form_input
then
computer
to select
Author industry
Filter by authorâs industry
form_input
then
computer
to select
Connection degree
Not directly in âAll filtersâ â see Step 3aâ
After setting filters, click
âShow resultsâ
(use
find
to locate, then
computer
to click).
Step 3a: Connection degree filtering
LinkedInâs Posts search does not always expose a direct âConnectionsâ filter in All Filters. Two approaches:
Posted by
filter: In All Filters, look for âPosted byâ which may include options like âPeople you followâ or â1st connections.â Use this if available.
Boolean + profile cross-reference
: If connection filtering isnât available in the filter panel, note this limitation to the user. You can check individual authorsâ connection degree from their profile if needed.
Step 4: Read and extract results
Use
read_page
or
get_page_text
to extract post results from the page.
For each result, extract:
Post URL
: Look for links in the results that follow the pattern
linkedin.com/feed/update/
or
linkedin.com/posts/
. Use
read_page
to find link elements within each result card.
Author name
: Typically displayed above each post.
Post snippet
: The preview text shown in search results.
Date
: Relative timestamp (e.g., â3dâ, â1wâ).
If extracting URLs from the accessibility tree is difficult, use
javascript_tool
to run:
javascript
Array.from(document.querySelectorAll('a[href*="/feed/update/"], a[href*="/posts/"]')).map(a => a.href)
Step 5: Scroll for more results if needed
If the user needs more results than are initially visible, use
computer
with
scroll
action (direction: âdownâ) and repeat Step 4.
Step 6: Deliver results
Based on the requested output format:
URLs only
(default): List the post URLs in chat.
Summary
: For each URL, include the author, date, and a 1-2 sentence description of the post content from the snippet.
Extracted text
: Navigate to each post URL, use
get_page_text
to extract the full post text, and present it.
Screenshot
: Use
computer
with
screenshot
action on each post.
Fallback Method: Google Site Search
Use this method if:
LinkedInâs native search isnât returning results
The browser automation encounters issues (UI changes, loading problems)
The user prefers a faster, less interactive approach
How to construct the Google search
Use the
web_search
tool with queries structured as:
Posts by a specific person on a topic:
site:linkedin.com/posts "Person Name" "keyword or phrase"
Articles/newsletters by a specific person:
site:linkedin.com/pulse "Person Name" "keyword or phrase"
Posts from a specific company:
site:linkedin.com/posts "Company Name" "keyword"
Limitations of the fallback
Only finds publicly indexed posts (not posts with restricted visibility)
Cannot filter by connection degree, content type, or date range with precision
May return profile pages or other LinkedIn content mixed in with posts
Less reliable for recent posts (indexing lag)
Tips for Effective LinkedIn Post Search
Short, specific keywords
work better than long queries in LinkedInâs native search.
Boolean operators
work in LinkedInâs search bar: AND, OR, NOT, and quoted phrases for exact match. Example:
"agentic AI" AND "academic integrity"
.
âFrom memberâ autocomplete
requires a few characters before suggesting names. Type at least the first name and wait for suggestions.
âMentioning memberâ
is different from âFrom memberâ â use it to find posts that
tag
someone, not posts
written by
them.
If searching for a person with a common name, adding the âFrom memberâ filter is far more reliable than including their name in the keyword search.
Troubleshooting
ProblemSolutionLogin wall appearsRemind user they must be logged into LinkedIn. Do not attempt login.âNo results foundâTry broader keywords, remove filters one at a time, or switch to fallback method.Filter panel layout has changedTake a screenshot, use
read_page
to inspect current UI elements, and adapt. LinkedIn frequently updates its UI.Autocomplete not showing the right personTry typing more of their name, or their full name. If still not found, the person may have restricted their profile visibility.Cannot extract URLs from resultsUse
javascript_tool
to query the DOM directly for link elements.Rate limiting or CAPTCHAStop and inform the user. Do not attempt to bypass.
Comment Search
LinkedIn does
not
provide any native search for comments â not through the search bar, filters, or API. Comment search requires a browser-based workaround with significant limitations.
Method: Activity Page Scroll + JavaScript Search
Step 1: Navigate to the personâs comment activity page
Construct the URL using their LinkedIn profile slug:
https://www.linkedin.com/in/PROFILE_SLUG/recent-activity/comments/
If searching the logged-in userâs own comments, their profile slug can be found in the URL when viewing their profile. Use
navigate
to go to this page.
Step 2: Verify the page loaded
Use
computer
with
screenshot
to confirm the Activity page loaded with the âCommentsâ tab selected. If not, click the âCommentsâ tab.
Step 3: Scroll and search with JavaScript
Use
javascript_tool
to scroll down and search for the keyword in loaded content. This loads comments via infinite scroll and checks for the keyword after each scroll:
javascript
async function scrollAndSearch(keyword, maxScrolls = 30) {
for (let i = 0; i < maxScrolls; i++) {
window.scrollTo(0, document.body.scrollHeight);
await new Promise(r => setTimeout(r, 1500));
if (document.body.innerText.toLowerCase().includes(keyword.toLowerCase())) {
const text = document.body.innerText;
const idx = text.toLowerCase().indexOf(keyword.toLowerCase());
const start = Math.max(0, idx - 300);
const end = Math.min(text.length, idx + 300);
return { found: true, scrolls: i + 1, context: text.substring(start, end) };
}
}
return { found: false, scrolls: maxScrolls };
}
scrollAndSearch('your keyword here')
Adjust
maxScrolls
based on how far back the user thinks the comment might be. Each scroll loads roughly 3-5 comments. 30 scrolls covers roughly 90-150 comments.
Step 4: If found, extract the post URL
When the keyword is found, take a screenshot to see the context. Use
find
or
read_page
to identify the parent post that was commented on. The parent postâs link can be extracted from the result card.
Critical Limitations of Comment Search
Truncation problem
: The activity page shows comment previews that are
truncated
with â...moreâ links. Keywords that appear later in a comment will not be found by the JavaScript text search unless the â...moreâ link is clicked to expand each comment. Clicking every â...moreâ link is possible but extremely slow.
No date filtering
: There is no way to jump to a specific date range. The only approach is scrolling from most recent backward.
Only shows the personâs own comments
: This view only shows comments by the profile owner. You cannot search across all comments on a particular post without opening that post directly.
Incomplete history
: LinkedIn may not load the complete comment history for very active users. The infinite scroll may stop loading at some point.
Parent post context
: The activity page shows the parent post the user commented on, but the parent post text is also truncated â the keyword might appear in either the comment or the parent post preview.
When to suggest the Data Export alternative
If the scroll-and-search approach fails or is too slow (e.g., the user has a very long comment history or the comment is old), suggest the LinkedIn Data Export method instead.
Alternative: LinkedIn Data Export
LinkedIn allows users to download an archive of their data, including all their comments. This is the most thorough method for searching old comments.
How to guide the user
Tell the user to go to
Settings & Privacy > Data privacy > Get a copy of your data
(or navigate to
https://www.linkedin.com/mypreferences/d/download-my-data
).
The user should select at minimum
âCommentsâ
(they can also include âPostsâ and other data).
LinkedIn will prepare the archive and email a download link â this can take
up to 24 hours
but often arrives within minutes for smaller requests.
The downloaded archive is a ZIP file containing CSV files.
Once downloaded, the user can open the Comments CSV and use Ctrl+F or any text editor to search for their keyword.
Important
: Claude cannot initiate this data request on the userâs behalf â it requires clicking through LinkedInâs privacy settings and potentially re-authenticating. Guide the user through the steps verbally, or navigate them to the settings page and let them complete it.
What the data export includes
Full text of every comment (not truncated)
Date and time of each comment
URL of the post that was commented on
The export does
not
include comments by others on the userâs posts â only the userâs own comments on any posts |
| Markdown | [](https://annamills.substack.com/)
# [Anna Millsâ Substack](https://annamills.substack.com/)
Subscribe
Sign in
# Automating LinkedIn search by getting Claude to build and test a new skill
### An exploration in agentic AI use
[](https://substack.com/@annamills)
[Anna Mills](https://substack.com/@annamills)
Mar 01, 2026
20
12
1
Share
To further my explorations of [agentic AI uses that might help educators](https://annamills.substack.com/p/should-educators-use-agentic-ai-if), I decided to see if I could automate an annoyingly slow task that comes up as I try to keep track of and respond to conversations about AI in education.
Iâve been frustrated with the slowness of LinkedInâs search filter system; for example, you canât just search for posts by a particular person that reference particular keywords; you have to do a general search on keywords and then narrow down by âpostâ and then by âmember.â Google doesnât index LinkedIn posts reliably.
Anna Millsâ Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.
I love connecting people who are talking about the same topics and cross-referencing conversations. I often think of a post where someone talked about something and want to review it or link to it but give up because I donât have time or patience for the excruciating search process it would take to dig it up.
I knew that you could save instructions on how to complete particular tasks as âskillsâ in a Claude account. I decided to see if Claude could develop a reliable way to search LinkedIn with the Claude in Chrome browser extension. I interviewed it about LinkedIn search strategies, and it interviewed me about what search capabilities and kinds of outputs I wanted (see the [whole chat transcript](https://claude.ai/share/89ab6460-f3a1-46c7-8c68-d013adbe3951)). It drafted a skill. I asked it to test. There were some false starts, as when Claude got no results and I did get results with the same search terms. But when I pointed this out, it was able to figure out the problem with its view of the site and update the skill. It started working.
In one test, I asked it to âLook for recent posts from Joel Gladd where he describes his use of Claude Code.â It surfaced two posts I remembered and one I hadnât seen, then offered to keep going; I asked it to summarize all of Joel Gladdâs uses, and I was delighted to read its summaries as well as the posts themselves and discover quite a few experiments of his that I had missedit did. True, I could have searched myself or scrolled through his post history, but the thought of the user interface experience that would involve makes me shudder.
In another test in a fresh chat session, I wanted to find a particular post by Bonni Stachowiak from the Teaching in Higher Ed podcast and see if Jon Ippolito has posted separately on the same topic. In the [chat](https://claude.ai/share/747b7851-c70e-4279-9829-57f9440f4df0), Claude first attempted to search LinkedIn without the skill and failed to find Bonni Stachowiakâs post. Then I told it to use the skill, and it succeeded.
Iâm excited to keep using this and hopeful that Claude with the LinkedIn search skill will help me more easily learn more and help connect conversations and people on LInkedIn.
If this sounds useful to you, please try it and let me know if it works! Youâll see that it includes a process for searching comments; I havenât tested that yet. Maybe the skill will need futher tweaking. Below is the text of the skill (a skill is just text instructions, not code). Again, this was generated and refined by Claude and depends on the Claude in Chrome browser extension having access to a LinkedIn account. To use it, Go to âCusotmizeâ in Claude, âCreate new skill,â call it âLinkedIn Searchâ and copy this text in. (See Anthropicâs guides [What are Skills?](https://support.claude.com/en/articles/12512176-what-are-skills#h_c858f8fc74) and [Use Skills in Claude](https://support.claude.com/en/articles/12512180-use-skills-in-claude).)
> # LinkedIn Post & Comment Search
> Search LinkedIn for posts or comments using keyword and author filters via Chrome browser automation, with a Google site-search fallback.
>
> ## Prerequisites
> - The user must be **logged into LinkedIn** in their Chrome browser.
> - The **Claude in Chrome** extension must be active and connected.
> - Confirm both before beginning the workflow. Do not attempt to log in on the userâs behalf.
> ## Gathering the Search Request
> Before searching, clarify the following with the user. Items marked with a default can be skipped if the user doesnât specify them.
>
> ParameterRequired?Default**Keywords**Yesâ**Search scope**No**Posts onlyAuthor** (personâs name)NoAny author**Company** (posted by company, or authorâs company)NoAny**Date range**NoAny time**Content type** (video, image, document, newsletter, carousel)NoAny**Connection degree** (1st, 2nd, 3rd+)NoAny**Output format**No**URLs only**
>
> ### Search scope options
> - **Posts only** (default): Search post content using LinkedIn native search + filters
> - **Comments by a person**: Search a specific personâs comment history (see Comment Search section below)
> - **Both**: Search posts first, then comments
> ### Output format options
> - **URLs only** (default): Return just the LinkedIn post URL(s)
> - **Summary**: URL + brief description of post content
> - **Extracted text**: URL + full text of each post
> - **Screenshot**: URL + screenshot of each post in the browser
> ## Primary Method: LinkedIn Native Search
> ### Step 1: Build the search URL
> Construct a URL to skip straight to filtered post results where possible:
> ```
> https://www.linkedin.com/search/results/content/?keywords=ENCODED_KEYWORDS
> ```
> URL-encode the keywords. If the user wants an exact phrase, wrap it in quotes before encoding (LinkedIn supports quoted phrase search).
>
> Use `navigate` to go to this URL.
>
> ### Step 2: Take a screenshot and verify the page loaded
> Use `computer` with action `screenshot` to confirm:
>
> - The page loaded (not a login wall or error)
> - The Posts tab / content results are visible
>
> If a login wall appears, stop and remind the user of the prerequisite.
>
> ### Step 3: Apply filters
> Click **âAll filtersâ** (use `find` to locate the button, then `computer` to click it).
>
> The filter panel includes these fields relevant to post search:
>
> FilterHow to useTool**Sort by**âRelevanceâ or âLatestâ`form_input` or `computer` click**Date posted**Past 24 hours / Past week / Past month`computer` click**Content type**Video, Image, Document, Newsletter, Carousel`computer` click**From member**Type personâs name, select from autocomplete`form_input` then `computer` to select**From company**Type company name, select from autocomplete`form_input` then `computer` to select**Author company**Filter by where the author works`form_input` then `computer` to select**Author industry**Filter by authorâs industry`form_input` then `computer` to select**Connection degree**Not directly in âAll filtersâ â see Step 3aâ
>
> After setting filters, click **âShow resultsâ** (use `find` to locate, then `computer` to click).
>
> #### Step 3a: Connection degree filtering
> LinkedInâs Posts search does not always expose a direct âConnectionsâ filter in All Filters. Two approaches:
>
> 1. **Posted by** filter: In All Filters, look for âPosted byâ which may include options like âPeople you followâ or â1st connections.â Use this if available.
> 2. **Boolean + profile cross-reference**: If connection filtering isnât available in the filter panel, note this limitation to the user. You can check individual authorsâ connection degree from their profile if needed.
> ### Step 4: Read and extract results
> Use `read_page` or `get_page_text` to extract post results from the page.
>
> For each result, extract:
>
> - **Post URL**: Look for links in the results that follow the pattern `linkedin.com/feed/update/` or `linkedin.com/posts/`. Use `read_page` to find link elements within each result card.
> - **Author name**: Typically displayed above each post.
> - **Post snippet**: The preview text shown in search results.
> - **Date**: Relative timestamp (e.g., â3dâ, â1wâ).
>
> If extracting URLs from the accessibility tree is difficult, use `javascript_tool` to run:
>
> javascript
> ```
> Array.from(document.querySelectorAll('a[href*="/feed/update/"], a[href*="/posts/"]')).map(a => a.href)
> ```
> ### Step 5: Scroll for more results if needed
> If the user needs more results than are initially visible, use `computer` with `scroll` action (direction: âdownâ) and repeat Step 4.
>
> ### Step 6: Deliver results
> Based on the requested output format:
>
> - **URLs only** (default): List the post URLs in chat.
> - **Summary**: For each URL, include the author, date, and a 1-2 sentence description of the post content from the snippet.
> - **Extracted text**: Navigate to each post URL, use `get_page_text` to extract the full post text, and present it.
> - **Screenshot**: Use `computer` with `screenshot` action on each post.
> ## Fallback Method: Google Site Search
> Use this method if:
>
> - LinkedInâs native search isnât returning results
> - The browser automation encounters issues (UI changes, loading problems)
> - The user prefers a faster, less interactive approach
> ### How to construct the Google search
> Use the `web_search` tool with queries structured as:
>
> **Posts by a specific person on a topic:**
> ```
> site:linkedin.com/posts "Person Name" "keyword or phrase"
> ```
> **Articles/newsletters by a specific person:**
> ```
> site:linkedin.com/pulse "Person Name" "keyword or phrase"
> ```
> **Posts from a specific company:**
> ```
> site:linkedin.com/posts "Company Name" "keyword"
> ```
> ### Limitations of the fallback
> - Only finds publicly indexed posts (not posts with restricted visibility)
> - Cannot filter by connection degree, content type, or date range with precision
> - May return profile pages or other LinkedIn content mixed in with posts
> - Less reliable for recent posts (indexing lag)
> ## Tips for Effective LinkedIn Post Search
> - **Short, specific keywords** work better than long queries in LinkedInâs native search.
> - **Boolean operators** work in LinkedInâs search bar: AND, OR, NOT, and quoted phrases for exact match. Example: `"agentic AI" AND "academic integrity"`.
> - **âFrom memberâ autocomplete** requires a few characters before suggesting names. Type at least the first name and wait for suggestions.
> - **âMentioning memberâ** is different from âFrom memberâ â use it to find posts that *tag* someone, not posts *written by* them.
> - If searching for a person with a common name, adding the âFrom memberâ filter is far more reliable than including their name in the keyword search.
> ## Troubleshooting
> ProblemSolutionLogin wall appearsRemind user they must be logged into LinkedIn. Do not attempt login.âNo results foundâTry broader keywords, remove filters one at a time, or switch to fallback method.Filter panel layout has changedTake a screenshot, use `read_page` to inspect current UI elements, and adapt. LinkedIn frequently updates its UI.Autocomplete not showing the right personTry typing more of their name, or their full name. If still not found, the person may have restricted their profile visibility.Cannot extract URLs from resultsUse `javascript_tool` to query the DOM directly for link elements.Rate limiting or CAPTCHAStop and inform the user. Do not attempt to bypass.
>
> ## Comment Search
> LinkedIn does **not** provide any native search for comments â not through the search bar, filters, or API. Comment search requires a browser-based workaround with significant limitations.
>
> ### Method: Activity Page Scroll + JavaScript Search
> #### Step 1: Navigate to the personâs comment activity page
> Construct the URL using their LinkedIn profile slug:
> ```
> https://www.linkedin.com/in/PROFILE_SLUG/recent-activity/comments/
> ```
> If searching the logged-in userâs own comments, their profile slug can be found in the URL when viewing their profile. Use `navigate` to go to this page.
>
> #### Step 2: Verify the page loaded
> Use `computer` with `screenshot` to confirm the Activity page loaded with the âCommentsâ tab selected. If not, click the âCommentsâ tab.
>
> #### Step 3: Scroll and search with JavaScript
> Use `javascript_tool` to scroll down and search for the keyword in loaded content. This loads comments via infinite scroll and checks for the keyword after each scroll:
>
> javascript
> ```
>
> ```
> Adjust `maxScrolls` based on how far back the user thinks the comment might be. Each scroll loads roughly 3-5 comments. 30 scrolls covers roughly 90-150 comments.
>
> #### Step 4: If found, extract the post URL
> When the keyword is found, take a screenshot to see the context. Use `find` or `read_page` to identify the parent post that was commented on. The parent postâs link can be extracted from the result card.
>
> ### Critical Limitations of Comment Search
> **Truncation problem**: The activity page shows comment previews that are **truncated** with â...moreâ links. Keywords that appear later in a comment will not be found by the JavaScript text search unless the â...moreâ link is clicked to expand each comment. Clicking every â...moreâ link is possible but extremely slow.
>
> **No date filtering**: There is no way to jump to a specific date range. The only approach is scrolling from most recent backward.
>
> **Only shows the personâs own comments**: This view only shows comments by the profile owner. You cannot search across all comments on a particular post without opening that post directly.
>
> **Incomplete history**: LinkedIn may not load the complete comment history for very active users. The infinite scroll may stop loading at some point.
>
> **Parent post context**: The activity page shows the parent post the user commented on, but the parent post text is also truncated â the keyword might appear in either the comment or the parent post preview.
>
> ### When to suggest the Data Export alternative
> If the scroll-and-search approach fails or is too slow (e.g., the user has a very long comment history or the comment is old), suggest the LinkedIn Data Export method instead.
>
> ## Alternative: LinkedIn Data Export
> LinkedIn allows users to download an archive of their data, including all their comments. This is the most thorough method for searching old comments.
>
> ### How to guide the user
> 1. Tell the user to go to **Settings & Privacy \> Data privacy \> Get a copy of your data** (or navigate to `https://www.linkedin.com/mypreferences/d/download-my-data`).
> 2. The user should select at minimum **âCommentsâ** (they can also include âPostsâ and other data).
> 3. LinkedIn will prepare the archive and email a download link â this can take **up to 24 hours** but often arrives within minutes for smaller requests.
> 4. The downloaded archive is a ZIP file containing CSV files.
> 5. Once downloaded, the user can open the Comments CSV and use Ctrl+F or any text editor to search for their keyword.
>
> **Important**: Claude cannot initiate this data request on the userâs behalf â it requires clicking through LinkedInâs privacy settings and potentially re-authenticating. Guide the user through the steps verbally, or navigate them to the settings page and let them complete it.
>
> ### What the data export includes
> - Full text of every comment (not truncated)
> - Date and time of each comment
> - URL of the post that was commented on
> - The export does **not** include comments by others on the userâs posts â only the userâs own comments on any posts
Anna Millsâ Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.
[](https://substack.com/profile/281508846-alex-rockey)
[](https://substack.com/profile/241830934-alecia-blackwood)
[](https://substack.com/profile/218035183-jacob-forward)
[](https://substack.com/profile/268163950-susan-ray)
[](https://substack.com/profile/15361640-lisa-green)
[20 Likes]()â
[1 Restack](https://substack.com/note/p-189525260/restacks?utm_source=substack&utm_content=facepile-restacks)
20
12
1
Share
#### Discussion about this post
Comments
Restacks
[](https://substack.com/profile/244712-mickey-schafer?utm_source=comment)
[Mickey Schafer](https://substack.com/profile/244712-mickey-schafer?utm_source=substack-feed-item)
[Mar 1](https://annamills.substack.com/p/automating-linkedin-search-by-getting/comment/221604912 "Mar 1, 2026, 10:19 PM")
Liked by Anna Mills
I've just started exploring Claude skills for important but time consuming tasks. The first one is verify the veracity and correctness of bibliographies in student papers. Right now, I look up every single source myself! Claude believes that he can build a good skill for that. I haven't finished the session yet so have nothing to report, but I will let you know\!
[Like (2)]()
[Reply]()
[Share]()
[3 replies by Anna Mills and others](https://annamills.substack.com/p/automating-linkedin-search-by-getting/comment/221604912)
[](https://substack.com/profile/268163950-susan-ray?utm_source=comment)
[Susan Ray](https://substack.com/profile/268163950-susan-ray?utm_source=substack-feed-item)
[Mar 2](https://annamills.substack.com/p/automating-linkedin-search-by-getting/comment/221656058 "Mar 2, 2026, 12:36 AM")
Liked by Anna Mills
This is so helpful. Thank you for diving in with AI agents so the rest of us can wade in with confidence\!
[Like (1)]()
[Reply]()
[Share]()
[2 replies by Anna Mills and others](https://annamills.substack.com/p/automating-linkedin-search-by-getting/comment/221656058)
[10 more comments...](https://annamills.substack.com/p/automating-linkedin-search-by-getting/comments)
Top
Latest
Discussions
[The time to reckon with AI agents in digital learning spaces is now](https://annamills.substack.com/p/the-time-to-reckon-with-ai-agents)
[We need ed tech and AI companies collaborating to prevent widespread fraud](https://annamills.substack.com/p/the-time-to-reckon-with-ai-agents)
Oct 19, 2025
⢠[Anna Mills](https://substack.com/@annamills)
65
41
12

[Why I'm using AI detection after all, alongside many other strategies](https://annamills.substack.com/p/why-im-using-ai-detection-after-all)
[I'm incorporating Turnitin alongside process tracking, writing process assignments, social annotation, lots of student choice, peer review and tutoringâŚ](https://annamills.substack.com/p/why-im-using-ai-detection-after-all)
Feb 13, 2025
⢠[Anna Mills](https://substack.com/@annamills)
49
17
9

[Agentic AI: Considerations for Educators](https://annamills.substack.com/p/agentic-ai-considerations-for-educators)
[A brief slide-deck style introduction to where we are now, based on recent presentations](https://annamills.substack.com/p/agentic-ai-considerations-for-educators)
Feb 5
⢠[Anna Mills](https://substack.com/@annamills)
32
3
11

See all
### Ready for more?
Š 2026 Anna Mills ¡ [Privacy](https://substack.com/privacy) â [Terms](https://substack.com/tos) â [Collection notice](https://substack.com/ccpa#personal-data-collected)
[Start your Substack](https://substack.com/signup?utm_source=substack&utm_medium=web&utm_content=footer)
[Get the app](https://substack.com/app/app-store-redirect?utm_campaign=app-marketing&utm_content=web-footer-button)
[Substack](https://substack.com/) is the home for great culture
This site requires JavaScript to run correctly. Please [turn on JavaScript](https://enable-javascript.com/) or unblock scripts |
| Readable Markdown | To further my explorations of [agentic AI uses that might help educators](https://annamills.substack.com/p/should-educators-use-agentic-ai-if), I decided to see if I could automate an annoyingly slow task that comes up as I try to keep track of and respond to conversations about AI in education.
Iâve been frustrated with the slowness of LinkedInâs search filter system; for example, you canât just search for posts by a particular person that reference particular keywords; you have to do a general search on keywords and then narrow down by âpostâ and then by âmember.â Google doesnât index LinkedIn posts reliably.
I love connecting people who are talking about the same topics and cross-referencing conversations. I often think of a post where someone talked about something and want to review it or link to it but give up because I donât have time or patience for the excruciating search process it would take to dig it up.
I knew that you could save instructions on how to complete particular tasks as âskillsâ in a Claude account. I decided to see if Claude could develop a reliable way to search LinkedIn with the Claude in Chrome browser extension. I interviewed it about LinkedIn search strategies, and it interviewed me about what search capabilities and kinds of outputs I wanted (see the [whole chat transcript](https://claude.ai/share/89ab6460-f3a1-46c7-8c68-d013adbe3951)). It drafted a skill. I asked it to test. There were some false starts, as when Claude got no results and I did get results with the same search terms. But when I pointed this out, it was able to figure out the problem with its view of the site and update the skill. It started working.
In one test, I asked it to âLook for recent posts from Joel Gladd where he describes his use of Claude Code.â It surfaced two posts I remembered and one I hadnât seen, then offered to keep going; I asked it to summarize all of Joel Gladdâs uses, and I was delighted to read its summaries as well as the posts themselves and discover quite a few experiments of his that I had missedit did. True, I could have searched myself or scrolled through his post history, but the thought of the user interface experience that would involve makes me shudder.
In another test in a fresh chat session, I wanted to find a particular post by Bonni Stachowiak from the Teaching in Higher Ed podcast and see if Jon Ippolito has posted separately on the same topic. In the [chat](https://claude.ai/share/747b7851-c70e-4279-9829-57f9440f4df0), Claude first attempted to search LinkedIn without the skill and failed to find Bonni Stachowiakâs post. Then I told it to use the skill, and it succeeded.
Iâm excited to keep using this and hopeful that Claude with the LinkedIn search skill will help me more easily learn more and help connect conversations and people on LInkedIn.
If this sounds useful to you, please try it and let me know if it works! Youâll see that it includes a process for searching comments; I havenât tested that yet. Maybe the skill will need futher tweaking. Below is the text of the skill (a skill is just text instructions, not code). Again, this was generated and refined by Claude and depends on the Claude in Chrome browser extension having access to a LinkedIn account. To use it, Go to âCusotmizeâ in Claude, âCreate new skill,â call it âLinkedIn Searchâ and copy this text in. (See Anthropicâs guides [What are Skills?](https://support.claude.com/en/articles/12512176-what-are-skills#h_c858f8fc74) and [Use Skills in Claude](https://support.claude.com/en/articles/12512180-use-skills-in-claude).)
## LinkedIn Post & Comment Search
Search LinkedIn for posts or comments using keyword and author filters via Chrome browser automation, with a Google site-search fallback.
## Prerequisites
- The user must be **logged into LinkedIn** in their Chrome browser.
- The **Claude in Chrome** extension must be active and connected.
- Confirm both before beginning the workflow. Do not attempt to log in on the userâs behalf.
## Gathering the Search Request
Before searching, clarify the following with the user. Items marked with a default can be skipped if the user doesnât specify them.
ParameterRequired?Default**Keywords**Yesâ**Search scope**No**Posts onlyAuthor** (personâs name)NoAny author**Company** (posted by company, or authorâs company)NoAny**Date range**NoAny time**Content type** (video, image, document, newsletter, carousel)NoAny**Connection degree** (1st, 2nd, 3rd+)NoAny**Output format**No**URLs only**
### Search scope options
- **Posts only** (default): Search post content using LinkedIn native search + filters
- **Comments by a person**: Search a specific personâs comment history (see Comment Search section below)
- **Both**: Search posts first, then comments
### Output format options
- **URLs only** (default): Return just the LinkedIn post URL(s)
- **Summary**: URL + brief description of post content
- **Extracted text**: URL + full text of each post
- **Screenshot**: URL + screenshot of each post in the browser
## Primary Method: LinkedIn Native Search
### Step 1: Build the search URL
Construct a URL to skip straight to filtered post results where possible:
```
https://www.linkedin.com/search/results/content/?keywords=ENCODED_KEYWORDS
```
URL-encode the keywords. If the user wants an exact phrase, wrap it in quotes before encoding (LinkedIn supports quoted phrase search).
Use `navigate` to go to this URL.
### Step 2: Take a screenshot and verify the page loaded
Use `computer` with action `screenshot` to confirm:
- The page loaded (not a login wall or error)
- The Posts tab / content results are visible
If a login wall appears, stop and remind the user of the prerequisite.
### Step 3: Apply filters
Click **âAll filtersâ** (use `find` to locate the button, then `computer` to click it).
The filter panel includes these fields relevant to post search:
FilterHow to useTool**Sort by**âRelevanceâ or âLatestâ`form_input` or `computer` click**Date posted**Past 24 hours / Past week / Past month`computer` click**Content type**Video, Image, Document, Newsletter, Carousel`computer` click**From member**Type personâs name, select from autocomplete`form_input` then `computer` to select**From company**Type company name, select from autocomplete`form_input` then `computer` to select**Author company**Filter by where the author works`form_input` then `computer` to select**Author industry**Filter by authorâs industry`form_input` then `computer` to select**Connection degree**Not directly in âAll filtersâ â see Step 3aâ
After setting filters, click **âShow resultsâ** (use `find` to locate, then `computer` to click).
#### Step 3a: Connection degree filtering
LinkedInâs Posts search does not always expose a direct âConnectionsâ filter in All Filters. Two approaches:
1. **Posted by** filter: In All Filters, look for âPosted byâ which may include options like âPeople you followâ or â1st connections.â Use this if available.
2. **Boolean + profile cross-reference**: If connection filtering isnât available in the filter panel, note this limitation to the user. You can check individual authorsâ connection degree from their profile if needed.
### Step 4: Read and extract results
Use `read_page` or `get_page_text` to extract post results from the page.
For each result, extract:
- **Post URL**: Look for links in the results that follow the pattern `linkedin.com/feed/update/` or `linkedin.com/posts/`. Use `read_page` to find link elements within each result card.
- **Author name**: Typically displayed above each post.
- **Post snippet**: The preview text shown in search results.
- **Date**: Relative timestamp (e.g., â3dâ, â1wâ).
If extracting URLs from the accessibility tree is difficult, use `javascript_tool` to run:
javascript
```
Array.from(document.querySelectorAll('a[href*="/feed/update/"], a[href*="/posts/"]')).map(a => a.href)
```
### Step 5: Scroll for more results if needed
If the user needs more results than are initially visible, use `computer` with `scroll` action (direction: âdownâ) and repeat Step 4.
### Step 6: Deliver results
Based on the requested output format:
- **URLs only** (default): List the post URLs in chat.
- **Summary**: For each URL, include the author, date, and a 1-2 sentence description of the post content from the snippet.
- **Extracted text**: Navigate to each post URL, use `get_page_text` to extract the full post text, and present it.
- **Screenshot**: Use `computer` with `screenshot` action on each post.
## Fallback Method: Google Site Search
Use this method if:
- LinkedInâs native search isnât returning results
- The browser automation encounters issues (UI changes, loading problems)
- The user prefers a faster, less interactive approach
### How to construct the Google search
Use the `web_search` tool with queries structured as:
**Posts by a specific person on a topic:**
```
site:linkedin.com/posts "Person Name" "keyword or phrase"
```
**Articles/newsletters by a specific person:**
```
site:linkedin.com/pulse "Person Name" "keyword or phrase"
```
**Posts from a specific company:**
```
site:linkedin.com/posts "Company Name" "keyword"
```
### Limitations of the fallback
- Only finds publicly indexed posts (not posts with restricted visibility)
- Cannot filter by connection degree, content type, or date range with precision
- May return profile pages or other LinkedIn content mixed in with posts
- Less reliable for recent posts (indexing lag)
## Tips for Effective LinkedIn Post Search
- **Short, specific keywords** work better than long queries in LinkedInâs native search.
- **Boolean operators** work in LinkedInâs search bar: AND, OR, NOT, and quoted phrases for exact match. Example: `"agentic AI" AND "academic integrity"`.
- **âFrom memberâ autocomplete** requires a few characters before suggesting names. Type at least the first name and wait for suggestions.
- **âMentioning memberâ** is different from âFrom memberâ â use it to find posts that *tag* someone, not posts *written by* them.
- If searching for a person with a common name, adding the âFrom memberâ filter is far more reliable than including their name in the keyword search.
## Troubleshooting
ProblemSolutionLogin wall appearsRemind user they must be logged into LinkedIn. Do not attempt login.âNo results foundâTry broader keywords, remove filters one at a time, or switch to fallback method.Filter panel layout has changedTake a screenshot, use `read_page` to inspect current UI elements, and adapt. LinkedIn frequently updates its UI.Autocomplete not showing the right personTry typing more of their name, or their full name. If still not found, the person may have restricted their profile visibility.Cannot extract URLs from resultsUse `javascript_tool` to query the DOM directly for link elements.Rate limiting or CAPTCHAStop and inform the user. Do not attempt to bypass.
## Comment Search
LinkedIn does **not** provide any native search for comments â not through the search bar, filters, or API. Comment search requires a browser-based workaround with significant limitations.
### Method: Activity Page Scroll + JavaScript Search
#### Step 1: Navigate to the personâs comment activity page
Construct the URL using their LinkedIn profile slug:
```
https://www.linkedin.com/in/PROFILE_SLUG/recent-activity/comments/
```
If searching the logged-in userâs own comments, their profile slug can be found in the URL when viewing their profile. Use `navigate` to go to this page.
#### Step 2: Verify the page loaded
Use `computer` with `screenshot` to confirm the Activity page loaded with the âCommentsâ tab selected. If not, click the âCommentsâ tab.
#### Step 3: Scroll and search with JavaScript
Use `javascript_tool` to scroll down and search for the keyword in loaded content. This loads comments via infinite scroll and checks for the keyword after each scroll:
javascript
```
```
Adjust `maxScrolls` based on how far back the user thinks the comment might be. Each scroll loads roughly 3-5 comments. 30 scrolls covers roughly 90-150 comments.
#### Step 4: If found, extract the post URL
When the keyword is found, take a screenshot to see the context. Use `find` or `read_page` to identify the parent post that was commented on. The parent postâs link can be extracted from the result card.
### Critical Limitations of Comment Search
**Truncation problem**: The activity page shows comment previews that are **truncated** with â...moreâ links. Keywords that appear later in a comment will not be found by the JavaScript text search unless the â...moreâ link is clicked to expand each comment. Clicking every â...moreâ link is possible but extremely slow.
**No date filtering**: There is no way to jump to a specific date range. The only approach is scrolling from most recent backward.
**Only shows the personâs own comments**: This view only shows comments by the profile owner. You cannot search across all comments on a particular post without opening that post directly.
**Incomplete history**: LinkedIn may not load the complete comment history for very active users. The infinite scroll may stop loading at some point.
**Parent post context**: The activity page shows the parent post the user commented on, but the parent post text is also truncated â the keyword might appear in either the comment or the parent post preview.
### When to suggest the Data Export alternative
If the scroll-and-search approach fails or is too slow (e.g., the user has a very long comment history or the comment is old), suggest the LinkedIn Data Export method instead.
## Alternative: LinkedIn Data Export
LinkedIn allows users to download an archive of their data, including all their comments. This is the most thorough method for searching old comments.
### How to guide the user
1. Tell the user to go to **Settings & Privacy \> Data privacy \> Get a copy of your data** (or navigate to `https://www.linkedin.com/mypreferences/d/download-my-data`).
2. The user should select at minimum **âCommentsâ** (they can also include âPostsâ and other data).
3. LinkedIn will prepare the archive and email a download link â this can take **up to 24 hours** but often arrives within minutes for smaller requests.
4. The downloaded archive is a ZIP file containing CSV files.
5. Once downloaded, the user can open the Comments CSV and use Ctrl+F or any text editor to search for their keyword.
**Important**: Claude cannot initiate this data request on the userâs behalf â it requires clicking through LinkedInâs privacy settings and potentially re-authenticating. Guide the user through the steps verbally, or navigate them to the settings page and let them complete it.
### What the data export includes
- Full text of every comment (not truncated)
- Date and time of each comment
- URL of the post that was commented on
- The export does **not** include comments by others on the userâs posts â only the userâs own comments on any posts |
| Shard | 76 (laksa) |
| Root Hash | 14862242593741677076 |
| Unparsed URL | com,substack!annamills,/p/automating-linkedin-search-by-getting s443 |