where-was-this-taken

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Where was this taken

这是在哪里拍摄的

Input: an image or video file, or a URL to one. Output: a location with a confidence radius, a time window, an authenticity assessment, and the evidence chain for each.
This workflow orchestrates. The technique detail lives in
secrets-in-file-metadata
,
find-the-original-image
,
geolocate-from-pixels
and
is-this-photo-real
— run those, don't reimplement them here.
The order matters more than anything else in this file. Metadata before analysis, because analysis destroys metadata. Provenance before geolocation, because the original's caption often is the location. Authenticity checks before you commit, because geolocating a composite gives you a confident answer to the wrong question.
输入:图片或视频文件,或其URL链接。输出:带有置信半径的位置、时间范围、真实性评估,以及各环节的证据链。
本工作流负责编排调度。具体技术细节请查看
secrets-in-file-metadata
find-the-original-image
geolocate-from-pixels
is-this-photo-real
—— 直接运行这些模块,无需在此处重新实现。
本文件中,执行顺序比任何内容都重要。先提取元数据再进行分析,因为分析操作会破坏元数据。先溯源再地理定位,因为原始内容的标题通常直接包含位置信息。先进行真实性检测再确认结果,因为对合成内容进行地理定位只会得到一个看似准确但完全错误的答案。

Step 1 — Authorized scope

步骤1 — 授权范围

Read ../../ETHICS.md. Then state, in writing, before you open the file:
  • Subject — what the media is, and who appears in or is affected by it.
  • Objective — verification, disinformation research, missing persons, threat assessment, due diligence, litigation support, or showing someone their own exposure. If you cannot name a legitimate objective, stop.
  • In and out of bounds — specifically: are you permitted to publish a precise coordinate, or only a region? Is face search permitted? Is anyone in the frame a private individual?
  • Jurisdiction — yours, the subject's, and the platform's. Precise historical location data about an identifiable person is regulated personal data in most of them.
  • Publication floor — decide now what precision you will publish, before you know the answer. Geolocating a private individual's home from their own photos is the mechanic of stalking regardless of your intent, and conflict imagery can make the people in frame a target. Rounding a coordinate is a decision to make cold.
Done when subject, objective, bounds, jurisdiction and publication floor are written down in the case file.
阅读 ../../ETHICS.md。然后在打开文件前,以书面形式明确:
  • 主体 — 媒体内容的主题,以及其中出现或受其影响的对象。
  • 目标 — 验证信息、虚假信息研究、寻找失踪人员、威胁评估、尽职调查、诉讼支持,或告知当事人其信息暴露情况。如果无法明确合法目标,请停止操作。
  • 权限边界 — 具体包括:是否允许发布精确坐标,还是仅能发布区域范围?是否允许进行人脸搜索?画面中是否有私人个体?
  • 管辖区域 — 你的所属区域、主体所属区域以及平台所属区域。在大多数地区,可识别个人的精确历史位置数据属于受监管的个人信息。
  • 发布精度下限 — 在得知结果前,就决定好发布时使用的精度。通过个人照片定位其住所,无论意图如何,都属于跟踪行为;冲突场景的影像可能会使画面中的人成为目标。提前决定是否对坐标进行取整。
完成标志:主体、目标、权限边界、管辖区域和发布精度下限均已记录在案件文件中。

Step 2 — Secure a pristine copy

步骤2 — 获取原始副本并妥善保存

Everything downstream is worthless if you contaminate the original.
  • Work from the file, not a screenshot of it. For platform video, pull the best rendition with
    yt-dlp
    and keep the sidecar JSON.
  • Hash it immediately and record the hash:
    sha256sum evidence.jpg
    . A second algorithm costs nothing and pre-empts an argument.
  • Set the original read-only, store it unmodified, and do all work on copies. Name derivatives so the transform is legible:
    evidence_crop-sign.png
    ,
    evidence_flop.jpg
    .
  • Record provenance of your own acquisition: the URL, the timestamp you fetched it, who gave it to you, and the platform it came from. Archive the source page before it changes.
  • Note whether the file is an original capture, a platform re-encode, or a screenshot. This single fact determines which later tests are valid at all, and you will need it in the report.
Done when the original is hashed, read-only, and its acquisition path recorded, and every subsequent step is operating on a named copy.
如果原始文件被污染,后续所有操作都将毫无意义。
  • 直接处理原始文件,而非其截图。对于平台上的视频,使用
    yt-dlp
    获取最高画质版本,并保留附带的JSON文件。
  • 立即对文件进行哈希运算并记录哈希值:
    sha256sum evidence.jpg
    。额外使用一种算法进行运算,可提前避免争议。
  • 将原始文件设置为只读,保持未修改状态存储,所有操作均在副本上进行。为衍生文件命名时需体现处理操作:例如
    evidence_crop-sign.png
    evidence_flop.jpg
  • 记录你获取文件的溯源信息:URL链接、获取时间、提供方以及来源平台。在源页面发生变更前对其进行归档。
  • 注明该文件是原始拍摄内容、平台转码版本还是截图。这一事实将决定后续哪些测试有效,且需写入最终报告。
完成标志:原始文件已完成哈希运算、设置为只读,且获取路径已记录;后续所有步骤均基于命名明确的副本进行。

Step 3 — Metadata

步骤3 — 提取元数据

Run
secrets-in-file-metadata
before any transformation. Cropping, rotating, upscaling or even opening the file in some editors rewrites tags.
Prioritise: GPS coordinates and
GPSHPositioningError
;
GPSImgDirection
, which gives you the camera's bearing and lets you reproduce the exact view;
GPSDateStamp
/
GPSTimeStamp
in UTC as the only timezone-anchored clock; the timestamp triplet; device make, model and serial; the software chain; and the embedded thumbnail for comparison against the main image.
If GPS is present you have a lead, not an answer. It is a writable field. Continue to step 5 and verify it visually; a metadata coordinate that a visual check confirms is a far stronger finding than either alone.
Done when metadata is extracted and recorded, or confirmed absent — and you have written "no EXIF present" rather than "EXIF removed".
在进行任何转换操作前,先运行
secrets-in-file-metadata
。裁剪、旋转、放大,甚至在某些编辑器中打开文件,都会重写标签信息。
优先提取以下内容:GPS坐标和
GPSHPositioningError
GPSImgDirection
(可提供相机朝向,帮助还原拍摄视角);UTC时区的
GPSDateStamp
/
GPSTimeStamp
(唯一锚定时区的时间戳);时间戳三元组;设备品牌、型号和序列号;软件链;以及嵌入的缩略图(用于与主图对比)。
如果存在GPS坐标,这只是一个线索,而非最终答案。该字段可被篡改。继续执行步骤5,通过视觉方式进行验证;经视觉确认的元数据坐标,其可信度远高于单独的元数据或视觉检测结果。
完成标志:元数据已提取并记录,或确认元数据不存在——需明确记录“无EXIF信息”,而非“EXIF信息已移除”。

Step 4 — Provenance

步骤4 — 溯源验证

Run
find-the-original-image
. For video, extract keyframes first and search several of them.
You are looking for an earlier appearance, a different caption, a photographer credit, and a date you can corroborate independently through
read-deleted-pages
. Open the match pages and read them — the caption on the earliest copy frequently names the place outright, which collapses steps 5 and 6 into a verification exercise instead of a search.
If the media is older than the claim, or from a different country than the claim, you have your answer and it is a stronger answer than a coordinate.
Done when you have either an earliest-known publication with its date and caption, or a documented null across at least three engines including crops and a mirrored search.
运行
find-the-original-image
。对于视频,需先提取关键帧,再对多个关键帧进行搜索。
你需要查找的信息包括:内容的最早出现版本、不同的标题、摄影师署名,以及可通过
read-deleted-pages
独立核实的日期。打开匹配结果页面并阅读——最早副本的标题通常会直接点明地点,这样步骤5和6就会从搜索任务变为验证任务。
如果媒体内容的实际时间早于声称的时间,或来源地与声称的地点不同,你就已经得到了答案,且该答案比坐标更具说服力。
完成标志:要么找到已知最早的发布版本及其日期和标题,要么通过至少三种引擎(包括裁剪图和镜像图搜索)确认无匹配结果,并记录相关情况。

Step 5 — Visual geolocation

步骤5 — 视觉地理定位

Run
geolocate-from-pixels
. Inventory clues before searching, rank them by geographic specificity, fix the country from language, plates, driving side and road markings, then narrow to a site and confirm in satellite and street-level imagery.
If step 3 gave you coordinates, do this anyway as an independent test rather than navigating straight to the coordinate and confirming what you were told. Use
GPSImgDirection
to reproduce the camera bearing and check that the view matches what a camera at that position pointing that way would see. A bearing that points at a blank wall means the coordinate is wrong.
Done when you have a candidate location with a stated radius and a written list of the specific features you matched — or a documented region-only result with the reason you could not narrow further.
运行
geolocate-from-pixels
。在搜索前先梳理线索,按地理特异性排序,通过语言、车牌、驾驶方向和道路标线确定国家,然后缩小到具体地点,并通过卫星和街景影像进行确认。
如果步骤3得到了坐标,仍需执行此步骤作为独立测试,而非直接导航到该坐标并验证预设结果。利用
GPSImgDirection
还原相机朝向,检查该位置、该朝向的视角是否与实际画面匹配。如果朝向指向空白墙壁,则说明坐标有误。
完成标志:得到带有置信半径的候选地点,并书面记录匹配的具体特征——或记录仅能确定区域范围的结果及无法进一步缩小范围的原因。

Step 6 — Chronolocation

步骤6 — 时间定位

Still in
geolocate-from-pixels
, using its chronolocation reference. Shadow azimuth for the sun's bearing, shadow-length ratio for its elevation, then solve against a sun-position calculator for the confirmed location. Expect two date bands, not one, and break the tie with foliage, snow, crop stage, or a dated object in frame. Corroborate against a weather archive and note which station you used and how far away it is.
Reconcile the result against the metadata timestamps from step 3. Agreement between an unanchored EXIF datetime and an independently derived sun position is one of the strongest corroborations available in this whole workflow, because the two have no common failure mode.
Done when you have a time-of-day range and a date band, each graded, with the discriminator you used named — or an explicit statement that the date remains two-banded.
仍在
geolocate-from-pixels
模块中,使用其时间定位参考。通过阴影方位确定太阳朝向,通过阴影长度比例确定太阳高度,然后结合太阳位置计算器针对已确认的地点进行计算。通常会得到两个日期区间,需通过植被、积雪、作物生长阶段或画面中的带日期物体来排除其中一个。结合气象档案进行验证,并记录所使用的气象站及其距离。
将结果与步骤3提取的元数据时间戳进行比对。未锚定的EXIF日期时间与独立推导的太阳位置一致,是整个工作流中最有力的佐证之一,因为两者不存在共同的失效模式。
完成标志:得到分等级的时间段和日期区间,并注明用于排除其中一个日期区间的判别依据——或明确说明日期仍存在两个区间。

Step 7 — Authenticity

步骤7 — 真实性检测

Run
is-this-photo-real
. At minimum: the physical-consistency checks — shadow convergence across multiple objects, reflection geometry, perspective and scale — and the internal-consistency sweep against your own step 5 findings.
The specific failure this step is here to catch: you have just geolocated a scene that was assembled from two photographs, or generated. A composite geolocates beautifully and means nothing. If shadow convergence fails or an element carries no optical signature, your location finding applies to the background plate only, and you must say so.
Done when manipulation and synthesis are assessed, each graded, with signal-level tests either run or explicitly marked invalid for the copy you hold.
运行
is-this-photo-real
。至少需执行以下检测:物理一致性检测(多物体阴影收敛、反射几何、透视和比例),以及针对步骤5结果的内部一致性检查。
此步骤旨在发现特定问题:你刚刚定位的场景可能是由两张照片合成或生成的AI内容。合成内容的地理定位结果看似准确,但毫无意义。如果阴影收敛检测失败,或某个元素无光学特征,则你的位置结果仅适用于背景图层,必须明确说明这一点。
完成标志:已完成篡改和合成检测并分级,且已记录信号级测试的执行情况,或明确说明当前副本无法进行此类测试。

Step 8 — Decide whether the claim is corroborated

步骤8 — 判断声称内容是否得到佐证

Lay the independent lines of evidence side by side and ask what agrees.
The standard: three mutually independent non-transient features matching reference imagery makes a location. Independence is the requirement people fudge. Three photographs of the same sign is one feature. A building footprint, a utility pole line and a ridgeline profile are three. Metadata GPS plus a visual match plus a sun-position-consistent shadow are three, and they are independent because forging all three coherently is hard.
Then run the falsification test you should have written in step 5: name the single observation that would kill your candidate, go look for it, and record that you did. A finding nobody tried to break is not a finding.
Grade the composite honestly:
  • Confirmed — three independent features align, the falsification test was run and failed to break it, and no line of evidence contradicts another.
  • Probable — two independent features, or three with one resting on undated or low-resolution reference imagery.
  • Region only — country or province established, no site. A respectable result.
  • Excluded — you can affirmatively rule out the claimed location. Needs only one hard contradiction, and is often more useful than finding the true site.
  • Unresolved — say so. An honest gap beats a confident guess that gets rebutted.
Done when each of location, time and authenticity carries a grade and the evidence it rests on, and any contradiction between lines of evidence is stated rather than reconciled away.
将各独立证据线并列,查看其中的一致性。
标准:三个相互独立的非瞬态特征与参考影像匹配,即可确定地点。独立性是容易被忽略的要求。同一块标识牌的三张照片仅算一个特征。建筑轮廓、电线杆线路和山脊轮廓则是三个独立特征。元数据GPS坐标、视觉匹配结果、与太阳位置一致的阴影,这三者也是独立的,因为同时伪造这三者并保持一致性难度极大。
然后执行步骤5中应提前规划的证伪测试:指出一个能推翻候选地点的单一观测结果,去寻找该结果,并记录你的操作过程。未经证伪的结果不能算作有效结论。
如实对综合结果进行分级:
  • 确认 — 三个独立特征一致,证伪测试未推翻结果,且各证据线无矛盾。
  • 可能 — 两个独立特征,或三个特征但其中一个依赖于无日期或低分辨率的参考影像。
  • 仅确定区域 — 已确定国家或省份,但无法确定具体地点。这是一个合理的结果。
  • 排除 — 可明确否定声称的地点。只需一个确凿的矛盾点即可,这往往比找到真实地点更有用。
  • 未解决 — 如实说明。承认信息缺口,强于做出会被反驳的自信猜测。
完成标志:地点、时间和真实性均已分级,并记录其依据的证据;各证据线之间的矛盾已明确说明,而非强行调和。

Step 9 — Express the finding

步骤9 — 输出结果

  • Coordinates plus a radius in metres, always. A bare six-decimal coordinate claims sub-metre precision you do not have. Derive the radius from what actually bounds you:
    GPSHPositioningError
    if the finding rests on metadata, the resolution of the reference imagery if it rests on a satellite match, the size of the area consistent with your matched features if it rests on visual work.
  • Camera position and bearing, separately from the subject's position. These are different places and reports routinely conflate them.
  • Time as a range in local clock time, saying whether you converted from solar time and what offset you applied.
  • Date as one or two bands, naming the discriminator that dropped the second — or reporting both if nothing did.
  • The specific features you matched, listed, with links to the reference imagery and its capture dates.
  • Your assumptions: assumed object heights, ground flatness, which reference bearing you used, which weather station.
  • Apply the publication floor from step 1. If it says region-only, round the coordinate before it leaves your notes, not after someone asks.
Done when the finding is written with a radius, a grade, its matched features and its assumptions, at the precision step 1 authorised.
  • 始终提供坐标加米级置信半径。单纯的六位小数坐标意味着你声称拥有亚米级精度,但实际上你并不具备。根据实际限制条件推导半径:如果结果基于元数据,则使用
    GPSHPositioningError
    ;如果基于卫星影像匹配,则使用参考影像的分辨率;如果基于视觉分析,则使用与匹配特征一致的区域大小。
  • 区分相机位置和朝向,与主体位置分开。这是两个不同的位置,报告中常出现混淆。
  • 时间以当地时钟时间范围呈现,说明是否从太阳时转换而来,以及使用的偏移量。
  • 日期以一个或两个区间呈现,注明用于排除其中一个区间的判别依据——如果无法排除,则同时报告两个区间。
  • 列出匹配的具体特征,并附上参考影像的链接及其拍摄日期。
  • 说明你的假设:假设的物体高度、地面平整度、使用的参考朝向、使用的气象站。
  • 执行步骤1中确定的发布精度下限。如果要求仅发布区域范围,则在记录结果时就对坐标进行取整,而非在他人要求时才操作。
完成标志:结果已以步骤1授权的精度撰写,包含置信半径、分级、匹配特征和假设条件。

Step 10 — Handoff

步骤10 — 交接

Run
write-the-intel-brief
with the graded findings, the evidence chain, the hashes from step 2, and the archived reference links.
New selectors this workflow produces, and where they go: business names and municipal bodies to
x-ray-a-company
; phone numbers from signage to
whose-number-is-this
; domains on signs or vehicles to
who-owns-this-domain
; named or credited individuals to
find-anyone
; posting accounts to
hunt-a-handle
and
pattern-of-life-from-socials
; aircraft or vessels in frame to
track-planes-and-ships
; several related locations to
graph-the-network
.
Done when the brief is delivered, the case file retains the original hash and the derivative chain, and data you no longer need for the stated objective is deleted.
运行
write-the-intel-brief
,输入分级结果、证据链、步骤2的哈希值以及归档的参考链接。
本工作流生成的新选择器及对应处理模块:企业名称和市政机构信息提交至
x-ray-a-company
;标识牌上的电话号码提交至
whose-number-is-this
;标识或车辆上的域名提交至
who-owns-this-domain
;署名或提及的个人信息提交至
find-anyone
;发布账号提交至
hunt-a-handle
pattern-of-life-from-socials
;画面中的飞机或船只提交至
track-planes-and-ships
;多个相关地点提交至
graph-the-network
完成标志:简报已交付,案件文件保留原始哈希值和衍生文件链,不再为既定目标所需的数据已被删除。