Przejdź do treści
Biblioteka skilli
Marketing i treści · Integracja z narzędziem

hashnode

/hashnode

Publikuje, zapisuje jako szkice i czyta wpisy na blogu Hashnode użytkownika przez jego własne ciasteczka logowania, bez planu Hashnode Pro.

Repozytorium
Skills ↗
Licencja
Apache-2.0
Ostatnia zmiana repozytorium
25.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
2
Skrypty
1
Komentarze HTML
0
Adresy URL w SKILL.md
5
Przestarzałość

Brak sygnałów. Repozytorium zmienione 25.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.

Co sprawdzić przed instalacją
  • 1 skrypt w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: scripts/hashnode.py

Co robi i kiedy

Publikuje, zapisuje jako szkice i czyta wpisy na blogu Hashnode użytkownika przez jego własne ciasteczka logowania, bez planu Hashnode Pro.

Oryginalny opis (EN)

Publish, draft and read blog posts on the user's Hashnode blog using their own login cookies (BYOC) — no Hashnode Pro plan required. Use when the user mentions Hashnode, publishing/cross-posting an article to their Hashnode blog, saving a Hashnode draft, or listing their Hashnode publications.

Jak działa

  1. Setup — anchor on our own script
  2. ⚠️ Non-Pro blogs are automoderated — write EDITORIAL, not ads
  3. Read
  4. Save a private draft (safe, non-public)
  5. Publish — GATED (dry-run unless trailing --confirm)
  6. Delete a draft or post — GATED
  7. Gotchas
  8. Record the output
Sekcje z nagłówków SKILL.md, w oryginale · 115 linii, 728 słów
Podgląd SKILL.md
---
name: hashnode
description: Publish, draft and read blog posts on the user's Hashnode blog using their own login cookies (BYOC) — no Hashnode Pro plan required. Use when the user mentions Hashnode, publishing/cross-posting an article to their Hashnode blog, saving a Hashnode draft, or listing their Hashnode publications.
when_to_use: |
  Trigger when the user wants to publish a Markdown article to their Hashnode
  blog, save it as a private draft, or list their Hashnode publications. This
  drives the user's REAL blog, so publishing is gated behind an explicit
  confirmation (save a draft first if unsure).
connections: [hashnode]
allowed_tools: [Bash, publish_artifact]
license: Apache-2.0
metadata:
  author: acedatacloud
  version: "2.0"
---

# hashnode — publish to your Hashnode blog via your own cookies (no Pro)

Hashnode moved its **public GraphQL API behind a paid Pro plan** (2026-05-13), so
a Personal Access Token can no longer publish for free. This skill instead drives
the **same first-party REST API the Hashnode web editor uses**
(`https://hashnode.com/api/...`), authenticated by the user's login **session
cookie** — which is free and needs no Pro plan.

The connector injects the cookie jar as `HASHNODE_COOKIES` (a JSON array; the
session cookie is `hashnode-session`). **Secret — full account access. Never echo
or print it.**

> E2E-verified 2026-07-12 on a real connected blog: list publications, create +
> save draft (title / subtitle / cover / tags / Markdown), publish, and delete —
> all via cookie auth, no Pro.

## Setup — anchor on our own script

```sh
# $SKILL_DIR can point at another skill loaded this turn — anchor on our script.
H="$SKILL_DIR/scripts/hashnode.py"; [ -f "$H" ] || H=$(find /tmp -maxdepth 8 -path '*/skills/*/hashnode/scripts/hashnode.py' 2>/dev/null | head -1)
[ -f "$H" ] || { echo "hashnode script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 "$H" publications          # list the user's blogs (verifies the cookie)
```

On an auth error the cookie is expired — have the user reconnect at
<https://studio.acedata.cloud/console/connectors>. Do **not** loop-retry.

## ⚠️ Non-Pro blogs are automoderated — write EDITORIAL, not ads

This is the single most important rule. A **non-Pro** publication is subject to
Hashnode **automoderation**: an overtly promotional post (hypey language,
"free credits!!", the *same* CTA link repeated 3–4 times) is **auto-removed
within seconds** — the publish call still returns success, but the live URL then
404s. (Pro's one benefit here is "protection from automoderation removal".)

To stay live, write a genuinely useful **how-to / guide** that happens to feature
the product:

- Educational framing and a concrete title (e.g. *"… (Beginner's Guide)"*).
- At most a couple of **tasteful** links, not the same CTA repeated.
- No "limited-time!! grab now!!" marketing voice.

`publish` re-fetches the live URL after publishing and returns a `warning` if the
post was moderated away — if you see that, rewrite it editorially and republish.

## Read

```sh
python3 "$H" publications        # {publications:[{id,title,url}]}
```

## Save a private draft (safe, non-public)

```sh
python3 "$H" draft \
  --title "My Title" \
  --subtitle "Optional subtitle" \
  --content-file article.md \
  --cover "https://cdn.example.com/cover.jpg" \
  --tags ai,apis
# → {draft_id, editor_url}. Nothing is public yet.
```

- `--content-file` is the Markdown body (use a file for long posts; `--content`
  for a short inline string). Inline **images** and **links** are just Markdown.
- `--cover` sets the header/cover image (also used as the OG image).
- `--tags` are comma-separated slugs (`ai,apis,web-development`); they're resolved
  to real Hashnode tag ids automatically (up to 5).
- `--publication <id>` is only needed if the account has more than one blog.

## Publish — GATED (dry-run unless trailing `--confirm`)

```sh
python3 "$H" publish --title "My Title" --content-file article.md --cover "https://…" --tags ai,apis          # dry-run
python3 "$H" publish --title "My Title" --content-file article.md --cover "https://…" --tags ai,apis --confirm # LIVE
# → {ok, url}  (or {ok:false, warning:"…automoderation removed…"} — rewrite editorially)
```

A confirmed `publish` is **immediately public** on the user's real blog. Always
show the final title + body, get an explicit "yes", then run with `--confirm` as
the **last** argument.

## Delete a draft or post — GATED

```sh
python3 "$H" delete --id <draftOrPostId>            # dry-run
python3 "$H" delete --id <draftOrPostId> --confirm  # delete
```

## Gotchas

- **No Pro, no PAT.** This uses the cookie-authed `hashnode.com/api/*` editor API,
  not `gql-beta.hashnode.com` (which requires a paid Pro plan).
- **Automoderation** (above) is the main failure mode on free blogs — keep it
  editorial.
- **This is the user's real blog.** Confirm before any publish/delete.
- **Never print `HASHNODE_COOKIES`** — it is full account access.
- **First-party internal API** — it can change when Hashnode updates the editor;
  if a call starts returning HTML/404 unexpectedly, report it as upstream drift.

## Record the output

After you successfully publish and obtain the live result URL, call the built-in
`publish_artifact` tool ONCE so the user can track this deliverable in **My Outputs**:

```
publish_artifact(kind="article", channel="hashnode", title="<title>", url="<the REAL returned URL>", status="delivered")
```

Use the real returned URL — never fabricate one. Call it once per published item,
only after delivery is confirmed; skip it (or use `status="failed"`) if publishing failed.
See `_shared/artifacts.md`.
Pliki w paczce (2)
  • SKILL.md 6 KB
  • scripts/hashnode.py 14 KB

Wersje

W bazie nie ma innych skilli o nazwie hashnode.

Migawka bazy z 28.10.2026 · wersja paczki 469baedf9442 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100dev-to-hashnode
    Wspiera publikowanie na Dev.to, Hashnode i innych platformach blogowych dla programistów: cross-posting, adres kanoniczny i blogowanie techniczne.
  • 100dev-to-hashnode
    Wspiera publikowanie na Dev.to, Hashnode i innych platformach blogowych dla programistów: cross-posting, adres kanoniczny i blogowanie techniczne.
  • 100blog-post-writer
    Pisze techniczne wpisy blogowe z mocnym otwarciem, jasną strukturą, konkretnymi przykładami i zapadającym w pamięć wnioskiem, od pomysłu i konspektu po artykuły na dev.to, Medium i Hashnode.
  • 95content-distribution
    Publikuje jeden tekst jednocześnie na wielu platformach: DEV.to, Hashnode, Reddit, Bluesky, LinkedIn, Medium i X, dopasowując format.
  • 100cto51
    Odczytuje połączone konto 51CTO (blog.51cto.com) i tworzy szkice artykułów w Markdown z użyciem własnych ciasteczek logowania użytkownika.
  • 100substack
    Czyta i publikuje na Substack przez własne ciasteczka logowania: pokazuje profil i główną publikację, listuje wpisy ze statystykami i publikuje nowy post lub newsletter.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.