This commit is contained in:
2026-02-19 07:35:07 +09:00
parent 4075f6de45
commit 24c5567f21
8 changed files with 335 additions and 163 deletions

View File

@@ -0,0 +1,79 @@
{
"lexicon": 1,
"id": "site.standard.document",
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"type": "record",
"key": "tid",
"description": "A document record representing a published article, blog post, or other content. Documents can belong to a publication or exist independently.",
"record": {
"type": "object",
"required": ["site", "title", "publishedAt"],
"properties": {
"site": {
"type": "string",
"format": "uri",
"description": "Points to a publication record (at://) or a publication url (https://) for loose documents."
},
"title": {
"type": "string",
"maxLength": 5000,
"maxGraphemes": 500,
"description": "Title of the document."
},
"publishedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp of the document's publish time."
},
"content": {
"type": "union",
"closed": false,
"refs": [],
"description": "Open union used to define the record's content. Each entry must specify a $type."
},
"description": {
"type": "string",
"maxLength": 30000,
"maxGraphemes": 3000,
"description": "A brief description or excerpt from the document."
},
"textContent": {
"type": "string",
"description": "Plaintext representation of the document's contents. Should not contain markdown or other formatting."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp of the document's last edit."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 1280,
"maxGraphemes": 128
},
"description": "Array of strings used to tag or categorize the document."
},
"path": {
"type": "string",
"description": "Combine with site URL to construct a canonical URL to the document."
},
"coverImage": {
"type": "blob",
"accept": ["image/*"],
"maxSize": 1000000,
"description": "Cover image. Less than 1MB."
},
"bskyPostRef": {
"type": "ref",
"ref": "com.atproto.repo.strongRef",
"description": "Strong reference to a Bluesky post."
}
}
}
}
}
}

View File

@@ -0,0 +1,62 @@
{
"lexicon": 1,
"id": "site.standard.publication",
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"type": "record",
"key": "tid",
"description": "A publication record representing a blog, website, or content platform. Publications serve as containers for documents and define the overall branding and settings.",
"record": {
"type": "object",
"required": ["url", "name"],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Base publication url (ex: https://syui.ai). The canonical document URL is formed by combining this value with the document path."
},
"name": {
"type": "string",
"maxLength": 5000,
"maxGraphemes": 500,
"description": "Name of the publication."
},
"icon": {
"type": "blob",
"accept": ["image/*"],
"maxSize": 1000000,
"description": "Square image to identify the publication. Should be at least 256x256."
},
"description": {
"type": "string",
"maxLength": 30000,
"maxGraphemes": 3000,
"description": "Brief description of the publication."
},
"basicTheme": {
"type": "ref",
"ref": "site.standard.theme.basic",
"description": "Simplified publication theme for tools and apps to utilize when displaying content."
},
"preferences": {
"type": "ref",
"ref": "#preferences",
"description": "Object containing platform specific preferences."
}
}
}
},
"preferences": {
"type": "object",
"description": "Platform-specific preferences for the publication, including discovery and visibility settings.",
"properties": {
"showInDiscover": {
"type": "boolean",
"default": true,
"description": "Boolean which decides whether the publication should appear in discovery feeds."
}
}
}
}
}

View File

@@ -0,0 +1 @@
at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/site.standard.publication/syui.ai

View File

@@ -1,3 +1,4 @@
/.well-known/* /.well-known/:splat 200
/app/* /index.html 200 /app/* /index.html 200
/oauth/* /index.html 200 /oauth/* /index.html 200
/* /index.html 200 /* /index.html 200

View File

@@ -1,89 +1,89 @@
[ [
"zsu7dherx4mb2", "255k3bskheo6j",
"zs5ejisoztpi5",
"zfraowldrsxxt",
"z47td3ezv2a2c",
"yznvxcj5bjuhq",
"ynvurf4jg76di",
"xghh6ketlbszv",
"x6eetajckayog",
"wyvk2hwtx4iie",
"wtoul7boqaatk",
"wsl5ikfb44gyo",
"w72lwimbmb5d2",
"w3o3e3nii4iv6",
"vtwx47h6dv7ro",
"unj7mu3zannj7",
"uky42vvf3cz54",
"ub7qhzkw6a5ns",
"tc3nim6a66qye",
"tamzeor4ufphz",
"sd5ql7grxr2gm",
"salthoyxqr3vg",
"rjv6rgjtpjn2n",
"r5x3z4d4vrvf5",
"qu6i2finhb5lp",
"qt75b4bua3r25",
"qoyadv6aswigr",
"qf5dnyznrr5ts",
"qds5wk4kh4x6y",
"pvucam6btjpzt",
"pnfvith6eyafv",
"ouyhar727gfwx",
"n6xjzugjb734f",
"m5sxxcbyfwhzv",
"m4h6t4vfw7mcb",
"lt3z6yvsomyjd",
"krajt6fldd762",
"kr5ig7vlgl276",
"kpimmynstuba7",
"kazagpz54fz4y",
"k7bhaaskcuw2j",
"jtdn5ncfojjwv",
"jnq2fh5do5gri",
"jlfx7eszcubu5",
"jjfsk6e5ia4lm",
"jbfvt32lao6yg",
"j2eqwbfulmovq",
"ixeuckd6ao43h",
"inwkl55s7osg3",
"ia5uwsydi5ljs",
"hwmwgxrxg44kj",
"gxddi4eg3yh7j",
"fhomy55hdrb5d",
"evknoqtr7uyey",
"efs4j6j3zqcbv",
"dlklhvty5aiyf",
"dcm6ta3ndmcii",
"d3dmreieiynnd",
"caiun7er6rklv",
"c6o3ti5zk24yx",
"c5xux5rkjr3n7",
"bj3kxqtnko4gx",
"bcdp3pivh6bw6",
"aunhtmv67bb3e",
"amwpl3iupt6wn",
"ajv4iz53q4kqr",
"7numrfd5dlm2v",
"655zfmpn4ln3u",
"5qiag3g6frrll",
"57vsoautyqq6e",
"4x4q62asrj7ye",
"45yvfu6vqnmv4",
"3r7eq4inllheg",
"3pxakq4gd75sv",
"3mebae7z77x2b",
"3meb7ykzumg27",
"3meb7w4vuas25",
"3meb7bdy3ge23",
"3me6uf4masj2f",
"3me6uc233ib2d",
"3me6u76knjf2b",
"3me6u2g7izx27",
"3me6ttgsk2g25",
"3me6tlrez7l23",
"325sghcecgzco",
"2ks46vomw4s2i",
"2ivbc5b4um5bu", "2ivbc5b4um5bu",
"255k3bskheo6j" "2ks46vomw4s2i",
"325sghcecgzco",
"3me6tlrez7l23",
"3me6ttgsk2g25",
"3me6u2g7izx27",
"3me6u76knjf2b",
"3me6uc233ib2d",
"3me6uf4masj2f",
"3meb7bdy3ge23",
"3meb7w4vuas25",
"3meb7ykzumg27",
"3mebae7z77x2b",
"3pxakq4gd75sv",
"3r7eq4inllheg",
"45yvfu6vqnmv4",
"4x4q62asrj7ye",
"57vsoautyqq6e",
"5qiag3g6frrll",
"655zfmpn4ln3u",
"7numrfd5dlm2v",
"ajv4iz53q4kqr",
"amwpl3iupt6wn",
"aunhtmv67bb3e",
"bcdp3pivh6bw6",
"bj3kxqtnko4gx",
"c5xux5rkjr3n7",
"c6o3ti5zk24yx",
"caiun7er6rklv",
"d3dmreieiynnd",
"dcm6ta3ndmcii",
"dlklhvty5aiyf",
"efs4j6j3zqcbv",
"evknoqtr7uyey",
"fhomy55hdrb5d",
"gxddi4eg3yh7j",
"hwmwgxrxg44kj",
"ia5uwsydi5ljs",
"inwkl55s7osg3",
"ixeuckd6ao43h",
"j2eqwbfulmovq",
"jbfvt32lao6yg",
"jjfsk6e5ia4lm",
"jlfx7eszcubu5",
"jnq2fh5do5gri",
"jtdn5ncfojjwv",
"k7bhaaskcuw2j",
"kazagpz54fz4y",
"kpimmynstuba7",
"kr5ig7vlgl276",
"krajt6fldd762",
"lt3z6yvsomyjd",
"m4h6t4vfw7mcb",
"m5sxxcbyfwhzv",
"n6xjzugjb734f",
"ouyhar727gfwx",
"pnfvith6eyafv",
"pvucam6btjpzt",
"qds5wk4kh4x6y",
"qf5dnyznrr5ts",
"qoyadv6aswigr",
"qt75b4bua3r25",
"qu6i2finhb5lp",
"r5x3z4d4vrvf5",
"rjv6rgjtpjn2n",
"salthoyxqr3vg",
"sd5ql7grxr2gm",
"tamzeor4ufphz",
"tc3nim6a66qye",
"ub7qhzkw6a5ns",
"uky42vvf3cz54",
"unj7mu3zannj7",
"vtwx47h6dv7ro",
"w3o3e3nii4iv6",
"w72lwimbmb5d2",
"wsl5ikfb44gyo",
"wtoul7boqaatk",
"wyvk2hwtx4iie",
"x6eetajckayog",
"xghh6ketlbszv",
"ynvurf4jg76di",
"yznvxcj5bjuhq",
"z47td3ezv2a2c",
"zfraowldrsxxt",
"zs5ejisoztpi5",
"zsu7dherx4mb2"
] ]

View File

@@ -1,89 +1,89 @@
[ [
"zi7t34bdc6kqn",
"z42mx3edarpnb",
"y2qobgxho6jte",
"wwgwt2ycq3tx5",
"vr72pvlhuxnf5",
"tg7crfsupxz7h",
"sv26xtnwgjsds",
"sqzphb67ymv4i",
"snju64fbt4a3n",
"s55utv52t3rf6",
"qbuquaswgxo36",
"q57mb4gebtj2o",
"p6mxoi2x2ooz6",
"odtsnpvndlp73",
"mvahfu2zl55jr",
"ktjdbs7ie2x6d",
"kidbeqeb2gjrx",
"khx456dlcp7fs",
"kftis2fugsvqt",
"jkvo4qeutpfkk",
"jee3z7tbzoxic",
"jcdlr7wjyernr",
"eto4yezfoztky",
"dud5blgqfgxm7",
"d4wj4rh3k3zsf",
"coztphfo4rtbx",
"bvm7emi5zgatx",
"buzwfx2jasgos",
"b7emi5uv7frxu",
"a6hfn4arclf3k",
"74zyr4w2s3vf4",
"6eg45a33vqzp3",
"3ucggdsyhth6h",
"3kwayvs5zrtng",
"3gaf4ckp5be5j",
"27xox352hir2g", "27xox352hir2g",
"wigv2qnon7pmg",
"smrgeplyw5wmr",
"p4l6y3qkmfscg",
"ygwc5lfiqugqr",
"cuismxqmr5kjj",
"zcjwkbra3y224",
"imlara2baiopj",
"i3yrryvuobx44",
"lgr6ni5clwg7r",
"ncxfpuml2yoqi",
"oulyo5t5yavqz",
"gx5bssnv2h4vm",
"vt7de2xmkqdgk",
"xlh5s3wr2z6ia",
"ycjwf47jjogfi",
"7aply5kzsrurb",
"zq3rudsk64jjb",
"berfskicpcnld",
"upkr4d3t6kvut",
"jt3komt7bczax",
"npdou3rpemmwi",
"uizfuocgllffc",
"kgcjfbhjeeujv",
"ni2s7l3ulzmtl",
"lwcxk6sqgmdxi",
"o2bwpqyqqkemd",
"mwdthjtge5plc",
"nxq55ylg23swh",
"xjbcakcuv6nva",
"bkjd7d7nhgpxc",
"zxvrfbbtpb6cl",
"2b56dpd54zr62", "2b56dpd54zr62",
"qxfk7tz7gwyti", "3gaf4ckp5be5j",
"ys2zviehsfkx5", "3kwayvs5zrtng",
"ddn2kwscar6oh",
"dzpibec7jitg3",
"4bgpud3frf6hh",
"3oejqnlsseply",
"qn2hp5nyk7hep",
"mraku3adaolx5",
"fchqtradcl2qj",
"3me6tlrexwc22", "3me6tlrexwc22",
"3me6ttgsjlb24",
"3me6u2g7inq26", "3me6u2g7inq26",
"3me6u76kn4p2a", "3me6u76kn4p2a",
"3me6uc232xc2c", "3me6uc232xc2c",
"3me6uf4mag22e", "3me6uf4mag22e",
"3me6ttgsjlb24",
"3meb7bdy2w722", "3meb7bdy2w722",
"3meb7w4vtqh24", "3meb7w4vtqh24",
"3meb7ykzu2r26", "3meb7ykzu2r26",
"3mebae7z55h2a" "3mebae7z55h2a",
"3oejqnlsseply",
"3ucggdsyhth6h",
"4bgpud3frf6hh",
"6eg45a33vqzp3",
"74zyr4w2s3vf4",
"7aply5kzsrurb",
"a6hfn4arclf3k",
"b7emi5uv7frxu",
"berfskicpcnld",
"bkjd7d7nhgpxc",
"buzwfx2jasgos",
"bvm7emi5zgatx",
"coztphfo4rtbx",
"cuismxqmr5kjj",
"d4wj4rh3k3zsf",
"ddn2kwscar6oh",
"dud5blgqfgxm7",
"dzpibec7jitg3",
"eto4yezfoztky",
"fchqtradcl2qj",
"gx5bssnv2h4vm",
"i3yrryvuobx44",
"imlara2baiopj",
"jcdlr7wjyernr",
"jee3z7tbzoxic",
"jkvo4qeutpfkk",
"jt3komt7bczax",
"kftis2fugsvqt",
"kgcjfbhjeeujv",
"khx456dlcp7fs",
"kidbeqeb2gjrx",
"ktjdbs7ie2x6d",
"lgr6ni5clwg7r",
"lwcxk6sqgmdxi",
"mraku3adaolx5",
"mvahfu2zl55jr",
"mwdthjtge5plc",
"ncxfpuml2yoqi",
"ni2s7l3ulzmtl",
"npdou3rpemmwi",
"nxq55ylg23swh",
"o2bwpqyqqkemd",
"odtsnpvndlp73",
"oulyo5t5yavqz",
"p4l6y3qkmfscg",
"p6mxoi2x2ooz6",
"q57mb4gebtj2o",
"qbuquaswgxo36",
"qn2hp5nyk7hep",
"qxfk7tz7gwyti",
"s55utv52t3rf6",
"smrgeplyw5wmr",
"snju64fbt4a3n",
"sqzphb67ymv4i",
"sv26xtnwgjsds",
"tg7crfsupxz7h",
"uizfuocgllffc",
"upkr4d3t6kvut",
"vr72pvlhuxnf5",
"vt7de2xmkqdgk",
"wigv2qnon7pmg",
"wwgwt2ycq3tx5",
"xjbcakcuv6nva",
"xlh5s3wr2z6ia",
"y2qobgxho6jte",
"ycjwf47jjogfi",
"ygwc5lfiqugqr",
"ys2zviehsfkx5",
"z42mx3edarpnb",
"zcjwkbra3y224",
"zi7t34bdc6kqn",
"zq3rudsk64jjb",
"zxvrfbbtpb6cl"
] ]

View File

@@ -0,0 +1,28 @@
{
"cid": "bafyreidjio2ixenxm25o6vrw6q3lefpdj3rfb25eai32wptz4tzhk66qrm",
"uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/3mf653plsl722",
"value": {
"$type": "ai.syui.log.post",
"content": {
"$type": "ai.syui.log.post#markdown",
"text": "## site.standard とは\n\natproto上でブログやWebサイトを公開するための標準lexicon。\n\n- `site.standard.publication` : サイト全体の定義URL、名前、テーマ等\n- `site.standard.document` : 個別の記事レコード\n\n## ailogの対応\n\nailogの `ai.syui.log.post` と `ai.syui.log.chat` のスキーマを `site.standard.document` と互換性のある形に統一した。\n\n### 共通のrequiredフィールド\n\n```json\n{\n \"site\": \"https://syui.ai\",\n \"title\": \"記事タイトル\",\n \"publishedAt\": \"2026-02-19T00:00:00Z\"\n}\n```\n\nこれは `site.standard.document` と同じrequiredなので、将来的にそのままpushできる。\n\n### contentはopen union\n\n```json\n{\n \"content\": {\n \"$type\": \"ai.syui.log.post#markdown\",\n \"text\": \"# Hello World\"\n }\n}\n```\n\n`content` フィールドは `$type` を持つopen unionになっている。これにより、markdownだけでなく他のフォーマットにも拡張可能。\n\n### .well-known エンドポイント\n\n`/.well-known/site.standard.publication` を設置し、ドメインとATProtoレコードの紐づけを検証可能にした。\n\n```\nhttps://syui.ai/.well-known/site.standard.publication\n→ at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/site.standard.publication/syui.ai\n```\n\n### lexiconスキーマのpush\n\nPDS上の `com.atproto.lexicon.schema` コレクションにlexiconスキーマを登録した。\n\n```sh\n$ ailog lexicon lexicons/site.standard.publication.json\n$ ailog lexicon lexicons/site.standard.document.json\n```"
},
"langs": [
"ja"
],
"publishedAt": "2026-02-19T00:00:00.000Z",
"site": "https://syui.ai",
"tags": [
"atproto",
"site-standard",
"lexicon"
],
"title": "site.standard lexiconに対応した",
"translations": {
"en": {
"content": "## What is site.standard?\n\nA standard lexicon for publishing blogs and websites on atproto.\n\n- `site.standard.publication` : Defines the overall site (URL, name, theme, etc.)\n- `site.standard.document` : Individual article records\n\n## ailog's support\n\nUnified the schemas of `ai.syui.log.post` and `ai.syui.log.chat` to be compatible with `site.standard.document`.\n\n### Common required fields\n\n```json\n{\n \"site\": \"https://syui.ai\",\n \"title\": \"Article title\",\n \"publishedAt\": \"2026-02-19T00:00:00Z\"\n}\n```\n\nThese match the required fields of `site.standard.document`, so records can be pushed directly in the future.\n\n### Content as open union\n\n```json\n{\n \"content\": {\n \"$type\": \"ai.syui.log.post#markdown\",\n \"text\": \"# Hello World\"\n }\n}\n```\n\nThe `content` field is an open union with `$type`. This allows extension beyond markdown to other formats.\n\n### .well-known endpoint\n\nSet up `/.well-known/site.standard.publication` to enable verification of the link between the domain and ATProto records.\n\n```\nhttps://syui.ai/.well-known/site.standard.publication\n→ at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/site.standard.publication/syui.ai\n```\n\n### Lexicon schema push\n\nRegistered lexicon schemas to the `com.atproto.lexicon.schema` collection on PDS.\n\n```sh\n$ ailog lexicon lexicons/site.standard.publication.json\n$ ailog lexicon lexicons/site.standard.document.json\n```",
"title": "Added site.standard lexicon support"
}
}
}
}

View File

@@ -1,3 +1,4 @@
[ [
"3mf653plsl722",
"3mchqlshygs2s" "3mchqlshygs2s"
] ]