diff --git a/.env.example b/.env.example
deleted file mode 100644
index 647e7fa..0000000
--- a/.env.example
+++ /dev/null
@@ -1,3 +0,0 @@
-# LMS Translation API
-TRANSLATE_URL=http://127.0.0.1:1234/v1
-TRANSLATE_MODEL=plamo-2-translate
diff --git a/.github/workflows/cf-pages.yml b/.github/workflows/cf-pages.yml
deleted file mode 100644
index 80d3d23..0000000
--- a/.github/workflows/cf-pages.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-name: Deploy to Cloudflare Pages
-
-on:
- push:
- branches:
- - main
- workflow_dispatch:
-
-jobs:
- deploy:
- runs-on: ubuntu-latest
- permissions:
- contents: read
- deployments: write
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
-
- - name: Install dependencies
- run: npm install
-
- - name: Build content from ATProto
- run: npm run build
-
- - name: Deploy to Cloudflare Pages
- uses: cloudflare/pages-action@v1
- with:
- apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
- accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
- projectName: ${{ secrets.CLOUDFLARE_PROJECT_NAME }}
- directory: dist
- gitHubToken: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index c132f48..5646c75 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -2,7 +2,7 @@ name: Deploy to GitHub Pages
on:
push:
- branches: [main]
+ branches: [min]
workflow_dispatch:
permissions:
diff --git a/Cargo.toml b/Cargo.toml
deleted file mode 100644
index bc37255..0000000
--- a/Cargo.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-[package]
-name = "ailog"
-version = "0.0.1"
-edition = "2021"
-description = "ATProto blog CLI"
-authors = ["syui"]
-homepage = "https://syui.ai"
-repository = "https://git.syui.ai/ai/log"
-
-[[bin]]
-name = "ailog"
-path = "src/main.rs"
-
-[dependencies]
-clap = { version = "4.5", features = ["derive"] }
-serde = { version = "1.0", features = ["derive"] }
-serde_json = "1.0"
-reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false }
-tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
-anyhow = "1.0"
-dirs = "5.0"
-chrono = { version = "0.4", features = ["serde"] }
-rand = "0.8"
-dotenvy = "0.15"
diff --git a/index.html b/index.html
deleted file mode 100644
index e172358..0000000
--- a/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
- syui.ai
-
-
-
-
-
-
-
diff --git a/lexicons/ai.syui.log.post.json b/lexicons/ai.syui.log.post.json
deleted file mode 100644
index ad2f85b..0000000
--- a/lexicons/ai.syui.log.post.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "lexicon": 1,
- "id": "ai.syui.log.post",
- "defs": {
- "main": {
- "type": "record",
- "description": "Record containing a blog post.",
- "key": "tid",
- "record": {
- "type": "object",
- "required": ["title", "content", "createdAt"],
- "properties": {
- "title": {
- "type": "string",
- "maxLength": 3000,
- "maxGraphemes": 300,
- "description": "The title of the post."
- },
- "content": {
- "type": "string",
- "maxLength": 1000000,
- "maxGraphemes": 100000,
- "description": "The content of the post (markdown)."
- },
- "createdAt": {
- "type": "string",
- "format": "datetime",
- "description": "Client-declared timestamp when this post was originally created."
- },
- "lang": {
- "type": "string",
- "maxLength": 10,
- "description": "Language code of the original content (e.g., 'ja', 'en')."
- },
- "translations": {
- "type": "ref",
- "ref": "#translationMap",
- "description": "Translations of the post in other languages."
- }
- }
- }
- },
- "translationMap": {
- "type": "object",
- "description": "Map of language codes to translations.",
- "properties": {
- "en": { "type": "ref", "ref": "#translation" },
- "ja": { "type": "ref", "ref": "#translation" }
- }
- },
- "translation": {
- "type": "object",
- "description": "A translation of a post.",
- "properties": {
- "title": {
- "type": "string",
- "maxLength": 3000,
- "maxGraphemes": 300
- },
- "content": {
- "type": "string",
- "maxLength": 1000000,
- "maxGraphemes": 100000
- }
- }
- }
- }
-}
diff --git a/public/config.json b/public/config.json
index 4a11798..16dc5cf 100644
--- a/public/config.json
+++ b/public/config.json
@@ -1,9 +1,9 @@
{
- "title": "syui.ai",
- "handle": "syui.syui.ai",
- "collection": "ai.syui.log.post",
- "network": "syu.is",
- "color": "#EF454A",
- "siteUrl": "https://syui.ai",
- "oauth": true
+ "title": "ailog",
+ "handle": "syui.ai",
+ "collection": "ai.syui.log.post",
+ "network": "bsky.social",
+ "color": "#EF454A",
+ "siteUrl": "https://syui.github.io",
+ "oauth": false
}
diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/3mchqlshygs2s.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/3mchqlshygs2s.json
deleted file mode 100644
index 3abbea1..0000000
--- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/3mchqlshygs2s.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "cid": "bafyreigwaeqfluw7btvnmxfogd77gtk4efwomvjsvq2yxmmxr2665zwwbi",
- "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/3mchqlshygs2s",
- "value": {
- "$type": "ai.syui.log.post",
- "content": "## ailogとは\n\natprotoと連携するサイトジェネレータ。\n\n## ailogの使い方\n\n```sh\n$ git clone https://git.syui.ai/ai/log\n$ cd log\n$ cat public/config.json\n{\n \"title\": \"syui.ai\",\n \"handle\": \"syui.syui.ai\",\n \"collection\": \"ai.syui.log.post\",\n \"network\": \"syu.is\",\n \"color\": \"#0066cc\",\n \"siteUrl\": \"https://syui.ai\"\n}\n---\n$ npm run dev\n```\n\n## ailogのコンセプト\n\n1. at-browserを基本にする\n2. atproto oauthでログインする\n3. ログインしたアカウントで記事をポストする",
- "createdAt": "2026-01-18T08:31:52.715Z",
- "title": "ailogを作り直した",
- "translations": {
- "en": {
- "content": "## About ailog\n\nA site generator that integrates with atproto.\n\n## How to Use ailog\n\n```sh\n$ git clone https://git.syui.ai/ai/log\n$ cd log\n$ cat public/config.json\n{\n \"title\": \"syui.ai\",\n \"handle\": \"syui.syui.ai\",\n \"collection\": \"ai.syui.log.post\",\n \"network\": \"syu.is\",\n \"color\": \"#0066cc\",\n \"siteUrl\": \"https://syui.ai\"\n}\n---\n$ npm run dev\n```\n\n## ailog's Concept\n\n1. Based on at-browser architecture\n2. Uses atproto oAuth for login\n3. Allows posting articles through the logged-in account",
- "title": "recreated ailog"
- }
- },
- "lang": "ja"
- }
-}
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
deleted file mode 100644
index 506d423..0000000
--- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.post/index.json
+++ /dev/null
@@ -1 +0,0 @@
-["3mchqlshygs2s"]
diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/app.bsky.actor.profile/self.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/app.bsky.actor.profile/self.json
deleted file mode 100644
index b62a032..0000000
--- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/app.bsky.actor.profile/self.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "cid": "bafyreihlch2vdee6wpydo2bwap7nyzszjz6focbtxikz7zljcejxz27npy",
- "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/app.bsky.actor.profile/self",
- "value": {
- "$type": "app.bsky.actor.profile",
- "avatar": {
- "$type": "blob",
- "mimeType": "image/jpeg",
- "ref": {
- "$link": "bafkreigta4pf5h7uvx6jpfcm3d6aeq4g3qpsiqjdoeytnutwp6vwc2yo7u"
- },
- "size": 166370
- },
- "createdAt": "2025-09-19T06:17:42Z",
- "description": "",
- "displayName": "syui"
- }
-}
\ No newline at end of file
diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/describe.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/describe.json
deleted file mode 100644
index 70d3c25..0000000
--- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/describe.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "collections": [
- "ai.syui.log.post",
- "app.bsky.actor.profile",
- "app.bsky.feed.post",
- "app.bsky.feed.repost",
- "app.bsky.graph.follow",
- "chat.bsky.actor.declaration",
- "com.atproto.lexicon.schema"
- ],
- "did": "did:plc:vzsvtbtbnwn22xjqhcu3vd6y",
- "handle": "syui.syui.ai"
-}
\ No newline at end of file
diff --git a/readme.md b/readme.md
index c40f8bc..a169019 100644
--- a/readme.md
+++ b/readme.md
@@ -11,181 +11,3 @@ $ cat public/config.json
$ npm run dev
```
-## oauth
-
-Use ATProto OAuth to login from the browser and create, edit, or delete posts.
-
-### Setup
-
-#### 1. Edit client-metadata.json
-
-Modify `public/client-metadata.json` with your own domain:
-
-```json
-{
- "client_id": "https://example.com/client-metadata.json",
- "client_name": "example.com",
- "client_uri": "https://example.com",
- "redirect_uris": ["https://example.com/"],
- "scope": "atproto transition:generic",
- "grant_types": ["authorization_code", "refresh_token"],
- "response_types": ["code"],
- "application_type": "web",
- "token_endpoint_auth_method": "none",
- "dpop_bound_access_tokens": true
-}
-```
-
-**Required changes:**
-
-| Field | Description |
-|-------|-------------|
-| `client_id` | URL of this file. Must be `https://yourdomain.com/client-metadata.json` |
-| `client_name` | App name (shown on auth screen) |
-| `client_uri` | Your site URL |
-| `redirect_uris` | Redirect URL after OAuth. Use your site's root URL |
-
-#### 2. Deploy the file
-
-`client-metadata.json` must be publicly accessible at:
-
-```
-https://yourdomain.com/client-metadata.json
-```
-
-The ATProto PDS fetches this file during authentication, so it **must be accessible via public URL**.
-
-#### 3. Local development
-
-No configuration needed for local development (localhost/127.0.0.1). The code automatically uses ATProto's loopback client ID:
-
-```
-http://localhost?redirect_uri=http://127.0.0.1:5173/&scope=atproto%20transition%3Ageneric
-```
-
-#### 4. Network configuration
-
-To support multiple PDS servers, define networks in `public/network.json`:
-
-```json
-{
- "bsky.social": {
- "bsky": "https://bsky.social",
- "plc": "https://plc.directory"
- },
- "syu.is": {
- "bsky": "https://bsky.syu.is",
- "plc": "https://plc.syu.is",
- "web": "https://syu.is"
- }
-}
-```
-
-The appropriate PDS is automatically selected based on the handle's domain.
-
-### Troubleshooting
-
-- **Auth error**: Verify `client_id` matches the actual file URL
-- **Redirect error**: Verify `redirect_uris` matches your site URL
-- **CORS error**: Verify `client-metadata.json` is served with correct Content-Type
-
-## cli
-
-```sh
-$ cargo build
-$ ./target/debug/ailog
-```
-
-### login (l)
-
-login to atproto pds.
-
-```sh
-$ ailog login -p [-s ]
-$ ailog l user.bsky.social -p mypassword
-$ ailog l user.syu.is -p mypassword -s syu.is
-```
-
-### post (p)
-
-post a record to collection.
-
-```sh
-$ ailog post -c [-r ]
-$ ailog p ./post.json -c ai.syui.log.post
-$ ailog p ./post.json -c ai.syui.log.post -r 3abc123
-```
-
-### get (g)
-
-get records from collection.
-
-```sh
-$ ailog get -c [-l ]
-$ ailog g -c ai.syui.log.post
-$ ailog g -c ai.syui.log.post -l 20
-```
-
-### delete (d)
-
-delete a record from collection.
-
-```sh
-$ ailog delete -c -r
-$ ailog d -c ai.syui.log.post -r 3abc123
-```
-
-### sync (s)
-
-sync pds data to local content directory.
-
-```sh
-$ ailog sync [-o