https://lokuyow.github.io/ehagaki/
eHagaki(えはがき)は、画像・動画圧縮機能付きの投稿専用Nostrクライアントです。
デバイス上で画像や動画を自動圧縮し、効率的にNostrへ投稿できます。
- Nostr投稿専用: 投稿機能に特化し、シンプルなUIで快適な利用体験を提供
- 画像・動画圧縮: 画像・動画はアップロード前に自動で圧縮され、通信量を削減(圧縮レベル調整可能)
- Tiptapエディター: 画像・動画・リンク・#ハッシュタグ対応のリッチエディター搭載
- PWA対応: モバイル・デスクトップ両対応、Androidはメディアアプリの共有ボタンからメディアアップロード可能
- ドラフト機能: 投稿内容を下書きとして保存し、後から編集・投稿が可能
- 多言語対応: 日本語・英語に対応(ブラウザ設定から自動判定)
アクセス時にエディターへテキストを事前入力できます:
https://lokuyow.github.io/ehagaki/?content={url-encoded-text-here}
eHagakiは他のWebサイトにiframeとして埋め込むことができます。投稿の成功・失敗時には親ウィンドウへpostMessageで通知されます。
<!-- eHagakiをiframeで埋め込み -->
<iframe
id="ehagaki-iframe"
src="https://lokuyow.github.io/ehagaki/"
width="600"
height="400">
</iframe>
<script>
// postMessageを受信
window.addEventListener('message', (event) => {
if (event.origin !== 'https://lokuyow.github.io') return;
const data = event.data;
if (data.type === 'POST_SUCCESS') {
console.log('投稿成功:', data);
} else if (data.type === 'POST_ERROR') {
console.error('投稿失敗:', data);
}
});
</script>{
type: 'POST_SUCCESS',
timestamp: 1729788000000 // Unix timestamp (ミリ秒)
}{
type: 'POST_ERROR',
timestamp: 1729788000000,
error: 'empty_content' // エラーコード
}| エラーコード | 説明 |
|---|---|
empty_content |
投稿内容が空 |
login_required |
ログインが必要 |
nostr_not_ready |
Nostrクライアントが初期化されていない |
key_not_found |
秘密鍵が見つからない |
post_error |
一般的な投稿エラー |
- Svelte 5 + Vite - UI フレームワーク
- bits-ui - Svelte UI コンポーネント
- Tiptap v3 - リッチテキストエディター
- svelte-tiptap - Svelte向けTiptap統合
- svelte-i18n - 多言語対応
- rx-nostr - リレー管理とイベントストリーミング
- nostr-tools - Nostrプロトコル実装
- nostr-login - 認証UI(拡張機能/Nostr Connect対応)
- browser-image-compression - 画像圧縮
- FFmpeg.wasm - 動画圧縮(WebAssembly版)
- mediabunny - 動画圧縮(WebCodecs API)
- blurhash - 画像プレースホルダー生成
- vite-plugin-pwa - Progressive Web App対応