兩份已儲存的職位說明,透過相符的來源段落連接。
在兩個已知時間比較同一則刊登。

一項條款是你選擇核對的一句決定用語。例子包括聘用比例、僱用類型、薪酬字句,以及工作地點。聘用比例以一份全職職位為基準,表示該聘用佔這份全職職位的份額,例如刊登字句「100%」或「50%」。

做這 8 個步驟

  1. 選擇會改變你決定的條款。

閱讀這些條款在刊登中的原文字句。職稱、可選的職級標籤,或搜尋字詞,都不是完整要求。職級可以缺漏。如果所選字句不清楚,就保持不清楚。不要猜測任何值,不論是數字還是非數字。這些步驟只涵蓋公開條款比較。它們不解釋應徵者狀態、推薦人查核,或招聘意圖。

  1. 先從你的舊儲存開始,再收集一列新資料。

舊正文必須已經在你的檔案中。Indeed Jobs Scraper 是一個 Actor。Actor 是託管的資料收集程式。它收集目前的公開列。它不能重建舊說明。它不提供僱主編輯時間、申請人狀態,或自動條款標籤。這裡所述的比較由你來做。

寫在職位文字裡的日期不是編輯時間。每次儲存都要保留執行識別、來源識別、輸入、scrapedAt、descriptionStatus,以及原始文字。scrapedAt 是收集該列的時間。一次執行是 Actor 運行一次。

  1. 比較字句之前,先配對同一則刊登。

先配對相同的來源命名空間,以及相同的 jobId。命名空間是擁有該識別碼的網站。然後核對 jobUrl、職位,以及公司。jobId 要以文字保留。如果試算表把它存成數字,長位數可能改變。單靠相同職稱,不能證明兩列是同一個版本。

不同的來源識別碼保持 unresolved。不確定的重新刊登也保持 unresolved。該配對請用已發布的重複與重新刊登指南。在關係確定之前,不要比較文字。把識別衝突留在你的筆記裡。

  1. 所選條款必須有可比較的文字。

尋找字句差異之前,先讀 descriptionStatus。full 表示來源文字當時可用,並已儲存在 descriptionText。missing 表示該文字當時不可用。這個 Actor 沒有 snippet 狀態。full 不保證是僱主的整份文件。

舊文字 missing 而新文字 full,是新近可用的證據。這不是僱主更改了一項要求的證明。短摘錄對上全文,可以造成虛假差異。多出的字句,可能在你尚未持有它們時已經存在。先儲存可用狀態。然後才比較段落。

  1. 保留原始文字,並做一份比較用副本。

不要改動原始的 descriptionText。只為空白處理另做第二份副本。在該副本中,當意思保持不變時,合併已聲明的空白。空白是指空格、tab,以及換行。只產生同樣這些分隔的標記,可以視為相同的空白。不要移除百分比、貨幣用字、單位、否定,或其他限定語。「not」這個字可以反轉一項規則。一個百分比數值可以改變決定。

逐字儲存舊段落的原文,以及新段落的原文。如果你知道它們在來源文字中的位置,就儲存這些位置。如果位置未知,寫 unknown。不要寫 0。

  1. 從所列狀態中,為所選條款指定剛好一個。

使用以下 5 個狀態之一:

  • no_observed_change
  • formatting_only
  • substantive_wording_change
  • newly_available_text
  • unresolved

當同一則刊登有完整且可比較的文字,而所選字句的意思不同時,使用 substantive_wording_change。只有已聲明的空白不同時,使用 formatting_only。所選條款相同時,使用 no_observed_change。該狀態不包括你沒有閱讀的欄位。舊的來源文字不可用、後來變為可用時,使用 newly_available_text。缺了一項條款,不是缺了文字。舊的完整可比較文字沒有所選條款,而新的全文加入了該條款,可以是 substantive_wording_change。識別尚未確定時,使用 unresolved。

文字差異指向一次覆核。它本身不能證明一項新的僱用條件。在你根據聘用或薪酬字句採取行動之前,先閱讀目前的僱主官方頁面。

  1. 用簡單清楚的字句報告時間界限。

寫明該變更是在舊 scrapedAt 與新 scrapedAt 之間觀察到的。不要寫僱主在新的 scrapedAt 編輯了刊登。其他來源處理也可以改變你看到的字句。你無法得知兩次儲存之間有多少次編輯。該次數未知。未知不是 0,也不是 1。目前這次執行不提供自動歷史。

你第一次注意到的刊登是另一項工作。那項請用已發布的新提示指南。刊登數量也是另一項工作。數量請用已發布的刊登趨勢指南。

  1. 交付一筆配對紀錄。

包括識別、原始段落、可用狀態、比較規則、狀態、兩個時間,以及目前的來源核對。目前的來源核對,是你閱讀時僱主官方頁面所說的內容,或一則你尚未閱讀的註記。如果一項重要條款仍然不清楚,透過你自己的流程詢問僱主聯絡人。這些步驟不發送訊息。它們不讀取私人的申請狀態。

儲存這些欄位

使用 Actor 的這些列欄位。可選欄位可以未提供。未提供表示沒有給出該值。這不表示 0,也不表示僱主沒有該項。

儲存這些欄位
欄位它是甚麼
jobId來源識別。以文字保留。
title職位名稱。它不是完整識別。
companyName僱主名稱,用於識別核對。
locationRaw來源所顯示的地點文字。
descriptionText為該列儲存的刊登字句。
descriptionStatusfull 或 missing,表示來源文字是否可用。
jobUrl刊登網址,用於識別核對。
query該列使用的搜尋字詞。
searchLocation搜尋使用的地點。
scrapedAtActor 儲存該列的時間。

seniority、employmentType、salaryRaw、postedAt 和 postedAtRaw 是可選的。其中任何一項都可以缺漏。postedAt 若存在,是來源提供的刊登時間。它不是僱主的編輯時間。descriptionText 裡的日期也不是編輯時間。

儲存原始列、已運行的輸入,以及執行輸出。同時儲存列上限或失敗執行的證明。上限是達到 maxItems 時停止收集。一次成功但沒有結果列的執行,不能證明沒有職位存在。一次達到上限的執行,不能證明你收集了每一則刊登。

設定一次小規模的首次執行

Task 是已儲存的輸入預設。目前的公開 Task 是起始輸入。它不是比較會自行運行的證明。公開 build 1.2.14 已於 2026-10-13T05:55:51.545104+00:00 核對。它接受 searchTerm、country、location、maxItems、maxPagesPerSearch、postedWithinDays、sortBy,以及 saveOnlyUniqueItems。

已儲存的 Task 輸入如下:

json
{
  "country": "us",
  "searchTerm": "software engineer",
  "maxItems": 100,
  "postedWithinDays": "7",
  "sortBy": "date",
  "maxPagesPerSearch": 2,
  "saveOnlyUniqueItems": true
}
設定一次小規模的首次執行

首次核對時,設定 1 個目標職位和 1 個市場。為這一對設定 country 和 searchTerm。只有需要 1 個地點時才加入 location。把範圍大的列上限改為 maxItems 2 和 maxPagesPerSearch 1。postedWithinDays 和 sortBy 只限制這次執行向來源要求哪些目前刊登。它們不返回上星期的字句。saveOnlyUniqueItems 可以為 1 個項目保留 1 列目前資料。它不重建較舊的字句。你仍然需要自己較舊的儲存。

對此 build 的一次相容核對返回了 2 個來源識別碼和網址。兩列都包含可用的說明文字,並儲存在 descriptionText。該執行達到了它的上限。該核對顯示文字收集受支援。它不是以下例子的實況發現。它不表示只存在 2 份職位。

演練 5 對虛構例子

下面 5 對是原創虛構。它們用來說明這些狀態。它們不是 Actor 結果,也不是關於僱主的實況發現。這些虛構時間沒有給出年份。不要把它們當作 build 核對時間。

演練 5 對虛構例子
配對可用狀態識別差異狀態下一步核對
J1兩次都是 full相同來源識別碼和職位聘用字句不同substantive_wording_change覆核這些段落。然後閱讀目前的僱主官方頁面。
J2兩次都是 full同一則刊登只有換行formatting_only不要把空白當作一項新條款。
J3先 missing,後 full同一則刊登文字變為可用newly_available_text保留新文字。不要聲稱條款已變更。
J4未使用不同來源識別碼,相同職稱識別尚未確定unresolved停止。使用重複與重新刊登指南。
J5兩次都是 full同一則刊登所選條款相符no_observed_change只報告該條款。其他條款分開核對。

J1 在 10 月 1 日 10:00 UTC 有 full 文字:「Full-time appointment, 100%.」相同的來源識別碼和職位在 10 月 8 日 10:00 UTC 有 full 文字:「Career appointment, 50%.」兩次儲存都是 full,所以這不是新近可用的文字。空白規則不能解釋這項變更。「Full-time」和「Career」是不同的聘用字句。「100%」和「50%」是不同的比例。狀態是 substantive_wording_change。兩個時間相隔 7 日。報告一項在 10 月 1 日 10:00 UTC 與 10 月 8 日 10:00 UTC 之間觀察到的變更。不要把 10 月 8 日稱為僱主編輯時間。不要解釋字句為何改變。兩次儲存之間的編輯次數未知。

J1 的一筆配對紀錄可以像這樣:

text
identity: same fictional source jobId both times; role matches; company and jobUrl are not supplied
old scrapedAt: October 1 10:00 UTC
new scrapedAt: October 8 10:00 UTC
descriptionStatus: full / full
old passage: Full-time appointment, 100%.
new passage: Career appointment, 50%.
positions: unknown
comparison rule: raw text kept; spacing rule does not remove percentages or appointment words
state: substantive_wording_change
time reading: change observed between the two scrapedAt values
current source check: not done in the fiction
演練 5 對虛構例子

你可能在新的觀察時間閱讀 J1 目前的僱主官方頁面,並看到 50%。該次閱讀仍然不能解釋私人的招聘選擇。它不能證明你較早對聘用內容的閱讀是正確的。該證明需要已儲存的舊來源文字。

J2 在兩個時間都是 full。唯一差異是已聲明空白規則之下的換行。虛構文字如下:

text
old: "Same words stay."
new: "Same words\nstay."
演練 5 對虛構例子

比較用副本合併了換行。兩份副本之後都讀作「Same words stay.」。意思沒有改變。狀態是 formatting_only。不要憑這些換行報告一項新的僱用條件。

J3 的舊列說明為 missing,新列說明為 full。舊的所選條款未被觀察到。狀態是 newly_available_text。你可以保留新段落作為新證據。你不可以說僱主更改了該條款。沒有計算字句差異,因為當時沒有舊字句。

J4 有不同的來源識別碼和相同的職稱。相同職稱不是相同識別。不要把兩份正文比較成同一份職位的兩個版本。在重複與重新刊登指南確定該關係之前,狀態是 unresolved。如果該指南不能確定這一對,就維持 unresolved。

J5 在兩個時間都有 full 文字,所選條款的字句相同。該條款的狀態是 no_observed_change。這不是每個欄位都保持相同的證明。另一項條款仍然可以不同。每項所選條款各自核對。

這 5 對分別是 1 次實質字句變更、1 次格式變更、1 次可用狀態變更、1 次未解決識別,以及 1 項未變更條款。那是 5 個狀態,每個狀態一對。這些計數都不是市場計數。

來源與延伸閱讀

作者 Chronometrica · 更新日期

返回頂端 ↑