Scrapboxの行IDの書式
reverse engineeringして特定したのでメモ
Scrapboxの行IDは8文字(A)+6文字(B)+4文字(C)+6文字(D)の単位で構成された24文字のIdである
例:
61483d6b1280f00000288feb
AAAAAAAABBBBBBCCCCDDDDDD
各単位の説明
A: IDを生成したUnix時刻の16進表記の末尾8文字
unix時刻で0xFFFFFFFFは2106-02-07T15:28:15Z+0900なので、これより前なら末尾8文字をそのままUnix時刻として扱って良い
この性質はUserCSSで使えそうだなtakker.icon
特定期間に更新された行になにかするUserCSSとか
B: その行を生成したUserのIDの末尾6文字分
C: 常に0000
D: 0x000000から0xfffffeまでの完全にランダムな16進数
サーバで作成した行IDは、この規則に従っていない
新規作成したページのタイトル行のIDなどが例
生成コード
code:mod.ts
const zero = (n: string) => n.padStart(8, '0');
export function createNewLineId(userId: string) {
const time = Math.floor(new Date().getTime() / 1000).toString(16);
const rand = Math.floor(0xFFFFFE * Math.random()).toString(16);
return ${zero(time).slice(-8)}${userId.slice(-6)}0000${zero(rand)};
}
#2021-10-02 09:54:37
#2021-09-22 16:13:11 表現修正
#2021-09-20 16:55:02