diff --git a/lexicons/site.standard.document.json b/lexicons/site.standard.document.json new file mode 100644 index 0000000..bfbe894 --- /dev/null +++ b/lexicons/site.standard.document.json @@ -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." + } + } + } + } + } +} diff --git a/lexicons/site.standard.publication.json b/lexicons/site.standard.publication.json new file mode 100644 index 0000000..54f89ee --- /dev/null +++ b/lexicons/site.standard.publication.json @@ -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." + } + } + } + } +} diff --git a/public/.well-known/site.standard.publication b/public/.well-known/site.standard.publication new file mode 100644 index 0000000..5201ba8 --- /dev/null +++ b/public/.well-known/site.standard.publication @@ -0,0 +1 @@ +at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/site.standard.publication/syui.ai diff --git a/public/_redirects b/public/_redirects index c6f2e16..9d88f77 100644 --- a/public/_redirects +++ b/public/_redirects @@ -1,3 +1,4 @@ +/.well-known/* /.well-known/:splat 200 /app/* /index.html 200 /oauth/* /index.html 200 /* /index.html 200 diff --git a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/index.json b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/index.json index 6ac3de7..dfd4c57 100644 --- a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/index.json +++ b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/index.json @@ -1,89 +1,89 @@ [ - "zsu7dherx4mb2", - "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", + "255k3bskheo6j", "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" ] \ No newline at end of file diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/index.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/index.json index 9587ed4..ae0536c 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/index.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/index.json @@ -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", - "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", - "qxfk7tz7gwyti", - "ys2zviehsfkx5", - "ddn2kwscar6oh", - "dzpibec7jitg3", - "4bgpud3frf6hh", - "3oejqnlsseply", - "qn2hp5nyk7hep", - "mraku3adaolx5", - "fchqtradcl2qj", + "3gaf4ckp5be5j", + "3kwayvs5zrtng", "3me6tlrexwc22", + "3me6ttgsjlb24", "3me6u2g7inq26", "3me6u76kn4p2a", "3me6uc232xc2c", "3me6uf4mag22e", - "3me6ttgsjlb24", "3meb7bdy2w722", "3meb7w4vtqh24", "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" ] \ No newline at end of file diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/3mf653plsl722.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/3mf653plsl722.json new file mode 100644 index 0000000..c83092e --- /dev/null +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/3mf653plsl722.json @@ -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" + } + } + } +} \ No newline at end of file diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/index.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/index.json index ed7d5dd..2b77381 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/index.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/index.json @@ -1,3 +1,4 @@ [ + "3mf653plsl722", "3mchqlshygs2s" ] \ No newline at end of file