fix(hands): resolve merge conflict markers left by PR #12
Remove git conflict markers from linkedin, reddit, and twitter HAND.toml and SKILL.md files. Keep the more complete version (with new settings i18n translations) and fix French/Spanish accent issues (dépasser, entraîner, média, réponse, conexión, imágenes, Mode de croissance).
This commit is contained in:
1 parent
3e57ce4743
commit
6cb1d904bf
6 files changed
+7
-2368
No files matched your search
+6
-238
@@ -547,237 +547,6 @@ default_active = false
|
||||
[i18n.zh]
|
||||
name = "LinkedIn Hand"
|
||||
description = "自主 LinkedIn 管理——个人资料优化、内容创作、人脉拓展和职业互动"
|
||||
<<<<<<< HEAD
|
||||
category = "通信"
|
||||
|
||||
[i18n.zh.settings.content_style]
|
||||
label = "内容风格"
|
||||
description = "LinkedIn 帖子的语气和风格"
|
||||
|
||||
[i18n.zh.settings.post_frequency]
|
||||
label = "发布频率"
|
||||
description = "创建和发布内容的频率"
|
||||
|
||||
[i18n.zh.settings.content_topics]
|
||||
label = "内容主题"
|
||||
description = "要创作内容的主题(逗号分隔,例如 AI、领导力、创业)"
|
||||
|
||||
[i18n.zh.settings.auto_engage]
|
||||
label = "自动互动"
|
||||
description = "自动对人脉网络中的相关帖子点赞和评论"
|
||||
|
||||
[i18n.zh.settings.approval_mode]
|
||||
label = "审批模式"
|
||||
description = "将帖子加入队列等待审核,而非直接发布"
|
||||
|
||||
[i18n.zh.settings.hashtag_count]
|
||||
label = "话题标签数量"
|
||||
description = "每篇帖子包含的话题标签数量"
|
||||
|
||||
[i18n.zh.settings.target_audience]
|
||||
label = "目标受众"
|
||||
description = "内容的主要目标受众"
|
||||
|
||||
[i18n.zh.settings.language]
|
||||
label = "语言"
|
||||
description = "帖子和互动使用的语言"
|
||||
|
||||
# ─── Japanese (日本語) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.ja]
|
||||
name = "LinkedIn Hand"
|
||||
description = "自律型LinkedInマネージャー——プロフィール最適化、コンテンツ作成、ネットワーキング、プロフェッショナルエンゲージメント"
|
||||
category = "コミュニケーション"
|
||||
|
||||
[i18n.ja.settings.content_style]
|
||||
label = "コンテンツスタイル"
|
||||
description = "LinkedIn投稿の語調とスタイル"
|
||||
|
||||
[i18n.ja.settings.post_frequency]
|
||||
label = "投稿頻度"
|
||||
description = "コンテンツの作成・投稿の頻度"
|
||||
|
||||
[i18n.ja.settings.content_topics]
|
||||
label = "コンテンツトピック"
|
||||
description = "作成するコンテンツのトピック(カンマ区切り、例: AI、リーダーシップ、スタートアップ)"
|
||||
|
||||
[i18n.ja.settings.auto_engage]
|
||||
label = "自動エンゲージメント"
|
||||
description = "ネットワーク内の関連投稿に自動でいいねやコメントをする"
|
||||
|
||||
[i18n.ja.settings.approval_mode]
|
||||
label = "承認モード"
|
||||
description = "投稿を直接公開せず、レビュー用キューに追加する"
|
||||
|
||||
[i18n.ja.settings.hashtag_count]
|
||||
label = "ハッシュタグ数"
|
||||
description = "各投稿に含めるハッシュタグの数"
|
||||
|
||||
[i18n.ja.settings.target_audience]
|
||||
label = "ターゲットオーディエンス"
|
||||
description = "コンテンツの主なターゲット層"
|
||||
|
||||
[i18n.ja.settings.language]
|
||||
label = "言語"
|
||||
description = "投稿とエンゲージメントに使用する言語"
|
||||
|
||||
# ─── Spanish (Español) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.es]
|
||||
name = "Hand de LinkedIn"
|
||||
description = "Gestor autónomo de LinkedIn — optimización de perfil, creación de contenido, networking y engagement profesional"
|
||||
category = "Comunicación"
|
||||
|
||||
[i18n.es.settings.content_style]
|
||||
label = "Estilo de contenido"
|
||||
description = "Voz y tono para las publicaciones de LinkedIn"
|
||||
|
||||
[i18n.es.settings.post_frequency]
|
||||
label = "Frecuencia de publicación"
|
||||
description = "Con qué frecuencia crear y publicar contenido"
|
||||
|
||||
[i18n.es.settings.content_topics]
|
||||
label = "Temas de contenido"
|
||||
description = "Temas sobre los que crear contenido (separados por comas, ej. IA, liderazgo, startups)"
|
||||
|
||||
[i18n.es.settings.auto_engage]
|
||||
label = "Engagement automático"
|
||||
description = "Dar like y comentar automáticamente en publicaciones relevantes de tu red"
|
||||
|
||||
[i18n.es.settings.approval_mode]
|
||||
label = "Modo de aprobación"
|
||||
description = "Poner publicaciones en cola para revisión en lugar de publicarlas directamente"
|
||||
|
||||
[i18n.es.settings.hashtag_count]
|
||||
label = "Cantidad de hashtags"
|
||||
description = "Número de hashtags a incluir por publicación"
|
||||
|
||||
[i18n.es.settings.target_audience]
|
||||
label = "Audiencia objetivo"
|
||||
description = "Audiencia principal para tu contenido"
|
||||
|
||||
[i18n.es.settings.language]
|
||||
label = "Idioma"
|
||||
description = "Idioma para publicaciones e interacciones"
|
||||
|
||||
# ─── French (Français) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.fr]
|
||||
name = "Hand LinkedIn"
|
||||
description = "Gestionnaire LinkedIn autonome — optimisation de profil, création de contenu, réseautage et engagement professionnel"
|
||||
category = "Communication"
|
||||
|
||||
[i18n.fr.settings.content_style]
|
||||
label = "Style de contenu"
|
||||
description = "Ton et style pour les publications LinkedIn"
|
||||
|
||||
[i18n.fr.settings.post_frequency]
|
||||
label = "Fréquence de publication"
|
||||
description = "Fréquence de création et de publication de contenu"
|
||||
|
||||
[i18n.fr.settings.content_topics]
|
||||
label = "Sujets de contenu"
|
||||
description = "Sujets sur lesquels créer du contenu (séparés par des virgules, ex. IA, leadership, startups)"
|
||||
|
||||
[i18n.fr.settings.auto_engage]
|
||||
label = "Engagement automatique"
|
||||
description = "Aimer et commenter automatiquement les publications pertinentes de votre réseau"
|
||||
|
||||
[i18n.fr.settings.approval_mode]
|
||||
label = "Mode d'approbation"
|
||||
description = "Mettre les publications en file d'attente pour révision au lieu de les publier directement"
|
||||
|
||||
[i18n.fr.settings.hashtag_count]
|
||||
label = "Nombre de hashtags"
|
||||
description = "Nombre de hashtags à inclure par publication"
|
||||
|
||||
[i18n.fr.settings.target_audience]
|
||||
label = "Public cible"
|
||||
description = "Public principal pour votre contenu"
|
||||
|
||||
[i18n.fr.settings.language]
|
||||
label = "Langue"
|
||||
description = "Langue pour les publications et les interactions"
|
||||
|
||||
# ─── German (Deutsch) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.de]
|
||||
name = "LinkedIn-Hand"
|
||||
description = "Autonomer LinkedIn-Manager — Profiloptimierung, Content-Erstellung, Networking und professionelles Engagement"
|
||||
category = "Kommunikation"
|
||||
|
||||
[i18n.de.settings.content_style]
|
||||
label = "Inhaltsstil"
|
||||
description = "Ton und Stil für LinkedIn-Beiträge"
|
||||
|
||||
[i18n.de.settings.post_frequency]
|
||||
label = "Veröffentlichungshäufigkeit"
|
||||
description = "Wie oft Inhalte erstellt und veröffentlicht werden"
|
||||
|
||||
[i18n.de.settings.content_topics]
|
||||
label = "Inhaltsthemen"
|
||||
description = "Themen für die Content-Erstellung (kommagetrennt, z.B. KI, Führung, Startups)"
|
||||
|
||||
[i18n.de.settings.auto_engage]
|
||||
label = "Automatisches Engagement"
|
||||
description = "Relevante Beiträge im Netzwerk automatisch liken und kommentieren"
|
||||
|
||||
[i18n.de.settings.approval_mode]
|
||||
label = "Genehmigungsmodus"
|
||||
description = "Beiträge zur Überprüfung in die Warteschlange stellen, anstatt sie direkt zu veröffentlichen"
|
||||
|
||||
[i18n.de.settings.hashtag_count]
|
||||
label = "Anzahl Hashtags"
|
||||
description = "Anzahl der Hashtags pro Beitrag"
|
||||
|
||||
[i18n.de.settings.target_audience]
|
||||
label = "Zielgruppe"
|
||||
description = "Primäre Zielgruppe für Ihre Inhalte"
|
||||
|
||||
[i18n.de.settings.language]
|
||||
label = "Sprache"
|
||||
description = "Sprache für Beiträge und Interaktionen"
|
||||
|
||||
# ─── Korean (한국어) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.ko]
|
||||
name = "LinkedIn Hand"
|
||||
description = "자율 LinkedIn 관리 — 프로필 최적화, 콘텐츠 제작, 네트워킹 및 전문적 소통"
|
||||
category = "커뮤니케이션"
|
||||
|
||||
[i18n.ko.settings.content_style]
|
||||
label = "콘텐츠 스타일"
|
||||
description = "LinkedIn 게시물의 어조와 스타일"
|
||||
|
||||
[i18n.ko.settings.post_frequency]
|
||||
label = "게시 빈도"
|
||||
description = "콘텐츠를 작성하고 게시하는 주기"
|
||||
|
||||
[i18n.ko.settings.content_topics]
|
||||
label = "콘텐츠 주제"
|
||||
description = "콘텐츠를 작성할 주제 (쉼표로 구분, 예: AI, 리더십, 스타트업)"
|
||||
|
||||
[i18n.ko.settings.auto_engage]
|
||||
label = "자동 소통"
|
||||
description = "네트워크 내 관련 게시물에 자동으로 좋아요 및 댓글"
|
||||
|
||||
[i18n.ko.settings.approval_mode]
|
||||
label = "승인 모드"
|
||||
description = "게시물을 직접 게시하지 않고 대기열에 추가하여 검토"
|
||||
|
||||
[i18n.ko.settings.hashtag_count]
|
||||
label = "해시태그 수"
|
||||
description = "게시물당 포함할 해시태그 수"
|
||||
|
||||
[i18n.ko.settings.target_audience]
|
||||
label = "대상 독자"
|
||||
description = "콘텐츠의 주요 대상 독자"
|
||||
|
||||
[i18n.ko.settings.language]
|
||||
label = "언어"
|
||||
description = "게시물 및 소통에 사용하는 언어"
|
||||
||||||| parent of e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
=======
|
||||
category = "通信"
|
||||
|
||||
[i18n.zh.settings.content_style]
|
||||
@@ -915,12 +684,12 @@ label = "Idioma"
|
||||
description = "Idioma para publicaciones e interacciones"
|
||||
|
||||
[i18n.es.settings.connection_request_limit]
|
||||
label = "Limite de solicitudes de conexion"
|
||||
description = "Numero maximo de solicitudes de conexion por semana (superar 100/semana puede restringir la cuenta)"
|
||||
label = "Límite de solicitudes de conexión"
|
||||
description = "Número máximo de solicitudes de conexión por semana (superar 100/semana puede restringir la cuenta)"
|
||||
|
||||
[i18n.es.settings.content_media_mode]
|
||||
label = "Modo de contenido multimedia"
|
||||
description = "Si las publicaciones incluyen imagenes o carruseles de documentos, o solo texto"
|
||||
description = "Si las publicaciones incluyen imágenes o carruseles de documentos, o solo texto"
|
||||
|
||||
[i18n.es.settings.engagement_reply_depth]
|
||||
label = "Profundidad de respuesta"
|
||||
@@ -967,14 +736,14 @@ description = "Langue pour les publications et les interactions"
|
||||
|
||||
[i18n.fr.settings.connection_request_limit]
|
||||
label = "Limite de demandes de connexion"
|
||||
description = "Nombre maximum de demandes de connexion par semaine (depasser 100/semaine peut entrainer des restrictions)"
|
||||
description = "Nombre maximum de demandes de connexion par semaine (dépasser 100/semaine peut entraîner des restrictions)"
|
||||
|
||||
[i18n.fr.settings.content_media_mode]
|
||||
label = "Mode media du contenu"
|
||||
label = "Mode média du contenu"
|
||||
description = "Inclure des images ou carrousels dans les publications, ou rester en texte uniquement"
|
||||
|
||||
[i18n.fr.settings.engagement_reply_depth]
|
||||
label = "Profondeur de reponse"
|
||||
label = "Profondeur de réponse"
|
||||
description = "Niveau d'implication dans les fils de commentaires de vos publications"
|
||||
|
||||
# ─── German (Deutsch) ────────────────────────────────────────────────────
|
||||
@@ -1078,4 +847,3 @@ description = "게시물에 이미지나 문서 캐러셀을 포함할지, 텍
|
||||
[i18n.ko.settings.engagement_reply_depth]
|
||||
label = "소통 답글 깊이"
|
||||
description = "자신의 게시물 댓글 스레드에 얼마나 깊이 참여할지 설정"
|
||||
>>>>>>> e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
@@ -236,759 +236,6 @@ Before posting any content, classify it:
|
||||
- Credit sources and tag collaborators
|
||||
- Disclose affiliations when discussing products or services
|
||||
- Respect intellectual property and copyright
|
||||
<<<<<<< HEAD
|
||||
|
||||
---
|
||||
|
||||
## Advanced API Patterns
|
||||
|
||||
### Image Post Creation (Media Upload Flow)
|
||||
|
||||
Posting an image requires a 3-step flow: register upload, upload binary, then create post.
|
||||
|
||||
**Step 1 -- Register the upload**:
|
||||
```bash
|
||||
curl -s -X POST "https://api.linkedin.com/rest/images?action=initializeUpload" \
|
||||
-H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "LinkedIn-Version: 202405" \
|
||||
-d '{
|
||||
"initializeUploadRequest": {
|
||||
"owner": "urn:li:person:MEMBER_ID"
|
||||
}
|
||||
}'
|
||||
```
|
||||
Response contains `uploadUrl` and `image` URN (e.g., `urn:li:image:C4E...`).
|
||||
|
||||
**Step 2 -- Upload the binary**:
|
||||
```bash
|
||||
curl -s -X PUT "$UPLOAD_URL" \
|
||||
-H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
|
||||
-H "Content-Type: image/png" \
|
||||
--data-binary "@/path/to/image.png"
|
||||
```
|
||||
|
||||
**Step 3 -- Create post with image**:
|
||||
```bash
|
||||
curl -s -X POST "https://api.linkedin.com/rest/posts" \
|
||||
-H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "LinkedIn-Version: 202405" \
|
||||
-d '{
|
||||
"author": "urn:li:person:MEMBER_ID",
|
||||
"lifecycleState": "PUBLISHED",
|
||||
"commentary": "Check out our Q3 results!",
|
||||
"visibility": "PUBLIC",
|
||||
"distribution": {"feedDistribution": "MAIN_FEED"},
|
||||
"content": {
|
||||
"media": {
|
||||
"id": "urn:li:image:IMAGE_URN",
|
||||
"title": "Q3 Performance Summary"
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
### Document Post Creation (PDF/Carousel)
|
||||
|
||||
LinkedIn "document posts" (carousels) follow the same register-upload-post pattern but use the documents API.
|
||||
|
||||
**Register document upload**:
|
||||
```bash
|
||||
curl -s -X POST "https://api.linkedin.com/rest/documents?action=initializeUpload" \
|
||||
-H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "LinkedIn-Version: 202405" \
|
||||
-d '{
|
||||
"initializeUploadRequest": {
|
||||
"owner": "urn:li:person:MEMBER_ID"
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
**Upload the PDF and create post** (same pattern as image -- PUT binary, then POST with `content.media.id` set to the document URN).
|
||||
|
||||
### Article Publishing via API
|
||||
|
||||
**Create an article post** (link article hosted externally):
|
||||
```bash
|
||||
curl -s -X POST "https://api.linkedin.com/rest/posts" \
|
||||
-H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "LinkedIn-Version: 202405" \
|
||||
-d '{
|
||||
"author": "urn:li:person:MEMBER_ID",
|
||||
"lifecycleState": "PUBLISHED",
|
||||
"commentary": "I wrote about why most engineering teams get incident response wrong.\n\nKey insight: the 5-minute rule changes everything.",
|
||||
"visibility": "PUBLIC",
|
||||
"distribution": {"feedDistribution": "MAIN_FEED"},
|
||||
"content": {
|
||||
"article": {
|
||||
"source": "https://yourblog.com/incident-response",
|
||||
"title": "The 5-Minute Rule for Incident Response",
|
||||
"description": "A practical framework for engineering teams"
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
> **Note**: Article-link posts get reduced reach vs native text posts. Prefer putting links in the first comment.
|
||||
|
||||
### Analytics Endpoints
|
||||
|
||||
**Get post statistics (organic)**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
|
||||
-H "LinkedIn-Version: 202405" \
|
||||
"https://api.linkedin.com/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn:li:organization:ORG_ID&timeIntervals.timeGranularityType=DAY&timeIntervals.timeRange.start=1704067200000&timeIntervals.timeRange.end=1706745600000"
|
||||
```
|
||||
|
||||
**Get share statistics for a specific post**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
|
||||
-H "LinkedIn-Version: 202405" \
|
||||
"https://api.linkedin.com/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn:li:organization:ORG_ID&shares=urn:li:share:SHARE_ID"
|
||||
```
|
||||
|
||||
Response fields:
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| `totalShareStatistics.impressionCount` | Total times the post appeared in feeds |
|
||||
| `totalShareStatistics.uniqueImpressionsCount` | Unique viewers |
|
||||
| `totalShareStatistics.clickCount` | Total clicks (content + read more) |
|
||||
| `totalShareStatistics.likeCount` | Total likes/reactions |
|
||||
| `totalShareStatistics.commentCount` | Total comments |
|
||||
| `totalShareStatistics.shareCount` | Total reposts |
|
||||
| `totalShareStatistics.engagement` | Engagement rate (decimal) |
|
||||
|
||||
**Get follower statistics** (organization pages):
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
|
||||
-H "LinkedIn-Version: 202405" \
|
||||
"https://api.linkedin.com/rest/organizationalEntityFollowerStatistics?q=organizationalEntity&organizationalEntity=urn:li:organization:ORG_ID"
|
||||
```
|
||||
|
||||
### Webhook / Notification Patterns
|
||||
|
||||
LinkedIn does not offer real-time webhooks for most events. Use polling instead:
|
||||
|
||||
```
|
||||
Polling strategy:
|
||||
- Post engagement: Poll every 15 minutes for first 4 hours after posting
|
||||
- Mentions/comments: Poll every 5 minutes during engagement_hours
|
||||
- Follower counts: Poll once per day
|
||||
- Analytics: Poll once per day (data lags 24-48 hours)
|
||||
```
|
||||
|
||||
### Error Handling and Rate Limit Retry
|
||||
|
||||
```
|
||||
Rate limit response headers:
|
||||
X-RateLimit-Limit: 100
|
||||
X-RateLimit-Remaining: 0
|
||||
X-RateLimit-Reset: 1706745600
|
||||
|
||||
HTTP 429 response:
|
||||
{"status": 429, "message": "Resource level throttle limit..."}
|
||||
```
|
||||
|
||||
**Retry strategy**:
|
||||
```
|
||||
1. On HTTP 429: Read X-RateLimit-Reset header
|
||||
2. Calculate wait_seconds = reset_timestamp - current_timestamp
|
||||
3. Sleep for wait_seconds + 1 (buffer)
|
||||
4. Retry the request (max 3 retries)
|
||||
5. On 3 consecutive 429s: back off for 15 minutes
|
||||
|
||||
On HTTP 5xx (server error):
|
||||
1. Retry with exponential backoff: 1s, 2s, 4s
|
||||
2. Max 3 retries
|
||||
3. Log failure and queue for later retry
|
||||
|
||||
On HTTP 401 (expired token):
|
||||
1. Trigger OAuth 2.0 refresh flow
|
||||
2. Update stored token
|
||||
3. Retry original request once
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Content Calendar Template
|
||||
|
||||
### Monthly Content Planning Framework
|
||||
|
||||
Organize content around weekly themes that rotate through your content pillars.
|
||||
|
||||
```
|
||||
MONTH: [Month Year]
|
||||
THEME ROTATION:
|
||||
Week 1: [Pillar 1 -- e.g., Engineering Leadership]
|
||||
Week 2: [Pillar 2 -- e.g., Industry Trends]
|
||||
Week 3: [Pillar 3 -- e.g., Career Growth]
|
||||
Week 4: [Pillar 1 deep dive OR seasonal/timely topic]
|
||||
```
|
||||
|
||||
### Weekly Content Schedule
|
||||
|
||||
```
|
||||
WEEK OF [DATE] — Theme: [Weekly Theme]
|
||||
|
||||
Monday:
|
||||
- 8:30 AM: [Personal story] tied to weekly theme
|
||||
Format: Hook + narrative + lesson + question
|
||||
Goal: High engagement to start the week
|
||||
|
||||
Tuesday:
|
||||
- 9:00 AM: [Step-by-step guide] or [How-to]
|
||||
Format: Numbered list with tactical advice
|
||||
Goal: Saves and shares (authority building)
|
||||
|
||||
Wednesday:
|
||||
- 8:30 AM: [Data/insight post] with original analysis
|
||||
Format: Stat + context + your take + question
|
||||
Goal: Credibility and thought leadership
|
||||
|
||||
Thursday:
|
||||
- 9:00 AM: [Contrarian take] or [Industry opinion]
|
||||
Format: Bold statement + reasoning + invitation to debate
|
||||
Goal: Comments and discussion (algorithm boost)
|
||||
|
||||
Friday:
|
||||
- 8:00 AM: [Engagement post] — poll, question, or lightweight personal content
|
||||
Format: Short, conversational, easy to respond to
|
||||
Goal: Community building before weekend
|
||||
```
|
||||
|
||||
### Content Mix Ratios
|
||||
|
||||
| Category | % of Posts | Examples |
|
||||
|----------|-----------|----------|
|
||||
| Educational / Value | 40% | How-tos, frameworks, lessons learned |
|
||||
| Personal / Storytelling | 25% | Career stories, failures, reflections |
|
||||
| Engagement / Discussion | 20% | Questions, polls, contrarian takes |
|
||||
| Promotional / Company | 10% | Product launches, hiring, milestones |
|
||||
| Curated / Commentary | 5% | Industry news with your analysis |
|
||||
|
||||
**Rule**: Never let promotional content exceed 15%. LinkedIn penalizes overtly sales-y accounts.
|
||||
|
||||
### Engagement Windows and Response Strategy
|
||||
|
||||
```
|
||||
Post published at 8:30 AM:
|
||||
Minutes 0-15: Reply to EVERY comment immediately (signals activity to algorithm)
|
||||
Minutes 15-60: Reply within 5 minutes of each new comment
|
||||
Hours 1-4: Reply within 30 minutes
|
||||
Hours 4-24: Reply within 2 hours (during business hours)
|
||||
Day 2+: Reply within 24 hours
|
||||
|
||||
First-comment strategy:
|
||||
- Post your own comment within 2 minutes of publishing
|
||||
- Use it for: link to resource, additional context, question to spark discussion
|
||||
- This comment acts as engagement seed
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Analytics & Optimization
|
||||
|
||||
### Key Metrics to Track
|
||||
|
||||
| Metric | Formula | Good Benchmark | Great Benchmark |
|
||||
|--------|---------|----------------|-----------------|
|
||||
| Engagement rate | (reactions + comments + reposts) / impressions | > 2% | > 5% |
|
||||
| Comment rate | comments / impressions | > 0.3% | > 1% |
|
||||
| Follower growth rate | net new followers / total followers per week | > 0.5% | > 2% |
|
||||
| Profile views | weekly profile views trend | Consistent growth | 2x after viral post |
|
||||
| SSI (Social Selling Index) | LinkedIn's built-in score (0-100) | > 50 | > 70 |
|
||||
| Content saves | saves / impressions | > 0.5% | > 2% |
|
||||
| Click-through rate | clicks / impressions | > 1% | > 3% |
|
||||
|
||||
### Engagement Rate Calculation
|
||||
|
||||
```
|
||||
engagement_rate = (reactions + comments + reposts) / impressions * 100
|
||||
|
||||
Example:
|
||||
120 reactions + 35 comments + 8 reposts = 163 engagements
|
||||
163 / 5,200 impressions = 3.13% engagement rate
|
||||
|
||||
Per-post tracking:
|
||||
| Post Date | Topic | Format | Impressions | Eng Rate | Comments |
|
||||
|-----------|-------|--------|-------------|----------|----------|
|
||||
| Mon 03/03 | Leadership | Story | 5,200 | 3.13% | 35 |
|
||||
| Tue 03/04 | AI Tools | How-to | 3,800 | 4.21% | 22 |
|
||||
| Wed 03/05 | Hiring | Data | 2,100 | 2.85% | 12 |
|
||||
```
|
||||
|
||||
### A/B Testing Strategies
|
||||
|
||||
Test one variable at a time across pairs of similar posts:
|
||||
|
||||
| Variable | Option A | Option B | Track |
|
||||
|----------|----------|----------|-------|
|
||||
| Hook style | Question hook | Bold statement hook | Click-through rate |
|
||||
| Post length | Short (< 800 chars) | Long (1200+ chars) | Dwell time, engagement |
|
||||
| Posting time | 8:00 AM | 9:30 AM | Impressions after 4 hours |
|
||||
| CTA type | Question CTA | "Agree? Repost" CTA | Comment rate vs repost rate |
|
||||
| Hashtag count | 3 hashtags | 0 hashtags | Reach beyond network |
|
||||
| Format | Plain text | Text + image | Engagement rate |
|
||||
|
||||
**How to run a test**:
|
||||
1. Pick one variable to test (e.g., posting time)
|
||||
2. Keep everything else constant (same pillar, similar format, similar length)
|
||||
3. Run for 2 weeks (minimum 4 posts per variant)
|
||||
4. Compare average metrics -- ignore outliers
|
||||
5. Adopt the winner and move to next variable
|
||||
|
||||
### Identifying Top-Performing Content Patterns
|
||||
|
||||
After 30+ posts, analyze your data to find patterns:
|
||||
|
||||
```
|
||||
Sort all posts by engagement rate (descending):
|
||||
1. Look at your top 5 posts — what do they share?
|
||||
- Same content pillar?
|
||||
- Same format (story, how-to, contrarian)?
|
||||
- Same hook style?
|
||||
- Similar length range?
|
||||
- Same posting day/time?
|
||||
2. Look at your bottom 5 posts — what went wrong?
|
||||
- External links in body?
|
||||
- Promotional tone?
|
||||
- Published on Friday/weekend?
|
||||
- Weak hook?
|
||||
3. Create your "hit formula":
|
||||
Best combo: [Pillar] + [Format] + [Hook style] + [Day/Time]
|
||||
Example: "Engineering Leadership + Personal Story + Confession Hook + Tuesday 8:30 AM"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Audience Growth Strategies
|
||||
|
||||
### Comment-First Strategy
|
||||
|
||||
The fastest way to grow on LinkedIn is strategic commenting on high-visibility posts.
|
||||
|
||||
**How it works**:
|
||||
1. Identify 15-20 active creators in your niche (10K+ followers)
|
||||
2. Turn on notifications for their posts
|
||||
3. Be among the first 5 comments on their new posts
|
||||
4. Write substantive comments (3-5 sentences) that add genuine value
|
||||
|
||||
**Comment templates for growth**:
|
||||
```
|
||||
Adding a data point:
|
||||
"This resonates. At [Company/Role], we saw [specific metric] when we
|
||||
implemented [related approach]. The key difference was [insight].
|
||||
Curious if others have seen similar results?"
|
||||
|
||||
Respectful counterpoint:
|
||||
"Interesting perspective. I'd push back slightly on [point] — in my
|
||||
experience with [context], the opposite was true because [reason].
|
||||
That said, I think [original point] absolutely holds for [use case]."
|
||||
|
||||
Extending the idea:
|
||||
"Building on this — one thing I'd add is [new angle]. I wrote about
|
||||
this recently and the biggest takeaway was [specific insight].
|
||||
[Question that invites further discussion]?"
|
||||
```
|
||||
|
||||
**Target**: 5-10 thoughtful comments per day during peak hours (8-10 AM).
|
||||
|
||||
### Collaborative Content Patterns
|
||||
|
||||
**Tagging strategy**:
|
||||
- Tag 1-3 people who would genuinely find the content relevant
|
||||
- Always explain WHY you're tagging them (not drive-by tags)
|
||||
- Tag people you've already engaged with (they're more likely to respond)
|
||||
|
||||
```
|
||||
Example post with strategic tags:
|
||||
"I've been thinking about how engineering teams handle on-call rotations.
|
||||
|
||||
After talking to 20+ eng managers, here are the 3 models that actually work:
|
||||
|
||||
1. Follow-the-sun (best for distributed teams)
|
||||
2. Volunteer-first rotation (best for small teams)
|
||||
3. Tiered escalation (best for complex systems)
|
||||
|
||||
@Name1 — your team's approach to #2 was eye-opening.
|
||||
@Name2 — curious if your distributed team uses #1 or something else?
|
||||
|
||||
What model does your team use? Reply with your team size."
|
||||
```
|
||||
|
||||
**Co-creation patterns**:
|
||||
- Interview a peer and post key insights (tag them, they reshare)
|
||||
- "X people I learned from this year" posts (mass tagging, high reshare rate)
|
||||
- Collaborative lists: "Drop your best [resource] in the comments, I'll compile and share"
|
||||
|
||||
### LinkedIn Newsletter Strategy
|
||||
|
||||
Newsletters convert profile visitors into subscribers with direct inbox delivery.
|
||||
|
||||
**Newsletter setup checklist**:
|
||||
```
|
||||
1. Name: Clear, specific, benefit-driven
|
||||
Good: "The Engineering Leader's Playbook"
|
||||
Bad: "My Thoughts on Things"
|
||||
|
||||
2. Cadence: Weekly or biweekly (consistency > frequency)
|
||||
|
||||
3. Format:
|
||||
- 800-1500 words (longer than posts, shorter than blog articles)
|
||||
- One core idea per issue
|
||||
- Actionable takeaways or frameworks
|
||||
- End with a question to drive comments
|
||||
|
||||
4. Promotion:
|
||||
- Announce each issue with a teaser post (don't just auto-share)
|
||||
- Reference newsletter content in regular posts
|
||||
- Cross-promote with other newsletter authors
|
||||
```
|
||||
|
||||
**Newsletter content structure**:
|
||||
```
|
||||
Issue #[N]: [Compelling Title]
|
||||
|
||||
[Hook paragraph -- why this matters NOW]
|
||||
|
||||
[Section 1: The Problem / Context]
|
||||
- 2-3 paragraphs with specific examples
|
||||
|
||||
[Section 2: The Framework / Solution]
|
||||
- Numbered steps or clear model
|
||||
- Real-world application examples
|
||||
|
||||
[Section 3: How to Apply This]
|
||||
- Actionable next steps the reader can take today
|
||||
|
||||
[Closing: Question + CTA]
|
||||
"What's your experience with [topic]? Reply in the comments."
|
||||
"If you found this useful, share it with your team."
|
||||
```
|
||||
|
||||
### LinkedIn Live and Events
|
||||
|
||||
**LinkedIn Live** broadcasts get 7x more reactions and 24x more comments than regular video posts.
|
||||
|
||||
**Live session framework**:
|
||||
```
|
||||
Pre-event (1 week before):
|
||||
- Create LinkedIn Event and post announcement
|
||||
- Send invites to relevant connections
|
||||
- Post 2-3 teaser posts building anticipation
|
||||
|
||||
During event:
|
||||
- Start 2 minutes early for tech check
|
||||
- Open with clear agenda (30 seconds)
|
||||
- Acknowledge live commenters by name
|
||||
- Keep sessions 20-40 minutes
|
||||
|
||||
Post-event:
|
||||
- Post key takeaways within 2 hours
|
||||
- Reply to all comments on the event post
|
||||
- Repurpose recording into 3-5 short clips for future posts
|
||||
```
|
||||
|
||||
**Event types that work**:
|
||||
| Type | Duration | Best For | Frequency |
|
||||
|------|----------|----------|-----------|
|
||||
| AMA (Ask Me Anything) | 30 min | Engagement, authority | Monthly |
|
||||
| Industry deep dive | 20 min | Thought leadership | Biweekly |
|
||||
| Interview / fireside chat | 40 min | Network growth | Monthly |
|
||||
| Quick tip / hot take | 10 min | Visibility | Weekly |
|
||||
|
||||
---
|
||||
|
||||
## Worked Examples
|
||||
|
||||
### Example 1: Thought Leadership Campaign
|
||||
|
||||
**Scenario**: VP of Engineering building authority in "engineering culture" niche.
|
||||
|
||||
**Content pillars**:
|
||||
```
|
||||
Pillar 1: Engineering Management (40%)
|
||||
Pillar 2: Scaling Teams (30%)
|
||||
Pillar 3: Career Advice (20%)
|
||||
Pillar 4: Personal Lessons (10%)
|
||||
```
|
||||
|
||||
**Week 1 posting schedule with sample posts**:
|
||||
|
||||
**Monday 8:30 AM -- Personal Story (Pillar 1)**:
|
||||
```
|
||||
I promoted my worst interviewer to Head of Recruiting.
|
||||
|
||||
Sounds crazy. Here's what happened.
|
||||
|
||||
She kept rejecting candidates everyone else loved.
|
||||
Her "pass rate" was 15%. Team average was 60%.
|
||||
|
||||
But after 12 months, something became clear:
|
||||
|
||||
Her hires had:
|
||||
→ 94% retention rate (team avg: 71%)
|
||||
→ 2.3x faster time to first meaningful contribution
|
||||
→ Zero PIPs in their first year
|
||||
|
||||
She wasn't a bad interviewer.
|
||||
She was the only one actually doing it right.
|
||||
|
||||
The lesson?
|
||||
Measure what matters. Pass rates reward speed.
|
||||
Retention rates reward judgment.
|
||||
|
||||
What's one metric your team optimizes for
|
||||
that might be the wrong one?
|
||||
|
||||
#EngineeringLeadership #Hiring #TechManagement
|
||||
```
|
||||
|
||||
**Tuesday 9:00 AM -- How-To Guide (Pillar 2)**:
|
||||
```
|
||||
How to run a team retrospective that people actually enjoy
|
||||
(not the soul-crushing ones everyone dreads):
|
||||
|
||||
Step 1: Kill the "what went well / what didn't" format
|
||||
→ Use "I wish... I wonder... I'm proud of..." instead
|
||||
|
||||
Step 2: Timebox ruthlessly
|
||||
→ 45 minutes max. If it takes longer, your team is too big for one retro.
|
||||
|
||||
Step 3: One action item per person, max
|
||||
→ A retro with 20 action items produces zero change.
|
||||
→ One item per person = accountability.
|
||||
|
||||
Step 4: Start with appreciation
|
||||
→ First 5 minutes: each person thanks someone else on the team.
|
||||
→ This changes the entire energy of the room.
|
||||
|
||||
Step 5: Rotate the facilitator
|
||||
→ The manager should NOT always run retros.
|
||||
→ It changes what people feel safe saying.
|
||||
|
||||
I've used this format with teams of 5 to teams of 50.
|
||||
|
||||
What's your retro format? Drop it below --
|
||||
I'm always looking for new approaches.
|
||||
|
||||
#Agile #EngineeringCulture #TeamManagement
|
||||
```
|
||||
|
||||
**Wednesday 8:30 AM -- Data + Insight (Pillar 2)**:
|
||||
```
|
||||
We tracked every engineering team meeting for 6 months.
|
||||
|
||||
The data was uncomfortable.
|
||||
|
||||
→ Average engineer: 11.2 hours/week in meetings
|
||||
→ Senior engineers: 16.4 hours/week
|
||||
→ Time spent in meetings that could've been async: 62%
|
||||
|
||||
We cut 40% of recurring meetings.
|
||||
|
||||
Result after 3 months:
|
||||
→ Sprint velocity: +23%
|
||||
→ Engineer satisfaction: +31% (internal survey)
|
||||
→ "Deep work" blocks per week: 2.1 → 4.7
|
||||
|
||||
The surprising part?
|
||||
Nobody missed the deleted meetings.
|
||||
Not one person asked to bring them back.
|
||||
|
||||
If you haven't audited your meeting load recently,
|
||||
you're probably burning 30-40% of your team's capacity.
|
||||
|
||||
What % of your meetings could be an async update?
|
||||
|
||||
#Engineering #Productivity #Leadership
|
||||
```
|
||||
|
||||
**Thursday 9:00 AM -- Contrarian Take (Pillar 3)**:
|
||||
```
|
||||
Unpopular opinion: "Culture fit" interviews should be illegal.
|
||||
|
||||
Here's why:
|
||||
|
||||
Culture fit = "do I want to get a beer with this person?"
|
||||
That's not hiring. That's friend-making.
|
||||
|
||||
What actually matters:
|
||||
→ Values alignment (do they care about the same outcomes?)
|
||||
→ Working style compatibility (async vs sync, docs vs meetings)
|
||||
→ Growth trajectory (will they push the team forward?)
|
||||
|
||||
None of those require "fitting in."
|
||||
|
||||
The best hire I ever made was someone who challenged
|
||||
every assumption we had. They didn't "fit" our culture.
|
||||
|
||||
They made it better.
|
||||
|
||||
Replace "culture fit" with "culture add."
|
||||
|
||||
Agree or disagree? I'd love to hear your take.
|
||||
|
||||
#Hiring #Diversity #EngineeringCulture #Leadership
|
||||
```
|
||||
|
||||
**Friday 8:00 AM -- Engagement Post (Pillar 4)**:
|
||||
```
|
||||
Fill in the blank:
|
||||
|
||||
"The best career advice I ever received was ___________."
|
||||
|
||||
I'll go first:
|
||||
|
||||
"Stop optimizing for your next promotion.
|
||||
Start optimizing for your next learning curve."
|
||||
|
||||
Changed how I made every career decision since.
|
||||
|
||||
Your turn.
|
||||
|
||||
#CareerAdvice #ProfessionalGrowth
|
||||
```
|
||||
|
||||
### Example 2: Company Page Management
|
||||
|
||||
**Scenario**: B2B SaaS company (Series B, 80 employees) managing their LinkedIn company page.
|
||||
|
||||
**Posting cadence**:
|
||||
```
|
||||
Company page: 4-5 posts per week
|
||||
Employee advocacy: 2-3 employees reshare/post per week
|
||||
Executive accounts: CEO + CTO post 2-3x/week each
|
||||
```
|
||||
|
||||
**Weekly company page schedule**:
|
||||
```
|
||||
Monday: Industry insight or thought leadership (educational)
|
||||
Tuesday: Product tip or customer use case (value-driven)
|
||||
Wednesday: Team/culture spotlight (employer branding)
|
||||
Thursday: Data or trend analysis (authority)
|
||||
Friday: Milestone, hiring, or community post (engagement)
|
||||
```
|
||||
|
||||
**Sample company page posts**:
|
||||
|
||||
**Tuesday -- Customer Use Case**:
|
||||
```
|
||||
"We used to spend 3 hours every Monday pulling reports manually."
|
||||
|
||||
That's what @CustomerName's ops team told us last quarter.
|
||||
|
||||
After switching to [Product] automated workflows:
|
||||
→ Report generation: 3 hours → 12 minutes
|
||||
→ Data accuracy: 89% → 99.7%
|
||||
→ Team freed up: 12 hours/week for strategic work
|
||||
|
||||
The best part? They set it up in a single afternoon.
|
||||
|
||||
Read the full story: [link in first comment]
|
||||
|
||||
#DataAutomation #Operations #CustomerSuccess
|
||||
```
|
||||
|
||||
**Wednesday -- Team Culture Spotlight**:
|
||||
```
|
||||
This is Sarah. She joined us as intern #3 two years ago.
|
||||
|
||||
Last week she deployed our new ML pipeline to production.
|
||||
By herself. On a Tuesday. No drama.
|
||||
|
||||
What happened in between:
|
||||
→ Mentored by 4 different senior engineers
|
||||
→ Shipped 47 PRs in her first year
|
||||
→ Gave her first conference talk at 23
|
||||
→ Now leads a team of 3
|
||||
|
||||
We don't hire for credentials.
|
||||
We hire for curiosity and grit.
|
||||
|
||||
Sarah had both.
|
||||
|
||||
We're hiring 5 more engineers just like her.
|
||||
Link in the comments.
|
||||
|
||||
#Hiring #Engineering #StartupCulture #WomenInTech
|
||||
```
|
||||
|
||||
**Employee advocacy tracking**:
|
||||
```
|
||||
| Employee | Role | Posts/Week | Avg Reach | Topics |
|
||||
|----------|------|-----------|-----------|--------|
|
||||
| CEO | Executive | 3 | 8,500 | Vision, industry, leadership |
|
||||
| CTO | Executive | 2 | 5,200 | Technical, architecture, hiring |
|
||||
| VP Eng | Leader | 2 | 3,100 | Engineering culture, management |
|
||||
| DevRel | IC | 3 | 4,800 | Tutorials, product, community |
|
||||
```
|
||||
|
||||
**Analytics tracking cadence**:
|
||||
```
|
||||
Daily: Check post-level engagement (reactions, comments, shares)
|
||||
Weekly: Follower growth, top-performing post, engagement rate trend
|
||||
Monthly: Content audit — which pillars/formats performed best
|
||||
Adjust next month's content mix based on data
|
||||
Quarterly: Competitor benchmarking, SSI review, strategy refresh
|
||||
```
|
||||
|
||||
### Example 3: Job Seeker Profile Optimization Campaign
|
||||
|
||||
**Scenario**: Senior developer transitioning to engineering management role.
|
||||
|
||||
**4-week content plan**:
|
||||
```
|
||||
Week 1: Establish expertise
|
||||
- Post about a technical decision you led and its business impact
|
||||
- Share a "lessons from my first year managing" story
|
||||
- Comment on 10 engineering leadership posts
|
||||
|
||||
Week 2: Demonstrate thought leadership
|
||||
- Publish a how-to post: "How I transitioned from IC to manager"
|
||||
- Share data or a framework you've developed
|
||||
- Start engaging with hiring managers' content in target companies
|
||||
|
||||
Week 3: Build social proof
|
||||
- Post about a mentoring success story (tag the mentee with permission)
|
||||
- Share a "things I wish I knew" post targeting new managers
|
||||
- Request 3-5 recommendations from colleagues and reports
|
||||
|
||||
Week 4: Signal availability
|
||||
- Post about what you're looking for (without desperation)
|
||||
- Engage heavily in target company employees' content
|
||||
- Send personalized connection requests to hiring managers
|
||||
```
|
||||
|
||||
**Sample "open to opportunities" post**:
|
||||
```
|
||||
After 8 years of writing code and 2 years of leading teams,
|
||||
I'm looking for my next engineering management challenge.
|
||||
|
||||
What I bring to the table:
|
||||
→ Scaled a team from 4 to 22 engineers
|
||||
→ Reduced deployment failures by 73% through better process
|
||||
→ Mentored 6 engineers into senior roles
|
||||
→ Built hiring pipelines that maintained 85%+ offer acceptance
|
||||
|
||||
What I'm looking for:
|
||||
→ Series A-C company building something meaningful
|
||||
→ Team of 8-20 engineers who care about craft
|
||||
→ Leadership that values engineering culture, not just velocity
|
||||
|
||||
If your team is growing and you value
|
||||
managers who still understand the code --
|
||||
I'd love to chat.
|
||||
|
||||
DMs are open. Or drop a comment and I'll reach out.
|
||||
|
||||
#OpenToWork #EngineeringManager #Hiring #Leadership
|
||||
```
|
||||
||||||| parent of e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
=======
|
||||
|
||||
### Crisis Management for Negative Engagement
|
||||
|
||||
@@ -1790,4 +1037,3 @@ DMs are open. Or drop a comment and I'll reach out.
|
||||
|
||||
#OpenToWork #EngineeringManager #Hiring #Leadership
|
||||
```
|
||||
>>>>>>> e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
@@ -660,237 +660,6 @@ default_active = false
|
||||
[i18n.zh]
|
||||
name = "Reddit Hand"
|
||||
description = "自主 Reddit 管理——监控子版块、发布内容、回复帖子并追踪 Karma 和互动"
|
||||
<<<<<<< HEAD
|
||||
category = "通信"
|
||||
|
||||
[i18n.zh.settings.subreddits]
|
||||
label = "子版块"
|
||||
description = "要监控的子版块列表(逗号分隔,例如 rust,programming,machinelearning)"
|
||||
|
||||
[i18n.zh.settings.monitor_mode]
|
||||
label = "监控模式"
|
||||
description = "在监控的子版块中追踪哪些内容"
|
||||
|
||||
[i18n.zh.settings.auto_reply]
|
||||
label = "自动回复"
|
||||
description = "自动回复相关的帖子和评论"
|
||||
|
||||
[i18n.zh.settings.post_frequency]
|
||||
label = "发布频率"
|
||||
description = "创建原创帖子的频率"
|
||||
|
||||
[i18n.zh.settings.content_style]
|
||||
label = "内容风格"
|
||||
description = "帖子和回复的语气和风格"
|
||||
|
||||
[i18n.zh.settings.approval_mode]
|
||||
label = "审批模式"
|
||||
description = "将帖子和回复加入队列等待审核,而非直接发布"
|
||||
|
||||
[i18n.zh.settings.min_karma_to_post]
|
||||
label = "最低发帖 Karma"
|
||||
description = "仅在账户拥有至少此数量 Karma 的子版块中发帖"
|
||||
|
||||
[i18n.zh.settings.max_reply_depth]
|
||||
label = "最大回复深度"
|
||||
description = "回复的最大评论嵌套深度(深层嵌套的可见度较低)"
|
||||
|
||||
# ─── Spanish (Español) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.es]
|
||||
name = "Hand de Reddit"
|
||||
description = "Gestor autónomo de Reddit — monitorea subreddits, publica contenido, responde en hilos y rastrea karma e interacciones"
|
||||
category = "Comunicación"
|
||||
|
||||
[i18n.es.settings.subreddits]
|
||||
label = "Subreddits"
|
||||
description = "Lista de subreddits a monitorear separados por comas (ej. rust,programming,machinelearning)"
|
||||
|
||||
[i18n.es.settings.monitor_mode]
|
||||
label = "Modo de monitoreo"
|
||||
description = "Qué rastrear en los subreddits monitoreados"
|
||||
|
||||
[i18n.es.settings.auto_reply]
|
||||
label = "Respuesta automática"
|
||||
description = "Responder automáticamente a publicaciones y comentarios relevantes"
|
||||
|
||||
[i18n.es.settings.post_frequency]
|
||||
label = "Frecuencia de publicación"
|
||||
description = "Con qué frecuencia crear publicaciones originales"
|
||||
|
||||
[i18n.es.settings.content_style]
|
||||
label = "Estilo de contenido"
|
||||
description = "Tono y enfoque para publicaciones y respuestas"
|
||||
|
||||
[i18n.es.settings.approval_mode]
|
||||
label = "Modo de aprobación"
|
||||
description = "Poner publicaciones y respuestas en cola para revisión en lugar de publicarlas directamente"
|
||||
|
||||
[i18n.es.settings.min_karma_to_post]
|
||||
label = "Karma mínimo para publicar"
|
||||
description = "Solo publicar en subreddits donde la cuenta tenga al menos este nivel de karma"
|
||||
|
||||
[i18n.es.settings.max_reply_depth]
|
||||
label = "Profundidad máxima de respuesta"
|
||||
description = "Profundidad máxima del hilo de comentarios para responder (los hilos más profundos tienen menos visibilidad)"
|
||||
|
||||
# ─── Japanese (日本語) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.ja]
|
||||
name = "Reddit Hand"
|
||||
description = "自律型Redditマネージャー——サブレディットの監視、コンテンツ投稿、スレッドへの返信、Karmaとエンゲージメントの追跡"
|
||||
category = "コミュニケーション"
|
||||
|
||||
[i18n.ja.settings.subreddits]
|
||||
label = "サブレディット"
|
||||
description = "監視するサブレディットのリスト(カンマ区切り、例: rust,programming,machinelearning)"
|
||||
|
||||
[i18n.ja.settings.monitor_mode]
|
||||
label = "監視モード"
|
||||
description = "監視対象のサブレディットで追跡する内容"
|
||||
|
||||
[i18n.ja.settings.auto_reply]
|
||||
label = "自動返信"
|
||||
description = "関連する投稿やコメントに自動で返信する"
|
||||
|
||||
[i18n.ja.settings.post_frequency]
|
||||
label = "投稿頻度"
|
||||
description = "オリジナル投稿を作成する頻度"
|
||||
|
||||
[i18n.ja.settings.content_style]
|
||||
label = "コンテンツスタイル"
|
||||
description = "投稿と返信のトーンとアプローチ"
|
||||
|
||||
[i18n.ja.settings.approval_mode]
|
||||
label = "承認モード"
|
||||
description = "投稿や返信を直接公開せず、レビュー用キューに追加する"
|
||||
|
||||
[i18n.ja.settings.min_karma_to_post]
|
||||
label = "投稿に必要な最低Karma"
|
||||
description = "アカウントが最低このKarmaを持つサブレディットでのみ投稿する"
|
||||
|
||||
[i18n.ja.settings.max_reply_depth]
|
||||
label = "最大返信深度"
|
||||
description = "返信するコメントスレッドの最大ネスト深度(深いスレッドほど可視性が低い)"
|
||||
|
||||
# ─── French (Français) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.fr]
|
||||
name = "Hand Reddit"
|
||||
description = "Gestionnaire Reddit autonome — surveille les subreddits, publie du contenu, répond dans les fils et suit le karma et l'engagement"
|
||||
category = "Communication"
|
||||
|
||||
[i18n.fr.settings.subreddits]
|
||||
label = "Subreddits"
|
||||
description = "Liste de subreddits à surveiller séparés par des virgules (ex. rust,programming,machinelearning)"
|
||||
|
||||
[i18n.fr.settings.monitor_mode]
|
||||
label = "Mode de surveillance"
|
||||
description = "Ce qu'il faut suivre dans les subreddits surveillés"
|
||||
|
||||
[i18n.fr.settings.auto_reply]
|
||||
label = "Réponse automatique"
|
||||
description = "Répondre automatiquement aux publications et commentaires pertinents"
|
||||
|
||||
[i18n.fr.settings.post_frequency]
|
||||
label = "Fréquence de publication"
|
||||
description = "Fréquence de création de publications originales"
|
||||
|
||||
[i18n.fr.settings.content_style]
|
||||
label = "Style de contenu"
|
||||
description = "Ton et approche pour les publications et réponses"
|
||||
|
||||
[i18n.fr.settings.approval_mode]
|
||||
label = "Mode d'approbation"
|
||||
description = "Mettre les publications et réponses en file d'attente pour révision au lieu de les publier directement"
|
||||
|
||||
[i18n.fr.settings.min_karma_to_post]
|
||||
label = "Karma minimum pour publier"
|
||||
description = "Ne publier que dans les subreddits où le compte possède au moins ce niveau de karma"
|
||||
|
||||
[i18n.fr.settings.max_reply_depth]
|
||||
label = "Profondeur maximale de réponse"
|
||||
description = "Profondeur maximale d'imbrication des commentaires pour répondre (les fils plus profonds ont moins de visibilité)"
|
||||
|
||||
# ─── German (Deutsch) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.de]
|
||||
name = "Reddit-Hand"
|
||||
description = "Autonomer Reddit-Manager — überwacht Subreddits, postet Inhalte, antwortet in Threads und verfolgt Karma und Engagement"
|
||||
category = "Kommunikation"
|
||||
|
||||
[i18n.de.settings.subreddits]
|
||||
label = "Subreddits"
|
||||
description = "Kommagetrennte Liste der zu überwachenden Subreddits (z.B. rust,programming,machinelearning)"
|
||||
|
||||
[i18n.de.settings.monitor_mode]
|
||||
label = "Überwachungsmodus"
|
||||
description = "Was in den überwachten Subreddits verfolgt werden soll"
|
||||
|
||||
[i18n.de.settings.auto_reply]
|
||||
label = "Automatische Antwort"
|
||||
description = "Automatisch auf relevante Beiträge und Kommentare antworten"
|
||||
|
||||
[i18n.de.settings.post_frequency]
|
||||
label = "Veröffentlichungshäufigkeit"
|
||||
description = "Wie oft originale Beiträge erstellt werden"
|
||||
|
||||
[i18n.de.settings.content_style]
|
||||
label = "Inhaltsstil"
|
||||
description = "Ton und Ansatz für Beiträge und Antworten"
|
||||
|
||||
[i18n.de.settings.approval_mode]
|
||||
label = "Genehmigungsmodus"
|
||||
description = "Beiträge und Antworten zur Überprüfung in die Warteschlange stellen, anstatt sie direkt zu veröffentlichen"
|
||||
|
||||
[i18n.de.settings.min_karma_to_post]
|
||||
label = "Mindest-Karma zum Posten"
|
||||
description = "Nur in Subreddits posten, in denen das Konto mindestens dieses Karma-Level hat"
|
||||
|
||||
[i18n.de.settings.max_reply_depth]
|
||||
label = "Maximale Antworttiefe"
|
||||
description = "Maximale Verschachtelungstiefe für Kommentarantworten (tiefere Threads haben geringere Sichtbarkeit)"
|
||||
|
||||
# ─── Korean (한국어) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.ko]
|
||||
name = "Reddit Hand"
|
||||
description = "자율 Reddit 관리 — 서브레딧 모니터링, 콘텐츠 게시, 스레드 댓글 및 카르마와 참여도 추적"
|
||||
category = "커뮤니케이션"
|
||||
|
||||
[i18n.ko.settings.subreddits]
|
||||
label = "서브레딧"
|
||||
description = "모니터링할 서브레딧 목록 (쉼표로 구분, 예: rust,programming,machinelearning)"
|
||||
|
||||
[i18n.ko.settings.monitor_mode]
|
||||
label = "모니터링 모드"
|
||||
description = "모니터링 대상 서브레딧에서 추적할 콘텐츠"
|
||||
|
||||
[i18n.ko.settings.auto_reply]
|
||||
label = "자동 답글"
|
||||
description = "관련 게시물과 댓글에 자동으로 답글 작성"
|
||||
|
||||
[i18n.ko.settings.post_frequency]
|
||||
label = "게시 빈도"
|
||||
description = "원본 게시물 작성 주기"
|
||||
|
||||
[i18n.ko.settings.content_style]
|
||||
label = "콘텐츠 스타일"
|
||||
description = "게시물과 답글의 어조와 접근 방식"
|
||||
|
||||
[i18n.ko.settings.approval_mode]
|
||||
label = "승인 모드"
|
||||
description = "게시물과 답글을 직접 게시하지 않고 대기열에 추가하여 검토"
|
||||
|
||||
[i18n.ko.settings.min_karma_to_post]
|
||||
label = "최소 게시 카르마"
|
||||
description = "계정이 최소 이만큼의 카르마를 보유한 서브레딧에서만 게시"
|
||||
|
||||
[i18n.ko.settings.max_reply_depth]
|
||||
label = "최대 답글 깊이"
|
||||
description = "답글 작성의 최대 댓글 중첩 깊이 (깊은 중첩일수록 노출도 감소)"
|
||||
||||||| parent of e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
=======
|
||||
category = "通信"
|
||||
|
||||
[i18n.zh.settings.subreddits]
|
||||
@@ -1191,4 +960,3 @@ description = "참여할 주제의 필터 수준 — 엄격 모드는 NSFW, 정
|
||||
[i18n.ko.settings.authenticity_mode]
|
||||
label = "진정성 모드"
|
||||
description = "봇 탐지를 피하기 위한 인간과 유사한 상호작용 패턴 유지 전략"
|
||||
>>>>>>> e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
@@ -315,774 +315,6 @@ Monitor account standing:
|
||||
- Build karma organically through genuine engagement
|
||||
- Avoid posting too frequently (triggers spam filters)
|
||||
- Diversify activity across multiple subreddits
|
||||
<<<<<<< HEAD
|
||||
|
||||
---
|
||||
|
||||
## Worked Examples
|
||||
|
||||
### Example 1: Product Launch on Reddit
|
||||
|
||||
**Scenario**: You are launching a developer CLI tool and want to generate awareness on Reddit.
|
||||
|
||||
**Phase 1 — Subreddit Research (Week 1-2 before launch)**
|
||||
|
||||
Identify target subreddits and evaluate each:
|
||||
```
|
||||
Target subreddits (prioritized):
|
||||
1. r/commandline — 350k members, accepts tool announcements, requires demo/screenshot
|
||||
2. r/programming — 5M members, strict anti-marketing, only accepts substantial technical posts
|
||||
3. r/opensource — 200k members, friendly to launches, requires repo link
|
||||
4. r/devtools — 50k members, niche but highly targeted
|
||||
5. r/sideproject — 100k members, launch-friendly, expects "what I built" framing
|
||||
```
|
||||
|
||||
Fetch subreddit rules programmatically:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/commandline/about/rules"
|
||||
```
|
||||
|
||||
**Phase 2 — Karma Building (Week 1-2 before launch)**
|
||||
|
||||
Before posting about your product, build credibility:
|
||||
```
|
||||
Day 1-3: Answer questions in r/commandline and r/programming (3-5 helpful comments/day)
|
||||
Day 4-7: Share a useful tip or short guide unrelated to your product
|
||||
Day 8-10: Engage in discussions, upvote good content, reply to others' posts
|
||||
Day 11-14: Share a technical deep-dive related to your product's domain (not the product itself)
|
||||
```
|
||||
|
||||
**Phase 3 — Launch Posts (Launch Day)**
|
||||
|
||||
Craft posts per subreddit culture:
|
||||
|
||||
For **r/sideproject** (casual, story-driven):
|
||||
```
|
||||
Title: "I built a CLI tool that does X — here's what I learned"
|
||||
Body:
|
||||
- Paragraph on the problem and motivation
|
||||
- Short demo (gif/video link or code block)
|
||||
- What went wrong during development
|
||||
- Link to repo
|
||||
- "Would love feedback on X"
|
||||
```
|
||||
|
||||
For **r/programming** (technical, anti-fluff):
|
||||
```
|
||||
Title: "X: an open-source CLI for Y written in Rust [with benchmarks]"
|
||||
Body:
|
||||
- Link directly to repo or blog post with technical depth
|
||||
- Performance comparison table
|
||||
- Architecture decisions
|
||||
- NO "please star my repo" language
|
||||
```
|
||||
|
||||
For **r/commandline** (practical, demo-focused):
|
||||
```
|
||||
Title: "X — does Y in Z seconds from your terminal"
|
||||
Body:
|
||||
- Install instructions (one-liner)
|
||||
- Usage example with real output
|
||||
- Screenshot or asciinema link
|
||||
- Comparison to existing tools
|
||||
```
|
||||
|
||||
**Phase 4 — Engagement (Launch Day + 48 hours)**
|
||||
|
||||
Response templates:
|
||||
|
||||
| Comment Type | Response Strategy |
|
||||
|-------------|-------------------|
|
||||
| "How does this compare to Z?" | Honest comparison table, acknowledge Z's strengths |
|
||||
| "Why not just use Z?" | Explain specific use cases where yours differs, no FUD |
|
||||
| "Found a bug" | Thank them, ask for details, open GitHub issue immediately |
|
||||
| "This is spam" | Do NOT argue. Briefly state this is your project and you're here to discuss |
|
||||
| "Great work!" | Thank them, ask what feature they'd want next |
|
||||
| Feature request | Acknowledge, add to roadmap, link to issue tracker |
|
||||
|
||||
**Phase 5 — Follow-Up (Week after launch)**
|
||||
|
||||
- Reply to every comment within 12 hours
|
||||
- Post an update in r/sideproject if you hit a milestone (e.g., "Hit 500 stars, here's what I changed based on Reddit feedback")
|
||||
- Do NOT cross-post the same content -- write fresh posts per subreddit
|
||||
|
||||
---
|
||||
|
||||
### Example 2: Community Monitoring and Sentiment Tracking
|
||||
|
||||
**Scenario**: You manage a brand's Reddit presence and need to track mentions, sentiment, and emerging issues.
|
||||
|
||||
**Step 1 — Set Up Monitoring Queries**
|
||||
|
||||
Search for brand mentions across Reddit:
|
||||
```bash
|
||||
# Search all of Reddit for brand mentions
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/search?q=%22BrandName%22+OR+%22brandname%22&sort=new&limit=25&t=day"
|
||||
```
|
||||
|
||||
Monitor specific subreddits where your audience lives:
|
||||
```bash
|
||||
# Monitor r/technology for relevant topics
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/technology/search?q=BrandName&restrict_sr=on&sort=new&limit=25&t=week"
|
||||
```
|
||||
|
||||
**Step 2 — Sentiment Classification**
|
||||
|
||||
Categorize each mention into:
|
||||
```
|
||||
POSITIVE — Praise, recommendation, success story
|
||||
NEUTRAL — Factual mention, question, comparison
|
||||
NEGATIVE — Complaint, bug report, frustration
|
||||
CRITICAL — Security concern, viral complaint, legal risk
|
||||
```
|
||||
|
||||
Scoring signals from Reddit data:
|
||||
```
|
||||
score > 100 + sentiment=NEGATIVE → High-priority alert (viral complaint)
|
||||
score > 50 + sentiment=POSITIVE → Amplification opportunity
|
||||
num_comments > 20 + any sentiment → Active discussion, monitor closely
|
||||
upvote_ratio < 0.5 → Controversial, may escalate
|
||||
```
|
||||
|
||||
**Step 3 — Alert Thresholds**
|
||||
|
||||
| Condition | Action |
|
||||
|-----------|--------|
|
||||
| CRITICAL mention with score > 10 | Immediate alert to team |
|
||||
| 3+ NEGATIVE mentions in 24 hours | Trend alert, investigate root cause |
|
||||
| NEGATIVE post in subreddit > 500k members | Monitor hourly for 48 hours |
|
||||
| Competitor comparison post trending | Prepare factual response (do NOT post defensively) |
|
||||
|
||||
**Step 4 — Weekly Report Template**
|
||||
|
||||
```
|
||||
## Reddit Weekly Report — [Date Range]
|
||||
|
||||
### Summary
|
||||
- Total mentions: X (up/down Y% from last week)
|
||||
- Sentiment breakdown: X% positive, Y% neutral, Z% negative
|
||||
- Top subreddits: r/sub1 (N mentions), r/sub2 (N mentions)
|
||||
|
||||
### Trending Topics
|
||||
1. [Topic] — [Subreddit] — [Sentiment] — [Link]
|
||||
2. ...
|
||||
|
||||
### Action Items
|
||||
- [ ] Respond to [specific thread] — negative sentiment, high visibility
|
||||
- [ ] Engage with [specific thread] — positive, amplification opportunity
|
||||
|
||||
### Competitor Activity
|
||||
- [Competitor A]: N mentions, trending topics: ...
|
||||
- [Competitor B]: N mentions, trending topics: ...
|
||||
|
||||
### Metrics
|
||||
| Metric | This Week | Last Week | Change |
|
||||
|--------|-----------|-----------|--------|
|
||||
| Total mentions | | | |
|
||||
| Positive % | | | |
|
||||
| Avg post score | | | |
|
||||
| Response time (hrs) | | | |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Example 3: AMA (Ask Me Anything) Management
|
||||
|
||||
**Scenario**: You are organizing an AMA for a tech CEO in r/technology.
|
||||
|
||||
**Preparation (2 Weeks Before)**
|
||||
|
||||
1. Contact the subreddit moderators:
|
||||
- Message the mod team through modmail (not individual DMs)
|
||||
- Propose date, time, and AMA subject
|
||||
- Ask about specific rules for AMAs (verification, scheduling, flair)
|
||||
- Confirm the post format they expect
|
||||
|
||||
2. Schedule for peak engagement:
|
||||
```
|
||||
Recommended AMA times (US-centric subreddits):
|
||||
- Tuesday-Thursday, 11:00 AM - 1:00 PM EST
|
||||
- Avoid: weekends, holidays, major news days
|
||||
- Post the AMA thread 30-60 minutes before the host starts answering
|
||||
```
|
||||
|
||||
3. Prepare the AMA post:
|
||||
```
|
||||
Title: "I'm [Name], [Role] at [Company]. [One-line hook]. AMA!"
|
||||
|
||||
Body:
|
||||
- Brief intro (2-3 sentences about credentials)
|
||||
- Why this AMA is happening (new product, milestone, event)
|
||||
- Proof/verification (link to tweet, photo with timestamp)
|
||||
- "I'll start answering at [TIME] [TIMEZONE]. Ask me anything!"
|
||||
- Links to relevant context (website, blog post, prior work)
|
||||
```
|
||||
|
||||
**During the AMA (2-3 Hours)**
|
||||
|
||||
Real-time engagement strategy:
|
||||
```
|
||||
1. Sort comments by "best" and "new" alternately every 15 minutes
|
||||
2. Answer top-voted questions first (these set the tone)
|
||||
3. Answer at least 20-30 questions in a 2-hour session
|
||||
4. Mix short answers with detailed ones — avoid walls of text for every question
|
||||
5. Skip hostile/troll questions silently — do NOT acknowledge them
|
||||
6. For tough questions: answer honestly or say "I can't discuss that yet"
|
||||
7. Upvote good questions (even tough ones) — shows good faith
|
||||
```
|
||||
|
||||
Response length guide:
|
||||
| Question Type | Response Length |
|
||||
|--------------|----------------|
|
||||
| Simple factual | 1-2 sentences |
|
||||
| Technical deep-dive | 2-3 paragraphs |
|
||||
| Personal/funny | 1-2 sentences, match the tone |
|
||||
| Critical/tough | 2-3 sentences, direct and honest |
|
||||
| Off-topic | Brief redirect or polite decline |
|
||||
|
||||
**Follow-Up (24-48 Hours After)**
|
||||
|
||||
- Post an edit to the original AMA: "Thanks everyone! I answered [N] questions. Check back — I'll try to answer a few more this week."
|
||||
- Answer 5-10 more highly-upvoted questions that were missed
|
||||
- Share the AMA link on other platforms (Twitter, LinkedIn) to drive continued engagement
|
||||
- Compile a "best of" summary with links to the strongest Q&A exchanges
|
||||
|
||||
---
|
||||
|
||||
## Advanced API Patterns
|
||||
|
||||
### Pagination Handling
|
||||
|
||||
Reddit uses cursor-based pagination with `after` and `before` fullnames.
|
||||
|
||||
**Paginate through subreddit posts**:
|
||||
```bash
|
||||
# Page 1
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/new?limit=100"
|
||||
# Response includes: "after": "t3_abc123"
|
||||
|
||||
# Page 2
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/new?limit=100&after=t3_abc123"
|
||||
# Response includes: "after": "t3_def456" (or null if last page)
|
||||
|
||||
# Page 3
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/new?limit=100&after=t3_def456"
|
||||
```
|
||||
|
||||
Pagination rules:
|
||||
- `limit` max is 100 per request
|
||||
- `after` returns items chronologically older than the given fullname
|
||||
- `before` returns items chronologically newer (useful for "check for new posts since last poll")
|
||||
- When `after` is `null` in the response, you have reached the last page
|
||||
- Reddit caps listing depth at ~1000 items regardless of pagination
|
||||
|
||||
**Paginate backward (newer items)**:
|
||||
```bash
|
||||
# Get posts newer than a known fullname
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/new?limit=25&before=t3_abc123"
|
||||
```
|
||||
|
||||
### Flair Management
|
||||
|
||||
**Get available flairs for a subreddit**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/api/link_flair_v2"
|
||||
```
|
||||
|
||||
**Submit a post with flair**:
|
||||
```bash
|
||||
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
-d "sr=SUBREDDIT&kind=self&title=TITLE&text=BODY&flair_id=FLAIR_ID&flair_text=FLAIR_TEXT" \
|
||||
"https://oauth.reddit.com/api/submit"
|
||||
```
|
||||
|
||||
**Set flair on an existing post** (requires mod or post author permissions):
|
||||
```bash
|
||||
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
-d "link=t3_POST_ID&flair_template_id=FLAIR_ID" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/api/selectflair"
|
||||
```
|
||||
|
||||
### Moderation Endpoints
|
||||
|
||||
These require moderator permissions on the target subreddit.
|
||||
|
||||
**Get moderation queue**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/about/modqueue?limit=25"
|
||||
```
|
||||
|
||||
**Approve a post/comment**:
|
||||
```bash
|
||||
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
-d "id=FULLNAME" \
|
||||
"https://oauth.reddit.com/api/approve"
|
||||
```
|
||||
|
||||
**Remove a post/comment**:
|
||||
```bash
|
||||
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
-d "id=FULLNAME&spam=false" \
|
||||
"https://oauth.reddit.com/api/remove"
|
||||
```
|
||||
|
||||
**Get moderation log**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/about/log?limit=25&type=removelink"
|
||||
```
|
||||
|
||||
**Distinguish a comment as moderator**:
|
||||
```bash
|
||||
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
-d "id=FULLNAME&how=yes" \
|
||||
"https://oauth.reddit.com/api/distinguish"
|
||||
```
|
||||
|
||||
### Multi-Subreddit Monitoring
|
||||
|
||||
**Monitor multiple subreddits in a single request**:
|
||||
```bash
|
||||
# Combine subreddits with "+" for a merged feed
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/python+rust+golang/new?limit=50"
|
||||
```
|
||||
|
||||
**Search across multiple subreddits**:
|
||||
```bash
|
||||
# Use the subreddit field in search to restrict
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/search?q=BrandName+subreddit%3Apython+OR+subreddit%3Arust&sort=new&limit=25"
|
||||
```
|
||||
|
||||
**Get subreddit metadata for comparison**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/about"
|
||||
```
|
||||
Key fields in response: `subscribers`, `active_user_count`, `created_utc`, `public_description`, `submit_text`, `submission_type`.
|
||||
|
||||
### Polling Strategies for Real-Time Awareness
|
||||
|
||||
Reddit has no webhook support. Use polling with these patterns:
|
||||
|
||||
**Efficient polling loop**:
|
||||
```
|
||||
1. Fetch /r/SUBREDDIT/new?limit=10 every 60 seconds
|
||||
2. Store the fullname of the newest item seen
|
||||
3. On next poll, use ?before=LAST_SEEN_FULLNAME to get only new items
|
||||
4. If response is empty, no new posts — sleep and retry
|
||||
5. If response has items, process them and update LAST_SEEN_FULLNAME
|
||||
```
|
||||
|
||||
**Polling frequency by priority**:
|
||||
| Monitoring Type | Poll Interval | Endpoint |
|
||||
|----------------|---------------|----------|
|
||||
| Brand crisis monitoring | 30-60 seconds | /search?q=brand&sort=new |
|
||||
| Subreddit new posts | 60-120 seconds | /r/SUB/new |
|
||||
| Comment replies to own posts | 120 seconds | /message/inbox |
|
||||
| Competitor mentions | 300 seconds | /search?q=competitor&sort=new |
|
||||
| Weekly trend analysis | Once daily | /r/SUB/top?t=day |
|
||||
|
||||
**Respect rate limits while polling**:
|
||||
```
|
||||
At 30 requests/minute (app-only auth):
|
||||
- 1 subreddit at 60s interval = 1 req/min → can monitor ~25 subreddits
|
||||
- 1 search query at 60s interval = 1 req/min
|
||||
- Reserve 5 req/min for ad-hoc queries
|
||||
- Total budget: 30 req/min, plan accordingly
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Subreddit Analysis Framework
|
||||
|
||||
### Evaluating a Subreddit Before Posting
|
||||
|
||||
Before investing effort in any subreddit, run this assessment:
|
||||
|
||||
**Step 1 — Pull subreddit metadata**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/about" | python3 -c "
|
||||
import sys, json
|
||||
d = json.load(sys.stdin)['data']
|
||||
print(f'Subscribers: {d[\"subscribers\"]:,}')
|
||||
print(f'Active now: {d[\"active_user_count\"]:,}')
|
||||
print(f'Created: {d[\"created_utc\"]}')
|
||||
print(f'Type: {d[\"submission_type\"]}')
|
||||
print(f'Description: {d[\"public_description\"][:200]}')
|
||||
"
|
||||
```
|
||||
|
||||
**Step 2 — Measure actual engagement** (not just subscriber count):
|
||||
|
||||
```bash
|
||||
# Get top 25 hot posts and examine their scores and comment counts
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/hot?limit=25"
|
||||
```
|
||||
|
||||
Calculate from the response:
|
||||
```
|
||||
Engagement Score = median(post_scores) * median(num_comments)
|
||||
Activity Ratio = active_user_count / subscribers
|
||||
Health Indicator = (posts_per_day > 5) AND (Activity Ratio > 0.001)
|
||||
```
|
||||
|
||||
**Step 3 — Subreddit quality scorecard**:
|
||||
|
||||
| Factor | Good Sign | Bad Sign |
|
||||
|--------|-----------|----------|
|
||||
| Active/subscriber ratio | > 0.1% | < 0.01% |
|
||||
| Median hot post score | > 50 | < 10 |
|
||||
| Median comment count | > 10 | < 3 |
|
||||
| Posts per day | 5-50 | < 1 or > 500 (noise) |
|
||||
| Mod activity | Active modqueue, clear rules | No rules, spam in feed |
|
||||
| Top post age | Within last 24h | Weeks old (dead subreddit) |
|
||||
| Account age requirements | Reasonable (7 days) | None (spam-prone) or extreme (1 year) |
|
||||
|
||||
### Peak Engagement Hours by Subreddit Type
|
||||
|
||||
Optimal posting times vary by audience. All times in EST:
|
||||
|
||||
| Subreddit Type | Peak Hours | Peak Days | Reasoning |
|
||||
|---------------|------------|-----------|-----------|
|
||||
| Tech/Programming | 9-11 AM EST | Tue-Thu | Developers browse during morning coffee |
|
||||
| Business/Startup | 7-9 AM EST | Mon-Wed | Professionals check before work |
|
||||
| Gaming | 6-10 PM EST | Fri-Sun | After work/school |
|
||||
| Science/Academic | 10 AM-12 PM EST | Mon-Wed | Researchers between tasks |
|
||||
| Lifestyle/Hobby | 12-2 PM EST, 7-9 PM EST | Any | Lunch breaks and evenings |
|
||||
| News/Politics | 7-9 AM EST | Mon-Fri | Morning news cycle |
|
||||
| Finance/Crypto | 8-10 AM EST | Mon-Fri | Pre-market and market open |
|
||||
|
||||
To measure a specific subreddit's peak hours:
|
||||
```bash
|
||||
# Pull the last 100 posts and extract their timestamps
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/r/SUBREDDIT/new?limit=100"
|
||||
# Parse created_utc for each post and bucket by hour-of-day
|
||||
# Cross-reference with score to find high-score hours, not just high-volume hours
|
||||
```
|
||||
|
||||
### Competitor Presence Analysis
|
||||
|
||||
**Step 1 — Search for competitor mentions**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/search?q=%22CompetitorName%22&sort=new&t=month&limit=100"
|
||||
```
|
||||
|
||||
**Step 2 — Build a competitor activity profile**:
|
||||
```
|
||||
For each competitor, track:
|
||||
- Which subreddits they are mentioned in (and by whom -- users vs the company)
|
||||
- Frequency of mentions (per week)
|
||||
- Sentiment of mentions (positive / neutral / negative)
|
||||
- Whether they have official accounts engaging in threads
|
||||
- Common complaints about them (your opportunity)
|
||||
- Common praise for them (your benchmark)
|
||||
```
|
||||
|
||||
**Step 3 — Competitor comparison matrix**:
|
||||
| Metric | Your Brand | Competitor A | Competitor B |
|
||||
|--------|-----------|-------------|-------------|
|
||||
| Weekly mentions | | | |
|
||||
| Positive sentiment % | | | |
|
||||
| Subreddits present in | | | |
|
||||
| Official account activity | | | |
|
||||
| Top complaint theme | | | |
|
||||
| Top praise theme | | | |
|
||||
|
||||
### Content Format Preferences by Subreddit Type
|
||||
|
||||
| Subreddit Type | Preferred Format | Avoid |
|
||||
|---------------|-----------------|-------|
|
||||
| Technical (r/programming, r/rust) | Long-form text, code blocks, benchmarks | Short posts, images without context |
|
||||
| Q&A (r/AskReddit, r/askscience) | Concise questions, detailed answers | Link-only posts |
|
||||
| Showcase (r/sideproject, r/webdev) | Screenshots, demos, before/after | Text-only without visuals |
|
||||
| News (r/technology, r/science) | Link to source with summary comment | Self-post opinion pieces |
|
||||
| Discussion (r/startups, r/cscareerquestions) | Personal experience, specific details | Generic advice, platitudes |
|
||||
| Meme-friendly (r/ProgrammerHumor) | Images, short and punchy | Long text posts |
|
||||
|
||||
---
|
||||
|
||||
## Growth & Reputation Building
|
||||
|
||||
### Karma Building Strategies (Comment-First Approach)
|
||||
|
||||
New accounts or accounts entering a new subreddit should follow the comment-first approach:
|
||||
|
||||
**Week 1-2: Listen and respond**
|
||||
```
|
||||
1. Sort by "new" in your target subreddits
|
||||
2. Find questions you can genuinely answer
|
||||
3. Write substantive, helpful comments (3+ sentences with specifics)
|
||||
4. Respond to 3-5 threads per day
|
||||
5. Do NOT mention your product, company, or project at all
|
||||
```
|
||||
|
||||
**Week 3-4: Establish presence**
|
||||
```
|
||||
1. Start sharing relevant resources (not yours) that help the community
|
||||
2. Engage in discussions about trends and opinions in your domain
|
||||
3. Build recognition by being consistently helpful
|
||||
4. Your username should start becoming familiar to regulars
|
||||
```
|
||||
|
||||
**Week 5+: Contribute original content**
|
||||
```
|
||||
1. Share a technical write-up, tutorial, or analysis (unrelated to your product)
|
||||
2. If well-received, you have earned the trust to occasionally mention your work
|
||||
3. Always frame self-promotional content as "I built X" (transparent) not "Check out X" (spammy)
|
||||
4. Maintain the 10:1 ratio — 10 helpful contributions for every 1 self-promotional post
|
||||
```
|
||||
|
||||
Karma accumulation benchmarks:
|
||||
| Milestone | Unlocks |
|
||||
|-----------|---------|
|
||||
| 10 comment karma | Bypass most anti-spam filters |
|
||||
| 50 comment karma | Reduced posting cooldowns |
|
||||
| 100+ comment karma in a subreddit | Trusted contributor status in some subreddits |
|
||||
| 1000+ total karma | Access to r/lounge and some restricted subreddits |
|
||||
|
||||
### Building Authority in Niche Subreddits
|
||||
|
||||
Authority is built through consistency and expertise, not volume:
|
||||
|
||||
1. **Pick 3-5 subreddits maximum** -- spreading across 20 subreddits builds no authority anywhere
|
||||
2. **Develop a recognizable voice** -- consistent formatting, depth of answers, specific expertise area
|
||||
3. **Answer the hard questions** -- skip the easy ones that 10 people will answer; tackle the ones that require real expertise
|
||||
4. **Follow up on your own answers** -- if someone asks a follow-up, respond promptly
|
||||
5. **Cite sources and show work** -- "I benchmarked this myself, here are the numbers" is worth 100x "I think X is faster"
|
||||
6. **Accept corrections gracefully** -- being wrong publicly and handling it well builds more trust than never being wrong
|
||||
|
||||
### Cross-Posting Etiquette and Strategy
|
||||
|
||||
Cross-posting (sharing a post from one subreddit to another) has specific norms:
|
||||
|
||||
**Do:**
|
||||
- Use Reddit's built-in cross-post feature (preserves attribution)
|
||||
- Cross-post to subreddits where the content genuinely fits
|
||||
- Add a comment explaining why it is relevant to the new subreddit
|
||||
- Wait at least a few hours between cross-posts (avoid appearing spammy)
|
||||
|
||||
**Don't:**
|
||||
- Cross-post to more than 2-3 subreddits
|
||||
- Cross-post to subreddits that explicitly ban it (check rules)
|
||||
- Copy-paste the same text as a new post instead of cross-posting (treated as spam)
|
||||
- Cross-post your own content excessively
|
||||
|
||||
**Strategic cross-posting pattern**:
|
||||
```
|
||||
1. Post original content in the most specific/niche subreddit first
|
||||
2. If it gains traction (>20 upvotes, positive comments), cross-post to a broader subreddit
|
||||
3. Customize the title for the new audience
|
||||
4. Engage in comments on BOTH subreddits
|
||||
```
|
||||
|
||||
### Handling Negative Feedback and Criticism
|
||||
|
||||
Negative feedback on Reddit is public and permanent. Handle it strategically:
|
||||
|
||||
**Response framework**:
|
||||
```
|
||||
1. PAUSE — Do not respond within the first 15 minutes. Emotional responses backfire.
|
||||
2. ASSESS — Is the criticism valid, partially valid, or trolling?
|
||||
3. RESPOND (or don't):
|
||||
- Valid criticism: Acknowledge, thank them, explain what you will do about it
|
||||
- Partially valid: Acknowledge the valid part, clarify the rest with facts
|
||||
- Trolling/bad faith: Do NOT respond. Silence is the best response.
|
||||
4. FOLLOW UP — If you promised to fix something, come back and confirm when it is done
|
||||
```
|
||||
|
||||
**Response templates by situation**:
|
||||
|
||||
| Situation | Response Pattern |
|
||||
|-----------|-----------------|
|
||||
| Bug report | "Thanks for reporting this. Can you share [details]? I've opened [issue link] to track it." |
|
||||
| Feature complaint | "That's fair feedback. Here's why we made that choice: [reason]. We're considering [alternative]." |
|
||||
| Unfair comparison | "Good question. Here's a direct comparison: [facts]. [Competitor] is great at X, we focus on Y." |
|
||||
| Personal attack | Do not respond. Report if it violates rules. |
|
||||
| "This is trash" | "Sorry it didn't work for you. What specifically went wrong? Happy to help." |
|
||||
|
||||
---
|
||||
|
||||
## Analytics & Reporting
|
||||
|
||||
### Post Performance Metrics
|
||||
|
||||
Key metrics to track for every post:
|
||||
|
||||
| Metric | Where to Find | What It Means |
|
||||
|--------|--------------|---------------|
|
||||
| Score | `data.score` | Net upvotes (upvotes minus downvotes) |
|
||||
| Upvote ratio | `data.upvote_ratio` | 0.0-1.0, percentage of votes that are upvotes |
|
||||
| Number of comments | `data.num_comments` | Total comments including replies |
|
||||
| Awards | `data.all_awardings` | List of awards received |
|
||||
| Cross-posts | `data.num_crossposts` | How many times others cross-posted it |
|
||||
|
||||
**Fetch post performance**:
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-A "LibreFang Reddit Hand/1.0" \
|
||||
"https://oauth.reddit.com/by_id/t3_POST_ID"
|
||||
```
|
||||
|
||||
**Quality indicators**:
|
||||
```
|
||||
High engagement: upvote_ratio > 0.85 AND num_comments > 20
|
||||
Controversial: upvote_ratio 0.40-0.60 (heavily split votes)
|
||||
Viral potential: score > 100 within first 2 hours
|
||||
Dead on arrival: score < 5 after 4 hours
|
||||
Comment quality: avg comment length > 100 chars (real discussion vs memes)
|
||||
```
|
||||
|
||||
### Engagement Trend Tracking
|
||||
|
||||
Track performance over time by recording metrics at regular intervals:
|
||||
|
||||
```
|
||||
For each post, capture at:
|
||||
- T+1 hour: score, num_comments, upvote_ratio
|
||||
- T+4 hours: score, num_comments, upvote_ratio
|
||||
- T+24 hours: score, num_comments, upvote_ratio (final snapshot)
|
||||
|
||||
For account-level tracking:
|
||||
- Weekly comment karma change
|
||||
- Weekly post karma change
|
||||
- Number of posts/comments per subreddit
|
||||
- Average score per post by subreddit
|
||||
```
|
||||
|
||||
**Growth trajectory assessment**:
|
||||
| Period | Healthy Growth | Stagnant | Declining |
|
||||
|--------|---------------|----------|-----------|
|
||||
| Weekly karma change | > +50 | -10 to +10 | < -10 |
|
||||
| Avg post score trend | Increasing | Flat | Decreasing |
|
||||
| Comment reply rate | > 30% of comments get replies | 10-30% | < 10% |
|
||||
| New subreddit penetration | 1-2 new per month | 0 | Banned from any |
|
||||
|
||||
### ROI Measurement for Business-Related Reddit Activity
|
||||
|
||||
For teams using Reddit for marketing, community building, or support:
|
||||
|
||||
**Trackable outcomes**:
|
||||
```
|
||||
Direct metrics:
|
||||
- Referral traffic from Reddit (track with UTM parameters in shared links)
|
||||
- Sign-ups/downloads from Reddit referral
|
||||
- Support tickets deflected by Reddit answers
|
||||
- GitHub stars/forks from Reddit posts (track with ?ref=reddit)
|
||||
|
||||
Indirect metrics:
|
||||
- Brand mention volume over time
|
||||
- Sentiment ratio trend (positive / total mentions)
|
||||
- Share of voice vs competitors on Reddit
|
||||
- Community size if you run your own subreddit
|
||||
```
|
||||
|
||||
**Cost calculation**:
|
||||
```
|
||||
Time invested: Hours per week on Reddit * hourly cost
|
||||
Content cost: Time creating Reddit-specific content
|
||||
Tool cost: Monitoring tools, analytics
|
||||
─────────────────────────────────────────────
|
||||
Total cost/week: Sum of above
|
||||
|
||||
ROI = (Value of outcomes - Total cost) / Total cost
|
||||
```
|
||||
|
||||
**Value assignment for outcomes**:
|
||||
| Outcome | Suggested Valuation Method |
|
||||
|---------|--------------------------|
|
||||
| Referral sign-up | Same as other channel CAC |
|
||||
| Support ticket deflected | Average support ticket cost |
|
||||
| GitHub star from Reddit | Track conversion to paying user |
|
||||
| Positive brand mention | Equivalent ad impression value |
|
||||
| Viral post (>1000 score) | Equivalent paid reach cost |
|
||||
|
||||
### Weekly Reddit Activity Report Template
|
||||
|
||||
```
|
||||
## Reddit Activity Report — Week of [Date]
|
||||
|
||||
### Account Health
|
||||
- Current karma: [post] / [comment]
|
||||
- Karma change this week: +/- [N]
|
||||
- Account age: [N] days
|
||||
- Active subreddits: [list]
|
||||
|
||||
### Content Published
|
||||
| Date | Subreddit | Type | Title | Score | Comments | Upvote Ratio |
|
||||
|------|-----------|------|-------|-------|----------|-------------|
|
||||
| | | | | | | |
|
||||
|
||||
### Comments Made
|
||||
- Total comments: [N]
|
||||
- Avg comment score: [N]
|
||||
- Top comment: [link] (score: [N])
|
||||
- Subreddit breakdown: r/sub1 ([N]), r/sub2 ([N])
|
||||
|
||||
### Brand Mentions (External)
|
||||
- Total mentions found: [N]
|
||||
- Sentiment: [N]% positive, [N]% neutral, [N]% negative
|
||||
- Notable threads:
|
||||
1. [Thread title] — [subreddit] — [sentiment] — [link]
|
||||
2. ...
|
||||
|
||||
### Engagement Metrics
|
||||
| Metric | This Week | Last Week | Trend |
|
||||
|--------|-----------|-----------|-------|
|
||||
| Posts published | | | |
|
||||
| Total post score | | | |
|
||||
| Comments made | | | |
|
||||
| Replies received | | | |
|
||||
| Avg response time | | | |
|
||||
|
||||
### Referral Traffic (if tracked)
|
||||
- Clicks from Reddit: [N]
|
||||
- Sign-ups from Reddit: [N]
|
||||
- Top referral post: [link]
|
||||
|
||||
### Next Week Plan
|
||||
- [ ] Target subreddits: [list]
|
||||
- [ ] Content planned: [description]
|
||||
- [ ] Threads to follow up on: [links]
|
||||
```
|
||||
||||||| parent of e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
=======
|
||||
|
||||
---
|
||||
|
||||
@@ -1853,4 +1085,3 @@ where cost = (hours/week * hourly rate) + content creation time + tool costs.
|
||||
- Notable: [Thread title] — [subreddit] — [link]
|
||||
- Plan: [Target subreddits] | [Content planned]
|
||||
```
|
||||
>>>>>>> e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
+1
-305
@@ -703,309 +703,6 @@ default_active = false
|
||||
[i18n.zh]
|
||||
name = "Twitter Hand"
|
||||
description = "自主 Twitter/X 管理——内容创作、定时发布、互动管理和效果追踪"
|
||||
<<<<<<< HEAD
|
||||
category = "通信"
|
||||
|
||||
[i18n.zh.settings.twitter_bearer_token]
|
||||
label = "Twitter Bearer Token"
|
||||
description = "Twitter/X 开发者平台的 Bearer Token,所有 Twitter API 操作均需此凭证。"
|
||||
|
||||
[i18n.zh.settings.twitter_style]
|
||||
label = "内容风格"
|
||||
description = "推文的语气和风格"
|
||||
|
||||
[i18n.zh.settings.post_frequency]
|
||||
label = "发布频率"
|
||||
description = "创建和发布内容的频率"
|
||||
|
||||
[i18n.zh.settings.auto_reply]
|
||||
label = "自动回复"
|
||||
description = "自动回复提及和相关对话"
|
||||
|
||||
[i18n.zh.settings.auto_like]
|
||||
label = "自动点赞"
|
||||
description = "自动为人脉网络中的推文和相关内容点赞"
|
||||
|
||||
[i18n.zh.settings.content_topics]
|
||||
label = "内容主题"
|
||||
description = "要创作内容的主题(逗号分隔,例如 AI、创业、效率提升)"
|
||||
|
||||
[i18n.zh.settings.brand_voice]
|
||||
label = "品牌调性"
|
||||
description = "描述你的独特风格(例如"用幽默简化复杂技术的创业者")"
|
||||
|
||||
[i18n.zh.settings.thread_mode]
|
||||
label = "推文串模式"
|
||||
description = "在内容组合中加入推文串(多条推文组成的故事)"
|
||||
|
||||
[i18n.zh.settings.content_queue_size]
|
||||
label = "内容队列大小"
|
||||
description = "待发队列中保持的推文数量"
|
||||
|
||||
[i18n.zh.settings.engagement_hours]
|
||||
label = "互动时段"
|
||||
description = "检查提及和互动的时间段"
|
||||
|
||||
[i18n.zh.settings.approval_mode]
|
||||
label = "审批模式"
|
||||
description = "将推文写入队列等待审核,而非直接发布"
|
||||
|
||||
# ─── Spanish (Español) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.es]
|
||||
name = "Hand de Twitter"
|
||||
description = "Gestor autónomo de Twitter/X — creación de contenido, publicación programada, interacciones y seguimiento de rendimiento"
|
||||
category = "Comunicación"
|
||||
|
||||
[i18n.es.settings.twitter_bearer_token]
|
||||
label = "Token Bearer de Twitter"
|
||||
description = "Token Bearer del Portal de Desarrolladores de Twitter/X. Requerido para todas las operaciones de la API de Twitter."
|
||||
|
||||
[i18n.es.settings.twitter_style]
|
||||
label = "Estilo de contenido"
|
||||
description = "Voz y tono para tus tweets"
|
||||
|
||||
[i18n.es.settings.post_frequency]
|
||||
label = "Frecuencia de publicación"
|
||||
description = "Con qué frecuencia crear y publicar contenido"
|
||||
|
||||
[i18n.es.settings.auto_reply]
|
||||
label = "Respuesta automática"
|
||||
description = "Responder automáticamente a menciones y conversaciones relevantes"
|
||||
|
||||
[i18n.es.settings.auto_like]
|
||||
label = "Me gusta automático"
|
||||
description = "Dar me gusta automáticamente a tweets de tu red y contenido relevante"
|
||||
|
||||
[i18n.es.settings.content_topics]
|
||||
label = "Temas de contenido"
|
||||
description = "Temas sobre los que crear contenido (separados por comas, ej. IA, startups, productividad)"
|
||||
|
||||
[i18n.es.settings.brand_voice]
|
||||
label = "Voz de marca"
|
||||
description = "Describe tu voz única (ej. 'fundador sarcástico que simplifica la tecnología compleja')"
|
||||
|
||||
[i18n.es.settings.thread_mode]
|
||||
label = "Modo de hilos"
|
||||
description = "Incluir hilos de tweets (historias de múltiples tweets) en la mezcla de contenido"
|
||||
|
||||
[i18n.es.settings.content_queue_size]
|
||||
label = "Tamaño de la cola de contenido"
|
||||
description = "Número de tweets a mantener en la cola preparada"
|
||||
|
||||
[i18n.es.settings.engagement_hours]
|
||||
label = "Horario de interacción"
|
||||
description = "Cuándo verificar menciones e interactuar"
|
||||
|
||||
[i18n.es.settings.approval_mode]
|
||||
label = "Modo de aprobación"
|
||||
description = "Escribir los tweets en un archivo de cola para revisión en lugar de publicarlos directamente"
|
||||
|
||||
# ─── Japanese (日本語) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.ja]
|
||||
name = "Twitter Hand"
|
||||
description = "自律型Twitter/Xマネージャー——コンテンツ作成、スケジュール投稿、エンゲージメント管理、パフォーマンス追跡"
|
||||
category = "コミュニケーション"
|
||||
|
||||
[i18n.ja.settings.twitter_bearer_token]
|
||||
label = "Twitter Bearerトークン"
|
||||
description = "Twitter/X開発者ポータルのBearerトークン。すべてのTwitter API操作に必要です。"
|
||||
|
||||
[i18n.ja.settings.twitter_style]
|
||||
label = "コンテンツスタイル"
|
||||
description = "ツイートの語調とスタイル"
|
||||
|
||||
[i18n.ja.settings.post_frequency]
|
||||
label = "投稿頻度"
|
||||
description = "コンテンツの作成・投稿の頻度"
|
||||
|
||||
[i18n.ja.settings.auto_reply]
|
||||
label = "自動返信"
|
||||
description = "メンションや関連する会話に自動で返信する"
|
||||
|
||||
[i18n.ja.settings.auto_like]
|
||||
label = "自動いいね"
|
||||
description = "ネットワーク内のツイートや関連コンテンツに自動でいいねする"
|
||||
|
||||
[i18n.ja.settings.content_topics]
|
||||
label = "コンテンツトピック"
|
||||
description = "作成するコンテンツのトピック(カンマ区切り、例: AI、スタートアップ、生産性)"
|
||||
|
||||
[i18n.ja.settings.brand_voice]
|
||||
label = "ブランドボイス"
|
||||
description = "あなた独自の語り口を記述(例:「複雑なテクノロジーをわかりやすく伝える皮肉屋の起業家」)"
|
||||
|
||||
[i18n.ja.settings.thread_mode]
|
||||
label = "スレッドモード"
|
||||
description = "コンテンツミックスにツイートスレッド(複数ツイートで構成するストーリー)を含める"
|
||||
|
||||
[i18n.ja.settings.content_queue_size]
|
||||
label = "コンテンツキューサイズ"
|
||||
description = "準備キューに保持するツイートの数"
|
||||
|
||||
[i18n.ja.settings.engagement_hours]
|
||||
label = "エンゲージメント時間帯"
|
||||
description = "メンションの確認とエンゲージメントを行う時間帯"
|
||||
|
||||
[i18n.ja.settings.approval_mode]
|
||||
label = "承認モード"
|
||||
description = "ツイートを直接投稿せず、レビュー用のキューファイルに書き出す"
|
||||
|
||||
# ─── French (Français) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.fr]
|
||||
name = "Hand Twitter"
|
||||
description = "Gestionnaire Twitter/X autonome — création de contenu, publication programmée, interactions et suivi des performances"
|
||||
category = "Communication"
|
||||
|
||||
[i18n.fr.settings.twitter_bearer_token]
|
||||
label = "Jeton Bearer Twitter"
|
||||
description = "Jeton Bearer du Portail Développeurs Twitter/X. Requis pour toutes les opérations de l'API Twitter."
|
||||
|
||||
[i18n.fr.settings.twitter_style]
|
||||
label = "Style de contenu"
|
||||
description = "Ton et style pour vos tweets"
|
||||
|
||||
[i18n.fr.settings.post_frequency]
|
||||
label = "Fréquence de publication"
|
||||
description = "Fréquence de création et de publication de contenu"
|
||||
|
||||
[i18n.fr.settings.auto_reply]
|
||||
label = "Réponse automatique"
|
||||
description = "Répondre automatiquement aux mentions et conversations pertinentes"
|
||||
|
||||
[i18n.fr.settings.auto_like]
|
||||
label = "Like automatique"
|
||||
description = "Aimer automatiquement les tweets de votre réseau et le contenu pertinent"
|
||||
|
||||
[i18n.fr.settings.content_topics]
|
||||
label = "Sujets de contenu"
|
||||
description = "Sujets sur lesquels créer du contenu (séparés par des virgules, ex. IA, startups, productivité)"
|
||||
|
||||
[i18n.fr.settings.brand_voice]
|
||||
label = "Voix de marque"
|
||||
description = "Décrivez votre voix unique (ex. 'fondateur sarcastique qui simplifie la technologie complexe')"
|
||||
|
||||
[i18n.fr.settings.thread_mode]
|
||||
label = "Mode fil de discussion"
|
||||
description = "Inclure des fils de tweets (histoires à plusieurs tweets) dans le mix de contenu"
|
||||
|
||||
[i18n.fr.settings.content_queue_size]
|
||||
label = "Taille de la file de contenu"
|
||||
description = "Nombre de tweets à maintenir dans la file d'attente préparée"
|
||||
|
||||
[i18n.fr.settings.engagement_hours]
|
||||
label = "Heures d'engagement"
|
||||
description = "Quand vérifier les mentions et interagir"
|
||||
|
||||
[i18n.fr.settings.approval_mode]
|
||||
label = "Mode d'approbation"
|
||||
description = "Écrire les tweets dans un fichier d'attente pour révision au lieu de les publier directement"
|
||||
|
||||
# ─── German (Deutsch) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.de]
|
||||
name = "Twitter-Hand"
|
||||
description = "Autonomer Twitter/X-Manager — Content-Erstellung, geplante Veröffentlichung, Engagement-Management und Performance-Tracking"
|
||||
category = "Kommunikation"
|
||||
|
||||
[i18n.de.settings.twitter_bearer_token]
|
||||
label = "Twitter Bearer-Token"
|
||||
description = "Bearer-Token vom Twitter/X-Entwicklerportal. Erforderlich für alle Twitter-API-Operationen."
|
||||
|
||||
[i18n.de.settings.twitter_style]
|
||||
label = "Inhaltsstil"
|
||||
description = "Ton und Stil für Ihre Tweets"
|
||||
|
||||
[i18n.de.settings.post_frequency]
|
||||
label = "Veröffentlichungshäufigkeit"
|
||||
description = "Wie oft Inhalte erstellt und veröffentlicht werden"
|
||||
|
||||
[i18n.de.settings.auto_reply]
|
||||
label = "Automatische Antwort"
|
||||
description = "Automatisch auf Erwähnungen und relevante Gespräche antworten"
|
||||
|
||||
[i18n.de.settings.auto_like]
|
||||
label = "Automatisches Like"
|
||||
description = "Tweets im Netzwerk und relevante Inhalte automatisch liken"
|
||||
|
||||
[i18n.de.settings.content_topics]
|
||||
label = "Inhaltsthemen"
|
||||
description = "Themen für die Content-Erstellung (kommagetrennt, z.B. KI, Startups, Produktivität)"
|
||||
|
||||
[i18n.de.settings.brand_voice]
|
||||
label = "Markenstimme"
|
||||
description = "Beschreiben Sie Ihre einzigartige Stimme (z.B. 'sarkastischer Gründer, der komplexe Technologie vereinfacht')"
|
||||
|
||||
[i18n.de.settings.thread_mode]
|
||||
label = "Thread-Modus"
|
||||
description = "Tweet-Threads (mehrteilige Tweet-Geschichten) in den Content-Mix aufnehmen"
|
||||
|
||||
[i18n.de.settings.content_queue_size]
|
||||
label = "Größe der Content-Warteschlange"
|
||||
description = "Anzahl der Tweets in der vorbereiteten Warteschlange"
|
||||
|
||||
[i18n.de.settings.engagement_hours]
|
||||
label = "Engagement-Zeiten"
|
||||
description = "Wann Erwähnungen geprüft und interagiert werden soll"
|
||||
|
||||
[i18n.de.settings.approval_mode]
|
||||
label = "Genehmigungsmodus"
|
||||
description = "Tweets in eine Warteschlangendatei zur Überprüfung schreiben, anstatt sie direkt zu veröffentlichen"
|
||||
|
||||
# ─── Korean (한국어) ────────────────────────────────────────────────────
|
||||
|
||||
[i18n.ko]
|
||||
name = "Twitter Hand"
|
||||
description = "자율 Twitter/X 관리 — 콘텐츠 제작, 예약 게시, 소통 관리 및 성과 추적"
|
||||
category = "커뮤니케이션"
|
||||
|
||||
[i18n.ko.settings.twitter_bearer_token]
|
||||
label = "Twitter Bearer 토큰"
|
||||
description = "Twitter/X 개발자 포털의 Bearer 토큰. 모든 Twitter API 작업에 필수."
|
||||
|
||||
[i18n.ko.settings.twitter_style]
|
||||
label = "콘텐츠 스타일"
|
||||
description = "트윗의 어조와 스타일"
|
||||
|
||||
[i18n.ko.settings.post_frequency]
|
||||
label = "게시 빈도"
|
||||
description = "콘텐츠를 작성하고 게시하는 주기"
|
||||
|
||||
[i18n.ko.settings.auto_reply]
|
||||
label = "자동 답글"
|
||||
description = "멘션 및 관련 대화에 자동으로 답글 작성"
|
||||
|
||||
[i18n.ko.settings.auto_like]
|
||||
label = "자동 좋아요"
|
||||
description = "네트워크 내 트윗 및 관련 콘텐츠에 자동으로 좋아요"
|
||||
|
||||
[i18n.ko.settings.content_topics]
|
||||
label = "콘텐츠 주제"
|
||||
description = "콘텐츠를 작성할 주제 (쉼표로 구분, 예: AI, 스타트업, 생산성)"
|
||||
|
||||
[i18n.ko.settings.brand_voice]
|
||||
label = "브랜드 보이스"
|
||||
description = "고유한 스타일을 설명 (예: '복잡한 기술을 쉽게 풀어내는 유머러스한 창업자')"
|
||||
|
||||
[i18n.ko.settings.thread_mode]
|
||||
label = "스레드 모드"
|
||||
description = "콘텐츠 구성에 트윗 스레드 (다중 트윗 스토리) 포함"
|
||||
|
||||
[i18n.ko.settings.content_queue_size]
|
||||
label = "콘텐츠 대기열 크기"
|
||||
description = "준비 대기열에 유지할 트윗 수"
|
||||
|
||||
[i18n.ko.settings.engagement_hours]
|
||||
label = "소통 시간대"
|
||||
description = "멘션 확인 및 소통 활동을 수행하는 시간대"
|
||||
|
||||
[i18n.ko.settings.approval_mode]
|
||||
label = "승인 모드"
|
||||
description = "트윗을 직접 게시하지 않고 대기열 파일에 기록하여 검토"
|
||||
||||||| parent of e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
=======
|
||||
category = "通信"
|
||||
|
||||
[i18n.zh.settings.twitter_bearer_token]
|
||||
@@ -1250,7 +947,7 @@ label = "Seuil d'engagement"
|
||||
description = "Nombre minimum d'abonnés pour les réponses et likes automatiques (filtre les bots et le spam)"
|
||||
|
||||
[i18n.fr.settings.growth_mode]
|
||||
label = "Mode croissance"
|
||||
label = "Mode de croissance"
|
||||
description = "Optimiser la stratégie pour une croissance depuis zéro — privilégie les réponses aux grands comptes et la participation communautaire"
|
||||
|
||||
# ─── German (Deutsch) ────────────────────────────────────────────────────
|
||||
@@ -1378,4 +1075,3 @@ description = "자동 답글 및 좋아요 대상의 최소 팔로워 수 (봇
|
||||
[i18n.ko.settings.growth_mode]
|
||||
label = "성장 모드"
|
||||
description = "제로에서 시작하는 성장 전략 최적화 — 대형 계정에 답글과 커뮤니티 참여를 우선시"
|
||||
>>>>>>> e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
@@ -298,75 +298,6 @@ Do NOT auto-like:
|
||||
|
||||
---
|
||||
|
||||
<<<<<<< HEAD
|
||||
## Advanced Engagement Patterns
|
||||
|
||||
### Quote Tweet vs Reply vs Retweet
|
||||
|
||||
Choosing the right interaction type determines whether you gain visibility or waste it.
|
||||
|
||||
**Use a Quote Tweet when**:
|
||||
- You have a distinct take or added context (not just "this!")
|
||||
- The original tweet has high impressions and you want to draft off its reach
|
||||
- You are crediting someone while adding your own insight for your audience
|
||||
- The original author has a similar or larger following (exposes you to their audience)
|
||||
|
||||
**Use a Reply when**:
|
||||
- You want to build a direct relationship with the author
|
||||
- Your comment only makes sense in context of the original
|
||||
- The original author has a much larger following (replies show on their thread, giving you visibility without looking self-promotional)
|
||||
- You are answering a question or adding a correction
|
||||
|
||||
**Use a plain Retweet when**:
|
||||
- The original says everything perfectly and you have nothing to add
|
||||
- You want to signal-boost a community member, customer, or partner
|
||||
- The content is time-sensitive (breaking news, event announcements)
|
||||
|
||||
**Avoid**:
|
||||
- Quote tweeting with only emojis or "this" -- adds no value, looks lazy
|
||||
- Quote tweeting someone with fewer followers just to dunk -- punching down
|
||||
- Retweeting more than 3-4 times per day -- dilutes your original content ratio
|
||||
|
||||
### Thread Repurposing
|
||||
|
||||
A thread that performed well contains 5-7 standalone content pieces. Extract them over the following week to maximize ROI.
|
||||
|
||||
**Process**:
|
||||
1. Day 0 (original): Post the full thread
|
||||
2. Day 2: Pull the single most quotable tweet from the thread. Post it standalone with slightly different wording. No link back to the thread
|
||||
3. Day 4: Turn a data point or example from the thread into a graphic or screenshot tweet
|
||||
4. Day 6: Post the thread's core thesis as a hot take (one tweet, punchy)
|
||||
5. Day 8+: If engagement stayed strong, post a "Part 2" thread that goes deeper on whichever tweet in the original got the most replies
|
||||
|
||||
**Rules**:
|
||||
- Change the wording each time -- copy-pasting feels like spam to followers who saw the original
|
||||
- Space extractions at least 48 hours apart
|
||||
- Stop if any extraction underperforms significantly -- the topic is tapped out
|
||||
- Never repurpose a thread that got low engagement; the content did not resonate
|
||||
|
||||
### Trending Topic Participation
|
||||
|
||||
**When to participate**:
|
||||
- The trend directly intersects one of your content pillars
|
||||
- You have a genuine, informed perspective (not a generic reaction)
|
||||
- The trend is still rising (check the "Trending" tab; if it has been trending for >12 hours, you are late)
|
||||
- The tone of the trend matches your brand voice
|
||||
|
||||
**When to avoid**:
|
||||
- Tragedy, disaster, or crisis events -- opportunistic posting destroys trust
|
||||
- Highly polarized political or social debates outside your expertise
|
||||
- Trends driven by outrage mobs -- associating your brand is high-risk, low-reward
|
||||
- You would need to force-fit your product or message into the trend
|
||||
|
||||
**Execution**:
|
||||
- Lead with your actual insight, not the hashtag. The hashtag goes at the end or is omitted entirely if the topic keyword is in your text
|
||||
- Be early or be different. If 50 people have already made the same joke, skip it
|
||||
- Tie back to your pillar: "Trend X is exactly why [your pillar topic] matters more than ever"
|
||||
|
||||
---
|
||||
|
||||
||||||| parent of e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
=======
|
||||
## Advanced Engagement Patterns
|
||||
|
||||
### Quote Tweet vs Reply vs Retweet
|
||||
@@ -462,7 +393,6 @@ Not all negative replies require the same response. Classify before acting:
|
||||
|
||||
---
|
||||
|
||||
>>>>>>> e65ad25 (feat(hands): improve linkedin, reddit, and twitter hands)
|
||||
## Content Calendar Template
|
||||
|
||||
```
|
||||
|
||||
Reference in new issue
Block a user