{"id":50,"date":"2025-09-03T12:05:09","date_gmt":"2025-09-03T12:05:09","guid":{"rendered":"https:\/\/savywork.com\/automations\/?page_id=50"},"modified":"2025-10-07T05:11:36","modified_gmt":"2025-10-07T05:11:36","slug":"automate-social-media-content-creation-for-linkedin","status":"publish","type":"page","link":"https:\/\/savywork.com\/automations\/automate-social-media-content-creation-for-linkedin\/","title":{"rendered":"Automated Resume To Fresh Linkedin Jobs Matching"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"50\" class=\"elementor elementor-50\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-545de2ca elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"545de2ca\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-174e10af\" data-id=\"174e10af\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7d66a150 elementor-widget elementor-widget-text-editor\" data-id=\"7d66a150\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<div class=\"wp-block-columns\">\n<p><\/p>\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading\"><strong>About <\/strong><\/h3>\n<p>An automated system that matches resumes with fresh LinkedIn job feeds, storing results in Google Sheets and delivering instant job recommendations through a webhook response.\u00a0<\/p>\n<h3 class=\"wp-block-heading\">\u00a0<\/h3>\n<\/div>\n<\/div>\n<p><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d9292e0 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"d9292e0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"602\" height=\"566\" src=\"https:\/\/savywork.com\/automations\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-05-111750-1.png\" class=\"elementor-animation-grow attachment-full size-full wp-image-127\" alt=\"\" srcset=\"https:\/\/savywork.com\/automations\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-05-111750-1.png 602w, https:\/\/savywork.com\/automations\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-05-111750-1-300x282.png 300w, https:\/\/savywork.com\/automations\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-05-111750-1-64x60.png 64w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-cb6e790\" data-id=\"cb6e790\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8434f61 elementor-widget elementor-widget-text-editor\" data-id=\"8434f61\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3>How it works:<\/h3>\n<p>This project demonstrates an AI-powered job-matching workflow that connects your resume with live LinkedIn job feeds. When you upload your resume, the system fetches the latest job postings, compares them with your skills and experience, and generates a customized list of matched jobs. The results are saved to Google Sheets for tracking and also displayed back in a clean HTML format through a webhook response.<\/p>\n<div>\n<h3 style=\"box-sizing: border-box; margin: 0px 0px 10px; font-size: 34px; line-height: 1.235em; color: #111111; font-family: Montserrat, sans-serif; font-weight: bold;\">Key Features:<\/h3>\n<p><strong>Automated Resume Matching<\/strong>\u00a0\u2013 Matches LinkedIn job postings with your resume data in real-time.<\/p>\n<p><strong>Google Sheets Integration<\/strong>\u00a0\u2013 Automatically stores matched jobs for easy access and record-keeping.<\/p>\n<p><strong>Live Job Feed<\/strong>\u00a0\u2013 Pulls the latest opportunities directly from LinkedIn RSS feeds.<\/p>\n<p><strong>Instant Response<\/strong>\u00a0\u2013 Generates and sends a formatted HTML response with relevant job matches.<\/p>\n<p><strong>Webhook-Based Workflow<\/strong>\u00a0\u2013 Seamlessly connects different tools and ensures smooth automation.<\/p>\n<h3>See Work Flow In Action<\/h3>\n<div>\u00a0<\/div>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bbb4ad8 elementor-align-justify elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"bbb4ad8\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/savywork.com\/automations\/search-fresh-linkedin-jobs-posted-with-this-ai-automation\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Demo<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-92bceee elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"92bceee\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e7bc94e\" data-id=\"e7bc94e\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3f4f831 elementor-widget elementor-widget-html\" data-id=\"3f4f831\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"job-search-container\">\r\n  <style>\r\n    #job-search-container { \r\n      font-family: Arial, sans-serif; \r\n      max-width: 800px; \r\n      margin: 0 auto; \r\n      padding: 20px; \r\n      background-color: #f9f9f9; \r\n      border-radius: 8px; \r\n      box-shadow: 0 2px 4px rgba(0,0,0,0.1); \r\n    }\r\n    #job-search-container h2 { \r\n      text-align: center; \r\n      color: #333; \r\n      margin-bottom: 20px; \r\n    }\r\n    .form-group { \r\n      margin-bottom: 15px; \r\n    }\r\n    .form-group label { \r\n      display: block; \r\n      font-weight: bold; \r\n      margin-bottom: 5px; \r\n      color: #555; \r\n    }\r\n    .form-group input[type=\"text\"],\r\n    .form-group input[type=\"email\"],\r\n    .form-group textarea,\r\n    .form-group select { \r\n      width: 100%; \r\n      padding: 10px; \r\n      border: 1px solid #ccc; \r\n      border-radius: 4px; \r\n      box-sizing: border-box; \r\n    }\r\n    .form-group input[type=\"file\"] { \r\n      width: 100%; \r\n      padding: 5px; \r\n    }\r\n    .radio-group { \r\n      display: flex; \r\n      gap: 20px; \r\n    }\r\n    .radio-group label { \r\n      display: flex; \r\n      align-items: center; \r\n      font-weight: normal; \r\n      margin-bottom: 0; \r\n    }\r\n    .submit-btn { \r\n      width: 100%; \r\n      padding: 12px; \r\n      background-color: #0066cc; \r\n      color: white; \r\n      border: none; \r\n      border-radius: 4px; \r\n      font-size: 16px; \r\n      cursor: pointer; \r\n      margin-top: 10px; \r\n    }\r\n    .submit-btn:hover { \r\n      background-color: #0052a3; \r\n    }\r\n    .submit-btn:disabled { \r\n      background-color: #ccc; \r\n      cursor: not-allowed; \r\n    }\r\n    #results { \r\n      margin-top: 30px; \r\n    }\r\n    .error { \r\n      color: #d32f2f; \r\n      background-color: #ffebee; \r\n      padding: 10px; \r\n      border-radius: 4px; \r\n      margin-top: 10px; \r\n    }\r\n    \/* Styles for results (copied\/adapted from workflow response) *\/\r\n    #results h1 { \r\n      text-align: center; \r\n      color: #333; \r\n      margin-bottom: 20px; \r\n    }\r\n    .job-card { \r\n      border: 1px solid #ddd; \r\n      padding: 20px; \r\n      margin-bottom: 20px; \r\n      border-radius: 8px; \r\n      background-color: #f9f9f9; \r\n      box-shadow: 0 2px 4px rgba(0,0,0,0.1); \r\n    }\r\n    .job-title { \r\n      font-size: 1.5em; \r\n      font-weight: bold; \r\n      color: #0066cc; \r\n      margin-bottom: 10px; \r\n    }\r\n    .job-section { \r\n      margin-bottom: 15px; \r\n    }\r\n    .job-section h3 { \r\n      font-size: 1.1em; \r\n      color: #333; \r\n      margin-bottom: 5px; \r\n      border-bottom: 1px solid #eee; \r\n      padding-bottom: 5px; \r\n    }\r\n    .job-section p { \r\n      margin: 5px 0; \r\n      font-size: 1em; \r\n    }\r\n    .job-section ul { \r\n      list-style-type: disc; \r\n      margin-left: 20px; \r\n      font-size: 1em; \r\n    }\r\n    .job-section ul li { \r\n      margin-bottom: 5px; \r\n    }\r\n    .linkedin-link { \r\n      color: #0066cc; \r\n      text-decoration: none; \r\n      font-weight: bold; \r\n    }\r\n    .linkedin-link:hover { \r\n      text-decoration: underline; \r\n    }\r\n    .apply-btn { \r\n      display: inline-block; \r\n      padding: 10px 20px; \r\n      background-color: #28a745; \r\n      color: white; \r\n      text-decoration: none; \r\n      border-radius: 5px; \r\n      font-weight: bold; \r\n      margin-top: 10px; \r\n    }\r\n    .apply-btn:hover { \r\n      background-color: #218838; \r\n    }\r\n    \/* Loading Modal Styles *\/\r\n    .loading-modal {\r\n      display: none;\r\n      position: fixed;\r\n      z-index: 1000;\r\n      left: 0;\r\n      top: 0;\r\n      width: 100%;\r\n      height: 100%;\r\n      background-color: rgba(0, 0, 0, 0.5);\r\n    }\r\n    .loading-modal-content {\r\n      background-color: #fff;\r\n      margin: 15% auto;\r\n      padding: 20px;\r\n      border-radius: 8px;\r\n      width: 80%;\r\n      max-width: 400px;\r\n      text-align: center;\r\n      box-shadow: 0 4px 8px rgba(0,0,0,0.2);\r\n    }\r\n    .spinner {\r\n      border: 4px solid #f3f3f3;\r\n      border-top: 4px solid #0066cc;\r\n      border-radius: 50%;\r\n      width: 40px;\r\n      height: 40px;\r\n      animation: spin 1s linear infinite;\r\n      margin: 0 auto 20px;\r\n    }\r\n    @keyframes spin {\r\n      0% { transform: rotate(0deg); }\r\n      100% { transform: rotate(360deg); }\r\n    }\r\n    .loading-text {\r\n      font-size: 18px;\r\n      color: #333;\r\n      margin-bottom: 10px;\r\n    }\r\n  <\/style>\r\n\r\n  <h2>Student Job Search<\/h2>\r\n  <form id=\"jobSearchForm\">\r\n    <div class=\"form-group\">\r\n      <label for=\"jobRole\">1. Job Role:<\/label>\r\n      <input type=\"text\" id=\"jobRole\" name=\"role\" placeholder=\"e.g., HR Executive\" required>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label for=\"country\">2. Country:<\/label>\r\n      <input type=\"text\" id=\"country\" name=\"country\" placeholder=\"e.g., India\" required>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label for=\"state\">3. State:<\/label>\r\n      <input type=\"text\" id=\"state\" name=\"state\" placeholder=\"e.g., Maharashtra\" required>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label for=\"city\">4. City:<\/label>\r\n      <input type=\"text\" id=\"city\" name=\"city\" placeholder=\"e.g., Mumbai\" required>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label>5. Working Preference:<\/label>\r\n      <div class=\"radio-group\">\r\n        <label><input type=\"radio\" name=\"workingPreference\" value=\"full time\" required> Full Time<\/label>\r\n        <label><input type=\"radio\" name=\"workingPreference\" value=\"remote\" required> Remote<\/label>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label for=\"postedWithin\">6. Explore jobs posted within:<\/label>\r\n      <select id=\"postedWithin\" name=\"postedWithin\" required>\r\n        <option value=\"\">Select...<\/option>\r\n        <option value=\"1hour\">1 Hour<\/option>\r\n        <option value=\"24hour\">24 Hours<\/option>\r\n        <option value=\"7days\">7 Days<\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label for=\"skills\">7. Skills (comma-separated):<\/label>\r\n      <input type=\"text\" id=\"skills\" name=\"skills\" placeholder=\"e.g., HRIS, Payroll\" required>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label for=\"experience\">8. Experience:<\/label>\r\n      <input type=\"text\" id=\"experience\" name=\"experience\" placeholder=\"e.g., 2 years\" required>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label for=\"resume\">9. Choose File (Resume):<\/label>\r\n      <input type=\"file\" id=\"resume\" name=\"resume\" accept=\".pdf,.doc,.docx\">\r\n      <small>Note: Resume upload is optional and will be processed in future updates.<\/small>\r\n    <\/div>\r\n\r\n    <button type=\"submit\" class=\"submit-btn\" id=\"submitBtn\"> Search Jobs<\/button>\r\n  <\/form>\r\n\r\n  <div id=\"results\"><\/div>\r\n\r\n  <!-- Loading Modal -->\r\n  <div id=\"loadingModal\" class=\"loading-modal\">\r\n    <div class=\"loading-modal-content\">\r\n      <div class=\"spinner\"><\/div>\r\n      <div class=\"loading-text\">Searching for jobs... Please wait while we process your request.<\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  \/\/ Replace with your actual n8n webhook URL (e.g., https:\/\/your-n8n-domain.com\/webhook\/b515b755-ae85-4d6f-aaa4-01467d008b71)\r\n  const WEBHOOK_URL = 'https:\/\/n8n.srv968193.hstgr.cloud\/webhook\/3d2441e1-dffd-4d10-833f-5c3e91f68c1e';\r\n\r\n  const loadingModal = document.getElementById('loadingModal');\r\n  const submitBtn = document.getElementById('submitBtn');\r\n  const resultsDiv = document.getElementById('results');\r\n\r\n  document.getElementById('jobSearchForm').addEventListener('submit', async function(e) {\r\n    e.preventDefault();\r\n    \r\n    \/\/ Show loading modal\r\n    loadingModal.style.display = 'block';\r\n    submitBtn.disabled = true;\r\n    submitBtn.textContent = 'Searching...';\r\n    \r\n    try {\r\n      \/\/ Collect form data as JSON object to match workflow expectations\r\n      const formDataObj = {\r\n        experience: document.getElementById('experience').value,\r\n        body: {\r\n          skills: document.getElementById('skills').value,\r\n          role: document.getElementById('jobRole').value,\r\n          country: document.getElementById('country').value,\r\n          state: document.getElementById('state').value,\r\n          city: document.getElementById('city').value,\r\n          workingPreference: document.querySelector('input[name=\"workingPreference\"]:checked')?.value || '',\r\n          postedWithin: document.getElementById('postedWithin').value\r\n        }\r\n      };\r\n\r\n      \/\/ Validate required fields\r\n      if (!formDataObj.body.skills || !formDataObj.body.role || !formDataObj.experience) {\r\n        throw new Error('Please fill in all required fields.');\r\n      }\r\n      \r\n      const response = await fetch(WEBHOOK_URL, {\r\n        method: 'POST',\r\n        headers: {\r\n          'Content-Type': 'application\/json'\r\n        },\r\n        body: JSON.stringify(formDataObj)\r\n      });\r\n      \r\n      if (!response.ok) {\r\n        throw new Error(`HTTP error! status: ${response.status}`);\r\n      }\r\n      \r\n      const html = await response.text();\r\n      \r\n      \/\/ Parse the HTML response\r\n      const parser = new DOMParser();\r\n      const doc = parser.parseFromString(html, 'text\/html');\r\n      \r\n      \/\/ Extract the container\r\n      const container = doc.querySelector('.container');\r\n      if (container) {\r\n        \/\/ Remove the search form to avoid duplication\r\n        const searchForm = container.querySelector('.search-form');\r\n        if (searchForm) {\r\n          searchForm.remove();\r\n        }\r\n        \r\n        \/\/ Get the remaining content (h1 and jobs)\r\n        resultsDiv.innerHTML = container.innerHTML;\r\n      } else {\r\n        \/\/ Fallback: use body content minus head\/title\r\n        const bodyContent = doc.body.innerHTML;\r\n        const h1Index = bodyContent.indexOf('<h1>Matched Job Opportunities<\/h1>');\r\n        if (h1Index !== -1) {\r\n          let resultsHtml = bodyContent.substring(h1Index);\r\n          \/\/ Trim any trailing <\/div> if unbalanced (rough fix)\r\n          resultsHtml = resultsHtml.replace(\/<\\\/div>\\s*$\/, '');\r\n          resultsDiv.innerHTML = resultsHtml;\r\n        } else {\r\n          resultsDiv.innerHTML = bodyContent;\r\n        }\r\n      }\r\n      \r\n    } catch (error) {\r\n      console.error('Error:', error);\r\n      resultsDiv.innerHTML = `<div class=\"error\">Sorry, an error occurred: ${error.message}. Please try again.<\/div>`;\r\n    } finally {\r\n      \/\/ Hide loading modal\r\n      loadingModal.style.display = 'none';\r\n      submitBtn.disabled = false;\r\n      submitBtn.textContent = 'Search Jobs';\r\n    }\r\n  });\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>About An automated system that matches resumes with fresh LinkedIn job feeds, storing results in Google Sheets and delivering instant job recommendations through a webhook response.\u00a0 \u00a0 How it works: This project demonstrates an AI-powered job-matching workflow that connects your resume with live LinkedIn job feeds. When you upload your resume, the system fetches the &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-50","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/savywork.com\/automations\/wp-json\/wp\/v2\/pages\/50","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savywork.com\/automations\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/savywork.com\/automations\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/savywork.com\/automations\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savywork.com\/automations\/wp-json\/wp\/v2\/comments?post=50"}],"version-history":[{"count":62,"href":"https:\/\/savywork.com\/automations\/wp-json\/wp\/v2\/pages\/50\/revisions"}],"predecessor-version":[{"id":761,"href":"https:\/\/savywork.com\/automations\/wp-json\/wp\/v2\/pages\/50\/revisions\/761"}],"wp:attachment":[{"href":"https:\/\/savywork.com\/automations\/wp-json\/wp\/v2\/media?parent=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}