Storage repo · 自由工坊 Discord存放用 repo · 自由工坊 Discord

Discord links expire. Screenshots stay.

連結會過期,截圖不會。

When someone reports a problem in the 自由工坊 Discord, a helper bot drafts a GitHub issue. After the reporter or an admin confirms the draft, the bot strips each screenshot's metadata, commits it here, and links it from the issue.

有人在自由工坊 Discord 回報問題時,小幫手 bot 會先擬好 GitHub issue 草稿。回報者或管理員確認之後,bot 會移除截圖的中繼資料、提交到這個 repo,再在 issue 裡附上連結。

<owner>/<repo>/<YYYY-MM>/EXIF stripped已移除 EXIFImages only只放圖片
Issue attachmentIssue 附件Stored已保存
<draft-id>-<n>.<ext>
One screenshot, from Discord to the issue一張截圖,從 Discord 到 issue
✓Draft confirmed草稿已確認Discord<draft-id>
✓Metadata stripped移除中繼資料EXIF
✓Committed here提交到這個 repo<owner>/<repo>/<YYYY-MM>/main
✓Linked from the issue從 issue 連結raw.githubusercontent.com
How it works運作方式

Confirmed first, cleaned, filed by path.

先確認、再清理、照路徑歸檔。

The repository holds images only. The bot that files the issues lives elsewhere.

這個 repo 只放圖片,開 issue 的 bot 不在這裡。

01

Nothing lands before a person confirms

有人確認之後才會存進來

The bot drafts the issue in Discord first. Screenshots are committed here only after the reporter or an admin confirms that draft.

bot 會先在 Discord 裡擬好 issue 草稿,等回報者或管理員確認之後,截圖才會提交到這裡。

Discord draft
02

One predictable path per file

每個檔案都有固定路徑

Files land at <owner>/<repo>/<YYYY-MM>/<draft-id>-<n>.<ext>: the repository the issue was filed in, the month, the Discord draft ID, and the screenshot number.

檔案會存在 <owner>/<repo>/<YYYY-MM>/<draft-id>-<n>.<ext>:依序是 issue 所在的 repo、月份、Discord 草稿編號和第幾張截圖。

owner/repo/YYYY-MM/
03

Metadata stripped before upload

上傳前移除中繼資料

Photos can carry EXIF data such as location and device details. The bot strips it before upload, and a check of the stored file on 2026-09-30 found no metadata.

照片可能帶有位置、裝置等 EXIF 資訊。bot 會在上傳前移除;2026-09-30 檢查存放的檔案,沒有找到任何中繼資料。

EXIF

A yes makes it public

點頭之後才公開

The helper bot can draft the issue inside Discord. The screenshot reaches this repo only after the reporter or an admin agrees.

小幫手 bot 可以先在 Discord 裡把 issue 寫成草稿。截圖要等回報者或管理員同意,才進得了這個 repo。

  1. Say what's wrong

    Someone describes the problem in the 自由工坊 Discord, and the bot writes the draft there.

  2. Someone agrees

    The reporter or an admin has to be the one who agrees. Before that, nothing here is committed.

  3. File goes public

    The bot strips EXIF, commits the image on main, and the issue points at raw.githubusercontent.com.

  • draft sits in Discord first
  • no file before a person agrees
  • a yes means anyone can see it
  • Draft stays in chat
  • Someone says yes
  • Repo is public
Discord attachment links expire, so a confirmed shot needs a file that stays. This repo is public, and the bot's code is not in it.
  1. 先在聊天室

    有人在自由工坊 Discord 把問題講出來,bot 就在那邊起草。

  2. 等人點頭

    同意的人得是回報者或管理員。少了這一步,這裡不會多出檔案。

  3. 圖就公開了

    bot 拿掉 EXIF,把圖交上 main,issue 指向 raw.githubusercontent.com 上的圖。

  • 草稿先停在 Discord
  • 沒人同意就沒有檔
  • 點頭之後誰都看得到
  • 草稿還在聊天
  • 有人說可以
  • 倉庫對外公開
Discord 的附件連結會過期,所以確認過的圖才需要一個留得住的檔。這個 repo 是公開的,bot 的程式也不在這裡。

Follow the folders down

沿著資料夾看下去

The folders say which repo the issue belongs to, and which month the file went in. The file name is the Discord draft.

前面的資料夾告訴你這張 issue 屬於哪個 repo、落在哪一個月。檔名就是那份 Discord 草稿。

  1. Which repo

    The first two folders are the owner and the repository where that issue was opened.

  2. Year and month

    The next folder is the year and the month, written YYYY-MM.

  3. Name the shot

    The name joins the Discord draft id, a hyphen, the shot number, and the extension.

  4. Link on main

    The issue reaches that file on main through raw.githubusercontent.com.

  • owner and repo come first
  • then a YYYY-MM folder
  • draft id, hyphen, number, extension
The project page is built from site/ alone and does not publish these stored shots.
  1. 哪個 repo

    最前面兩層是 owner 和 repo,issue 就是開在那裡。

  2. 哪一個月

    再往下一層是年份和月份,寫法是 YYYY-MM。

  3. 檔名怎麼排

    檔名把草稿編號、一個連字號、第幾張和副檔名接在一起。

  4. 連到 main

    issue 經由 raw.githubusercontent.com,連到 main 上的這個檔。

  • 先是 owner 和 repo
  • 接著是年月資料夾
  • 編號、連字號、張數、副檔名
專案介紹頁只從 site/ 建出來,不會把這些存檔的圖發佈出去。
Removal移除

Need a screenshot taken down?

需要移除截圖?

Screenshots sometimes show more than intended, such as names, email addresses, or tokens. If a secret was exposed, rotate it first: deleting the image does not undo the exposure.

截圖有時會拍到不該公開的東西,例如姓名、email 或 token。如果外洩的是密碼或金鑰,請先更換:刪掉圖片並不能讓外洩的資訊收回來。

Identify the file

指出是哪個檔案

Note the issue and the screenshot number, or the file path in this repository.

記下是哪個 issue、第幾張截圖,或是這個 repo 裡的檔案路徑。

Ask for removal

提出移除要求

Ask an admin in the 自由工坊 Discord. If you are not in the Discord, open an issue in this repository. Name the file; do not attach the image again.

在自由工坊 Discord 找管理員;不在 Discord 的話,就在這個 repo 開 issue。寫出檔案位置就好,不要再附一次圖片。

The maintainer deletes it

維護者刪除檔案

The file is deleted from main and the issue is edited to drop the link. Older commits still hold the file until the Git history is rewritten.

維護者會從 main 刪除檔案,並編輯 issue 拿掉連結。在改寫 Git 歷史之前,舊的 commit 裡仍然留有這個檔案。

History keeps a copy

歷史裡還有一份

Ask an admin in the 自由工坊 Discord. If you are outside it, open an issue in this repository.

去自由工坊 Discord 找管理員。人不在裡面,就在這個 repo 開一張 issue。

  1. Which file

    Give the issue and the shot number, or the path. Do not attach the picture again.

  2. Remove from main

    A maintainer removes that file from the main branch.

  3. Link stops working

    The issue is edited too, so that picture link stops working.

  4. Old commits keep it

    Commits from before that delete still contain the file, unless someone rewrites history.

  • name it, and do not reattach
  • file and link leave main
  • older commits still hold a copy
If the picture shows a password, a token, or a key, rotate it before you ask. Removing the file does not pull that secret back.
  1. 指出哪個檔

    寫出是哪張 issue、第幾張,或是路徑。請求裡不要再附上那張圖。

  2. 刪掉 main

    維護者會把這個檔從 main 分支拿掉。

  3. 連結失效

    issue 也會改一版,圖片連結就打不開了。

  4. 舊紀錄還在

    這次刪除之前的 commit 仍留著檔案,除非有人改寫歷史。

  • 指出檔案,別再附圖
  • main 上的檔和連結都沒了
  • 更早的 commit 還留著
圖裡如果有密碼、token 或金鑰,提出之前先換掉。刪掉檔案,並不會把已經外洩的內容收回來。
Honest status誠實的現況

Where it stands.

目前的樣子。

Set up in September 2026. So far it holds one screenshot, from a closed test issue.

2026 年 9 月建立,目前只存了一張截圖,來自一個已關閉的測試 issue。

Works today

目前可用

  • Screenshots stored by path and linked from issues through raw.githubusercontent.com
  • 截圖依路徑存放,issue 透過 raw.githubusercontent.com 連結
  • EXIF stripped before upload; the stored file had no metadata when checked on 2026-09-30
  • 上傳前移除 EXIF;2026-09-30 檢查存放的檔案,沒有任何中繼資料
  • This project page publishes only site/, never the stored images
  • 專案介紹頁只發佈 site/,不會發佈存放的圖片

Limits and not yet

限制與尚未完成

  • The repository is public, so a confirmed screenshot is public too. Confirming the draft is the privacy check
  • repo 是公開的,確認過的截圖也就公開了;確認草稿那一步,就是隱私把關
  • Deleting a file breaks the issue's image link but does not erase it from Git history
  • 刪除檔案會讓 issue 裡的圖片連結失效,但不會把它從 Git 歷史裡抹掉
  • The bot's code is not in this repository
  • bot 的程式碼不在這個 repo 裡
Contents內容
Images only只有圖片
Layout分類方式
By repo, then month依 repo,再依月份
Metadata中繼資料
EXIF stripped已移除 EXIF
Linked via連結方式
Raw GitHub URLsGitHub raw 網址
Verified查核日期
2026-10-06

More from Ted Huang. Every public project has a page like this one, in English and Traditional Chinese.

Ted Huang 的其他作品。每個公開專案都有一頁像這樣的中英雙語介紹。

All projects →全部專案 →