Skills bearblog
Create and manage blog posts on Bear Blog (bearblog.dev). Supports extended Markdown, custom attributes, and browser-based publishing.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/azade-c/bearblog" ~/.claude/skills/openclaw-skills-bearblog && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/azade-c/bearblog" ~/.openclaw/skills/openclaw-skills-bearblog && rm -rf "$T"
skills/azade-c/bearblog/SKILL.mdBear Blog Skill
Create, edit, and manage posts on Bear Blog — a minimal, fast blogging platform.
Authentication
Bear Blog requires browser-based authentication. Log in once via the browser tool, and cookies will persist.
browser action:navigate url:https://bearblog.dev/accounts/login/
Creating a Post
Step 1: Navigate to the post editor
browser action:navigate url:https://bearblog.dev/<subdomain>/dashboard/posts/new/
Step 2: Fill the editor
Bear Blog uses a plain text header format.
The editor fields are:
(contenteditable): attributes (one per line)div#header_content
: Markdown bodytextarea#body_content
Verified: use
fill/type on those two fields, then click Publish (or Save as draft). No evaluate needed.
Header format:
title: Your Post Title link: custom-slug published_date: 2026-01-05 14:00 tags: tag1, tag2, tag3 make_discoverable: true is_page: false class_name: custom-css-class meta_description: SEO description for the post meta_image: https://example.com/image.jpg lang: en canonical_url: https://original-source.com/post alias: alternative-url
Body format: Standard Markdown with extensions (see below).
The separator
___ (three underscores) is used in templates to separate header from body.
Step 3: Publish
Click the publish button or submit the form with
publish: true.
Post Attributes Reference
| Attribute | Description | Example |
|---|---|---|
| Post title (required) | |
| Custom URL slug | |
| Publication date/time | |
| Comma-separated tags | |
| Show in discovery feed | |
| Static page vs blog post | |
| Custom CSS class (slugified) | |
| SEO meta description | |
| Open Graph image URL | |
| Language code | |
| Canonical URL for SEO | |
| Alternative URL path | |
Extended Markdown
Bear Blog uses Mistune with plugins:
Text Formatting
→~~strikethrough~~strikethrough
→ superscript^superscript^
→ subscript~subscript~
→ highlighted (mark)==highlighted==
and**bold**
— standard*italic*
Footnotes
Here's a sentence with a footnote.[^1] [^1]: This is the footnote content.
Task Lists
- [x] Completed task - [ ] Incomplete task
Tables
| Header 1 | Header 2 | |----------|----------| | Cell 1 | Cell 2 |
Code Blocks
```python def hello(): print("Hello, world!") ```
Syntax highlighting via Pygments (specify language after ```).
Math (LaTeX)
- Inline:
$E = mc^2$ - Block:
$$\int_0^\infty e^{-x^2} dx$$
Abbreviations
*[HTML]: Hypertext Markup Language The HTML specification is maintained by the W3C.
Admonitions
.. note:: This is a note admonition. .. warning:: This is a warning.
Table of Contents
.. toc::
Dynamic Variables
Use
{{ variable }} in your content:
Blog Variables
— Blog title{{ blog_title }}
— Blog meta description{{ blog_description }}
— Blog creation date{{ blog_created_date }}
— Time since last modification{{ blog_last_modified }}
— Time since last post{{ blog_last_posted }}
— Full blog URL{{ blog_link }}
— Rendered tag list with links{{ tags }}
Post Variables (in post templates)
— Current post title{{ post_title }}
— Post meta description{{ post_description }}
— Publication date{{ post_published_date }}
— Time since modification{{ post_last_modified }}
— Full post URL{{ post_link }}
— Link to next post{{ next_post }}
— Link to previous post{{ previous_post }}
Post Listing
{{ posts }} {{ posts limit:5 }} {{ posts tag:"tech" }} {{ posts tag:"tech,ai" limit:10 order:asc }} {{ posts description:True image:True content:True }}
Parameters:
— filter by tag(s), comma-separatedtag:
— max number of postslimit:
—order:
orasc
(default: desc)desc
— show meta descriptionsdescription:True
— show meta imagesimage:True
— show full content (only on pages)content:True
Email Signup (upgraded blogs only)
{{ email-signup }} {{ email_signup }}
Links
Standard Links
[Link text](https://example.com) [Link with title](https://example.com "Title text")
Open in New Tab
Prefix URL with
tab::
[External link](tab:https://example.com)
Heading Anchors
Headings automatically get slugified IDs:
## My Section Title
Links to:
#my-section-title
Typography
Automatic replacements:
→ ©(c)
→ ©(C)
→ ®(r)
→ ®(R)
→ ™(tm)
→ ™(TM)
→ ℗(p)
→ ℗(P)
→ ±+-
Raw HTML
HTML is supported directly in Markdown:
<div class="custom-class" style="text-align: center;"> <p>Centered content with custom styling</p> </div>
Note:
<script>, <object>, <embed>, <form> are stripped for free accounts. Iframes are whitelisted (YouTube, Vimeo, Spotify, etc.).
Whitelisted Iframe Sources
- youtube.com, youtube-nocookie.com
- vimeo.com
- soundcloud.com
- spotify.com
- codepen.io
- google.com (docs, drive, maps)
- bandcamp.com
- apple.com (music embeds)
- archive.org
- And more...
Dashboard URLs
Replace
<subdomain> with your blog subdomain:
- Blog list:
https://bearblog.dev/dashboard/ - Dashboard:
https://bearblog.dev/<subdomain>/dashboard/ - Posts list:
https://bearblog.dev/<subdomain>/dashboard/posts/ - New post:
https://bearblog.dev/<subdomain>/dashboard/posts/new/ - Edit post:
https://bearblog.dev/<subdomain>/dashboard/posts/<uid>/ - Styles:
https://bearblog.dev/<subdomain>/dashboard/styles/ - Navigation:
https://bearblog.dev/<subdomain>/dashboard/nav/ - Analytics:
https://bearblog.dev/<subdomain>/dashboard/analytics/ - Settings:
https://bearblog.dev/<subdomain>/dashboard/settings/
Example: Complete Post
Header content:
title: Getting Started with AI Assistants link: ai-assistants-intro published_date: 2026-01-05 15:00 meta_description: A beginner's guide to working with AI assistants tags: ai, tutorial, tech is_page: false lang: en
Body content:
AI assistants are changing how we work. Here's what you need to know. ## Why AI Assistants? They help with: - [x] Writing and editing - [x] Research and analysis - [ ] Making coffee (not yet!) > "The best tool is the one you actually use." — Someone wise ## Getting Started Check out [OpenAI](tab:https://openai.com) or [Anthropic](tab:https://anthropic.com) for popular options. --- *What's your experience with AI? Let me know!* {{ previous_post }} {{ next_post }}
Tips
- Preview before publishing — Use the preview button to check formatting
- Use templates — Set up a post template in dashboard settings for consistent headers
- Schedule posts — Set
in the futurepublished_date - Draft mode — Don't click publish to keep as draft
- Custom CSS — Add
and style in your blog's CSSclass_name - SEO — Always set
andmeta_descriptionmeta_image
Troubleshooting
- Post not showing? Check
status andpublishpublished_date - Tags not working? Use comma separation, no quotes
- Styling issues? Check
is slugified (lowercase, hyphens)class_name - Date format error? Use
YYYY-MM-DD HH:MM