obsidian-clipper-job-listings-as-tasks

I hate ADHD. It's a Pain in the ass to collect listings to apply for (see tags listed `do/job-listing).

To streamline capturing job listings from boards like LinkedIn and Sweden's Arbetsförmedlingen, I use the Obsidian Web Clipper combined with the Tasks plugin. This setup allows me to clip relevant job detail according to the format below, which then goes to the top of my ✔︎Jobs to Apply for

Each captured job listing is imported as according to this format, and output as task to be used with the tasks plugin.

- [ ] `#todo/job-listing, [[{{ROLE}}, {{EMPLOYER}}, {{Full/Part time}}, {{City}}, {{Country}}]], [Link to application here 🔗]({{url|url}}, ➕ {{date|date:YYYY-MM-DD}}, ⏳ {{date|date:YYYY-MM-DD|date_modify:"+3 day"}}, 📅 {{date|date:YYYY-MM-DD|date_modify:"+5 day"}}`
```{ #listing-capture-format}

 
This format is specifically designed to be bulk-pasted into an Excel or ODT file for tracking my progress applying for a job: `Role/Listing,  Employer, Occupancy (Full-time/Part-time), City, Country, Date found, Date you plan to apply, Due date for application`. CSS selectors can contain symbols (e.g `., , / , `), which may interfere with the proper splitting of data., so each selector must to be filtered to make sure that it's in our selected format symbols are handled properly and replaced when necessary. For example, problematic symbols like |, /, ", *, and others can be replaced using regular expressions.
# Selectors for my webpages

| **Part**                 | **Arbetsförmedlingen Selectors**                                                        | **LinkedIn Selectors**                                                                             | **Indeed 1**                                       | Indeed 2                                   |
| ------------------------ | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------- | ------------------------------------------ |
| **Role**                 | {{selector:#pb-job-role\|markdown}}                                                     | {{selector:h1.t-24}}                                                                               | .jobsearch-JobInfoHeader-title > span:nth-child(1) | {{selector:jobsearch-JobInfoHeader-title}} |
| **Employer**             | {{selector:#pb-company-name\|markdown}}                                                 | {{selector:.job-details-jobs-unified-top-card__company-name > a:nth-child(1)}}                     | .css-2pz2u0 > div:nth-child(1)                     | .css-1r11dqv > div:nth-child(1)            |
| **Location**             | {{selector:#pb-job-location}}                                                           | {{selector:span.tvm__text–low-emphasis:nth-child(1)}}                                              | .css-1r11dqv                                       | #location-collapsed-header                 |
| **Full/Part-Time**       | {{selector:div.print-break-inside:nth-child(4) > div:nth-child(2) > span:nth-child(2)}} | {{selector:span.job-details-jobs-unified-top-card__job-insight-view-model-secondary:nth-child(2)}} | .css-1h7a62l                                       |                                            |
| **Location Type**        |                                                                                         | {{selector:.ui-label > span:nth-child(1)}}                                                         | .jobsearch-JobInfoHeader-title                     |                                            |
| **URL Link**             | {{url\|url}}                                                                            |                                                                                                    |                                                    |                                            |
| **Job Publication Date** |                                                                                         | {{selector:tvm__text tvm__text–low-emphasis}}                                                      |                                                    |                                            |
| Actual Description       |                                                                                         | {{selector:#job-details > div:nth-child(2) > p:nth-child(1)\|markdown}}                            |                                                    |                                            |
|                          |                                                                                         |                                                                                                    |                                                    |                                            |
 At the end of each selector, (before the }}, throw in a pipe `|` and input any of the relevant filters below.)

TBH, you can figure out the rest or read the documentation for the Webclipper plugin

## Filters to parse 

| **Remove/Replace**               | **Filter String**                                         |
| -------------------------------- | --------------------------------------------------------- |
| **Markdown Formatting**          | strip_md                                                  |
| **To Markdown**                  | markdown                                                  |
| **Safe Names**                   | safe_name                                                 |
| **Regex for Special Characters** | \|replace:"/[\*\"\\\/\<\>\:\?]/g:"-"                      |
| **Location Parsing**             | `split:","                                                |
| **Language Replacements**        | replace:("/Heltid/g":"Full-Time","/Deltid/g":"Part-Time") |
|                                  |                                                           |

- 💡 As of now, I have not managed to find the correct CSS selectors to indicate **when** a listing was created or when it closes**. If I managed to find this out it'd be great

# Final Filters and output 

| **Part**                 | **Arbetsförmedlingen Combined**                                                                                                                    | **LinkedIn Selectors**                                                                                                         | **Jooble Selectors** |     |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------- | --- |
| **Role**                 | {{selector:#pb-job-role\|safe_name\|replace:"/[\*\"\\\/\<\>\:\?]/g:"-"\|markdown}}\|                                                               | {{selector:h1.t-24\|replace:"/[\*\"\\\/\<\>\:\?]/g:"-"\|safe_name}}                                                            |                      |     |
| **Employer**             | {{selector:#pb-company-name\|safe_name\|markdown}},                                                                                                | {{selector:.job-details-jobs-unified-top-card__company-name\|safe_name\|replace:"/[\*\"\\\/\<\>\:\?]/g:"-"}}                   |                      |     |
| **Location**             | {{selector:#pb-job-location}}                                                                                                                      | {{selector:span.tvm__text--low-emphasis:nth-child(1)\|split:","\|first}}                                                       |                      |     |
| **Full/Part-Time**       | {{selector:div.print-break-inside:nth-child(4) > div:nth-child(2) > span:nth-child(2)\|replace:("/Heltid/g":"Full-Time","/Deltid/g":"Part Time")}} | {{selector:li.job-details-jobs-unified-top-card__job-insight:nth-child(1) > span:nth-child(2) > span:nth-child(1)\|safe_name}} |                      |     |
| **Location Type**        | {{selector:#pb-job-location\|split:":"\|last}}                                                                                                     | {{selector:span.tvm__text--low-emphasis:nth-child(1)\|split:","\|last}}                                                        |                      |     |
| **URL Link**             | [Link to application here 🔗]({{url\|url}})\|                                                                                                      |                                                                                                                                |                      |     |
| **Job Publication Date** |                                                                                                                                                    | {{selector:tvm__text tvm__text–low-emphasis}}                                                                                  |                      |     |
| Full-text selector       | {{content}}                                                                                                                                        | {{selector:#job-details > div:nth-child(2) \|markdown}}                                                                        |                      |     |

{ #full-variables}

 At the end of each selector, (before the }}, throw in a pipe `|` and input any of the relevant filters below.)
 


# Final Outputs

This then clips any inputs from the domains arbetsformedlingen and linked in as tasks that get output as tasks 


For Arbetsförmedlingen:


For LinkedIn:




----

## Quick-Add

Sometimes I can't be assed to make a new template and go through each CSS selector, so a new and empty task task is created in ✔︎Jobs to Apply for according to the following template prompting for each specific part of it.
 
- ❓ If you are in the mood, use the  Cover Letter Template, if you use templater, otherwise you could split it. Perhaps something in JS?
- ❓ Or potentially, macros that save a value, and outputs it?





[^1]: using the Tasks Plugin

new file