Template id: facebook/tune · Trigger: Manual · Flow timeout: none (runs until you stop it)
Facebook Group Tune puts your Facebook account in the groups where your customers are. It finds groups, picks the ones about your topics, opens each in its own tab, reads its About and latest posts, and joins the ones whose posts fit. Every group it reads queues its Related groups, so one good group leads to more. With Leave on, it now and then goes through the groups you're in and leaves the ones clearly not about your topics.
What you need
- Your topics in Settings › Brand › Topics, and/or a rule in Which groups to join (e.g. Only gaming related). Without topics, the run stops with "add them in Settings › Brand".
- A Dataset › Account with platform Facebook, signed in in the campaign's browser. Pick the browser your Facebook Auto Reply campaign uses (campaign › Browsers).
- A Dataset › AI key.
- A campaign in its own group (e.g.
tune), in time slots that don't overlap your Auto Reply's.
Where it finds groups
Each round, Find groups hands on up to Groups per round groups this account hasn't seen, in this order:
- Related groups that Read the group queued (the groups Facebook shows under See Recommended Groups of each group it read).
- Group searches: one of yours per round, in turn (e.g.
top up ml,roblox indonesia). The fastest way to groups about your topics. - Discover (
facebook.com/groups/discover), scrolled down from where the last round stopped. At its end with nothing new it's refreshed once. - Still nothing: the Related groups of a group you're in.
The account's memory (table facebook/group/find/group) keeps every group it handed on (seen, queued, joined, requested, asks questions, kept, left), so a group is never reviewed twice.
How it decides
- Pick: the AI picks up to Groups read per round groups by name and activity. Which groups to join is followed first, then your topics and Skip. None fits: it picks none.
- Read: each picked group opens in a new tab: name, privacy, members, About and its 6 latest posts (comments left out). The tab closes when the group is done.
- Join: only when the AI says its posts fit (same rule first). Group rules to agree to are agreed; a group that asks membership questions is left (
questions); a private group's request waits for its admins (requested). - Leave (off by default): after a round, at A leave pass after a round (%), it reads the groups you're in (Your groups) and leaves up to Groups left per pass that are clearly not about your topics, judging by the name; unclear names and the groups in Which groups to keep, more stay. A request that still waits is taken back.
Limits
- Joins at most (default 2 an hour, 8 a day) counts a join or a join request; it also counts toward the account's Follow limit in Dataset › Account.
- Leaves at most (default 3 an hour, 15 a day).
- Facebook watches accounts that join or leave many groups fast: keep these low, especially on a new account.
Searches from your list, the AI, or both
Searches from (Collect, or Picking on Facebook) decides where its searches come from:
- My list: only the searches you write (
group.query). - The AI: an AI step writes Searches it writes short, varied searches from your topics (and What the AI should search, e.g. games popular in Indonesia right now). When they all run dry, or a round finds nothing on topic, it rests a minute or two and writes new ones. It's told how many on-topic results the last ones found and remembers what it gave before (per account), so it drops searches that found nothing.
- Both: yours, plus the AI's.
Options
| Section › Group | Key | Kind | Default | What it is | Shown when |
|---|---|---|---|---|---|
| Accounts › Accounts | account.facebook | account (FACEBOOK) | — | Facebook account: Joins and leaves groups as this account, in the campaign's browser. Use the account your Auto Reply uses. | |
| Accounts › Accounts | account.ai | AI key | — | AI key: Picks the groups and reads them. | |
| Picking › Picking | join.pick | textarea | — | Which groups to join: Your rule for the picker and the check, followed first, e.g. Only gaming related, at least 1,000 members. Empty: your topics decide. | |
| Picking › Picking | pick.topic | list | — | More topics: Topics for this campaign only, beside the brand's (Settings › Brand). | |
| Picking › Picking | pick.skip | list | ["spam, scam, hacking, carding or fake account groups","adult content | Skip: Groups it never joins, one kind per row. | |
| Picking › Picking | search.source | choice: list, ai, both | list | Searches from | |
| Picking › Picking | search.note | textarea | — | What the AI should search: Optional, e.g. games popular in Indonesia right now. | search.source = ai / both |
| Picking › Picking | search.count | number (advanced) | 8 | Searches it writes | search.source = ai / both |
| Picking › Picking | group.query | list | — | Group searches: One per row, searched on Facebook before Discover (one each round, in turn), e.g. top up ml. Empty: Discover and related groups only. | search.source = list / both |
| Picking › Picking | join.related | boolean | true | Review their related groups too: Each group it reads queues its Related groups, so one good group leads to more. | |
| Picking › Picking | group.max | number (advanced) | 10 | Groups per round: How many it finds each time, before the AI picks. |
The flow
flowchart LR
manual["Manual"] -- next --> topicCheck["Topics set?"]
topicCheck["Topics set?"] -- true --> topicStop["No topics"]
topicCheck["Topics set?"] -- false --> signin["Sign in"]
signin["Sign in"] -- next --> sourceIf["Searches from my list?"]
searches["Searches"] -- next --> find["Find groups"]
find["Find groups"] -- next --> choose["Pick groups about our topics"]
find["Find groups"] -- empty --> emptyIf["New searches?"]
emptyIf["New searches?"] -- true --> thinkRest["A short rest before new searches"]
emptyIf["New searches?"] -- false --> idle["Nothing new: rest"]
idle["Nothing new: rest"] -- next --> find["Find groups"]
choose["Pick groups about our topics"] -- next --> loop["Each group"]
choose["Pick groups about our topics"] -- none --> noneIf["New searches?"]
noneIf["New searches?"] -- true --> thinkRest["A short rest before new searches"]
noneIf["New searches?"] -- false --> leaveIf["A leave pass?"]
loop["Each group"] -- item --> open["Open the group in a new tab"]
loop["Each group"] -- done --> leaveIf["A leave pass?"]
open["Open the group in a new tab"] -- next --> read["Read the group"]
read["Read the group"] -- next --> dwell["Look around"]
read["Read the group"] -- missing --> close["Close tab"]
read["Read the group"] -- error --> close["Close tab"]
dwell["Look around"] -- next --> newIf["Not in it yet?"]
newIf["Not in it yet?"] -- true --> judge["Do its posts fit our topics?"]
newIf["Not in it yet?"] -- false --> close["Close tab"]
judge["Do its posts fit our topics?"] -- next --> judgeIf["Join?"]
judgeIf["Join?"] -- true --> join["Join the group"]
judgeIf["Join?"] -- false --> close["Close tab"]
join["Join the group"] -- next --> close["Close tab"]
join["Join the group"] -- limited --> close["Close tab"]
close["Close tab"] -- next --> wait["Pause after the group"]
wait["Pause after the group"] -- next --> loop["Each group"]
leaveIf["A leave pass?"] -- true --> joined["Groups we're in"]
leaveIf["A leave pass?"] -- false --> roundRest["Rest before the next round"]
joined["Groups we're in"] -- next --> chooseLeave["Pick groups that don't fit"]
joined["Groups we're in"] -- empty --> roundRest["Rest before the next round"]
chooseLeave["Pick groups that don't fit"] -- next --> loopLeave["Each group to leave"]
chooseLeave["Pick groups that don't fit"] -- none --> roundRest["Rest before the next round"]
loopLeave["Each group to leave"] -- item --> leave["Leave the group"]
loopLeave["Each group to leave"] -- done --> roundRest["Rest before the next round"]
leave["Leave the group"] -- next --> leaveWait["Pause after leaving"]
leave["Leave the group"] -- limited --> roundRest["Rest before the next round"]
leaveWait["Pause after leaving"] -- next --> loopLeave["Each group to leave"]
roundRest["Rest before the next round"] -- next --> find["Find groups"]
sourceIf["Searches from my list?"] -- true --> listSet["My searches"]
sourceIf["Searches from my list?"] -- false --> think["Write new searches"]
listSet["My searches"] -- next --> searches["Searches"]
think["Write new searches"] -- next --> aiSet["The AI's searches"]
think["Write new searches"] -- invalid --> listSet["My searches"]
think["Write new searches"] -- declined --> listSet["My searches"]
aiSet["The AI's searches"] -- next --> searches["Searches"]
thinkRest["A short rest before new searches"] -- next --> think["Write new searches"]
FAQ
Does a test run join or leave?
No. Join and Leave are effect nodes: a test run finds, reads and decides for real and logs what it would join and leave. The run's activity shows each group's posts; the AI's reason is on Do its posts fit our topics?.
How do I tell it what to join?
Write it in Which groups to join, e.g. Only gaming related, at least 1,000 members. Leave it empty and your topics decide.
My account is already in thousands of groups. Will Leave empty it?
Only at Leaves at most, and only groups clearly not about your topics by name. Turn Leave on when you're ready; it's off by default.
Why searches when it has Discover?
Discover suggests groups like the ones you're already in, so an account in unrelated groups gets unrelated suggestions. Searches go straight to your topics; Discover and related groups add more around them.