Altifier #
Scan your Bluesky posts for missing alt text and fix them with AI-generated descriptions.
Features #
- Scan your posts: Enumerate all your Bluesky posts and replies, finding images that lack alt text
- AI-powered alt text: Generates descriptive alt text using vision AI, following Section 508 guidelines
- Review and edit: Preview generated alt text, edit inline, and approve before applying
- Bluesky OAuth login: Authenticate securely with your Bluesky/ATProto account
What this does #
Altifier scans the image posts (app.bsky.feed.post records with app.bsky.embed.images) in your PDS, identifies images missing alt text, generates descriptions via AI, and lets you apply them by recreating your posts with alt text included.
Note: Recreating a post with alt text deletes the original and creates a new one. Likes, reposts, quotes, and replies on the original post are lost.
Development #
npm install
npm start
Build #
npm run build
The build/ directory contains the static site ready for deployment.
Deployment #
This app is a fully static React SPA and can be deployed to:
- Wisp.place:
wispctl deploy <handle> --path ./build --site altifier --spa - Tangled: Configure the repo's Sites settings with deploy directory
/build - Any static host: Serve the
build/directory with SPA fallback toindex.html
AI Setup #
Altifier uses Google Gemini 2.5 Flash (free tier) for alt text generation. Set your API key:
export REACT_APP_GEMINI_API_KEY=your_key_here
npm run build
Get a free API key at aistudio.google.com.
OAuth Configuration #
OAuth client metadata lives in:
src/contexts/AuthContext.js—clientMetadataobjectpublic/client-metadata.json— served at/client-metadata.json
Both must match the deployed domain. Update them if you change domains.
License #
MIT