Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Publish blog posts to Bear Blog platform. Supports user-provided markdown, AI-generated content, and auto-generated diagrams.
Publish blog posts to Bear Blog platform. Supports user-provided markdown, AI-generated content, and auto-generated diagrams.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Publish blog posts to Bear Blog (https://bearblog.dev/).
This skill provides automated publishing capabilities for Bear Blog, including optional AI content generation and diagram generation.
Add to your ~/.openclaw/openclaw.json: { "skills": { "bear-blog-publisher": { "email": "your@email.com", "password": "yourpassword" } } } Security: File permissions should be set to 600 (readable only by owner).
export BEAR_BLOG_EMAIL="your@email.com" export BEAR_BLOG_PASSWORD="yourpassword" Security: Credentials exist only in memory, not written to disk.
Provide credentials when calling the skill: publisher = BearBlogPublisher(email="user@example.com", password="secret") Security: Caller (chat bot, web app, etc.) manages credential lifecycle.
To use AI content generation, configure one of the following:
export OPENAI_API_KEY="sk-..."
export KIMI_API_KEY="your-kimi-api-key"
publisher = BearBlogPublisher() content = publisher.generate_content( topic="Python best practices", provider="openai", # or "kimi" tone="professional", length="medium" ) result = publisher.publish(title="My Post", content=content)
Runtime parameters (highest priority) Environment variables OpenClaw config (lowest priority)
Input: title (string): Blog post title content (string): Markdown content email (string, optional): Bear Blog email password (string, optional): Bear Blog password Output: Published URL or error message
Generate blog content using OpenAI or Kimi API.
For technical topics, generates architecture diagrams using HTML/CSS + Playwright.
Never commit credentials to git Use environment variables in production Set file permissions to 600 for config files Use runtime parameters for multi-user scenarios
This skill makes several operational choices that users should be aware of:
Why: Required for generating architecture diagrams as PNG images Size: ~100MB Chromium browser Alternative: Skip diagram generation if not needed
Location: /tmp/diagram.html and /tmp/diagram.png Purpose: Intermediate files for diagram generation Cleanup: Files are overwritten on each run, not explicitly deleted
Why: Required for running Chromium in containerized/Docker environments Risk: Slightly reduced browser isolation Mitigation: Only used for local HTML-to-image conversion, no external URLs loaded
Config file: Only if user chooses Method 1 Recommendation: Use environment variables (Method 2) or runtime parameters (Method 3) instead If using config: Always set file permissions to 600
# ~/.openclaw/openclaw.json configured You: "Publish a blog about Python tips" AI: [Uses config credentials, publishes]
export BEAR_BLOG_EMAIL="user@example.com" export BEAR_BLOG_PASSWORD="secret" You: "Publish a blog about Python tips" AI: [Uses env vars, publishes]
export BEAR_BLOG_EMAIL="user@example.com" export BEAR_BLOG_PASSWORD="secret" export OPENAI_API_KEY="sk-..." You: "Write and publish a blog about Python asyncio" AI: [Generates content with OpenAI, publishes]
# In your chat bot code email = get_user_email() # Ask user password = get_user_password() # Ask user publisher = BearBlogPublisher(email=email, password=password) result = publisher.publish(title="My Post", content="# Content")
Uses Bear Blog web API CSRF token authentication Session-based (no persistent storage) Playwright for diagram generation OpenAI/Kimi API for content generation
MIT
Long-tail utilities that do not fit the current primary taxonomy cleanly.
Largest current source with strong distribution and engagement signals.